研究開発

マリオネットの基本

マリオネットとは

マリオネットはVectorworksに組み込まれた、ビジュアルプログラミング環境です。たったひとつの「マリオネットツール」からその世界は始まります。 コンピュテーショナルデザインやパラメトリックデザインなど、プログラミングで様々なデザインの可能性が開けます。 そんなプログラミングが、ぱちぱちテキストを打ち込むことなくできてしまいます。「ノード」と「ワイヤー」という図形をつなげるだけでプログラミングができるのです。

ノードは、マリオネットのネットワークを構成する部品の一つです。ノードはそれぞれ機能を持っています。 左のポートからデータを受け取り、ノードの機能で処理した結果を右のポートから出力します。
上の図ははシンプルなノードの例です。このノードは足し算の機能を持っています。 左のポートから2つの値を受け取って、足し算した結果を右のポートから出力します。

  • a : 足し算の左辺に使用する入力データ
  • b : 足し算の左辺に使用する入力データ
  • c : 足し算の計算結果の出力データ

ノードで受け取るデータはポートから入力する他に、ノードのオブジェクト情報パレットからパラメータとして渡す方法があります。

また、ノードのデータの扱い方により、左のポートがないもの、右のポートがないもの、どちらのポートも無いものがあります。

ワイヤーはノードの出力ポートから伸ばし、他のノードの入力ポートに繋げることができます。 ワイヤーで繋がれたノードの集合をマリオネットネットワークと呼びます。 マリオネットネットワークではノードに繋がれたワイヤーにデータの流れが発生します。 出力ポートに繋がれたワイヤーの左側から入力ポートに繋がれた右側へとデータが流れます。

マリオネットネットワークは相互にデータのやりとりをするノードが集まったものであり、各ノードで定義されたコマンドを順番に実行していきます。 実行の順番はデータフローに依存し、データは一方向にしか流れません。データフローは、各ノードの入出力ポートを繋ぐワイヤーにより定義されます。

1.単一の値を受け取る場合

それぞれのポートで受け取った単一の値を用いて、1度だけコマンドを実行します。

2.値のリストを受け取る場合

ノードは複数の値を出力する場合があります。ワイヤーを流れる複数の値の集合をリスト型のデータと呼びます。 一般的なノードはリスト型の値を受け取ると、リスト内の値をひとつずつ順番に取得しながら、要素の数だけコマンドを繰り返し実行します。

3.要素数の違うリストが混合する場合

複数の入力ポートを持つノードで、各ポートに要素数の違うリストを受け取ると、通常は最も長いリストの要素数だけコマンドが実行されます。 入力されるリストがすべて同じ長さになるように、要素数が少ないリストは、最後の値で補間されます。

4.リストを一括で受け取るノードの処理

リスト型の値を受け取った場合に、リスト内の値をひとつずつ受け取るのではなく、リスト全体をひとつの値として受け取る前提のノードが存在します。 例えば、受け取った値を合算する「Add list」ノードが該当します。このようなノードの場合、受け取る値が複数であってもコマンドは1度だけ実行されます。

マリオネットのノードはその他Vectorworksのオブジェクトと同じように、オブジェクト情報パレットを持ちます。 オブジェクト情報パレットでは、ノードの機能に応じてパラメータが定義されています。また、ノードのカスタマイズにより、パラメータを新たに定義することができます。

  • クラス・レイヤ : 選択したオブジェクトのクラス、レイヤーを制御する、すべてのVectorworksオブジェクトのデフォルトパラメータ。
  • 編集...ボタン : 選択したノードを定義するPythonスクリプトの編集画面を開きます。 詳細は、ノードのカスタマずを参照してください。
  • 説明...ボタン : 選択したノードの説明画面を表示します。
  • 実行...ボタン : 選択したノードが接続されたネットワークが定義するプログラムを実行します。
  • 名前 : 選択したノードの名前を指定します。名前を指定すると図面上のノードに表示されます。空欄の場合、タイプのみ表示されます。
  • タイプ : 選択したノードのタイプを表示します。このタイプは図面上のノードに表示されます。
  • パラメータ : ノードの動作に影響するコントロールを定義します。ノードのタイプによって表示されるパラメータと表示されないパラメータがあります。 サポートされるコントロールは次の通りです。
    • Integer : 整数値フィールド
    • Boolean : チェックボックスコントロール(真偽値)
    • Real : 実数値フィールド
    • Dimension : 現在の書類の単位での寸法値フィールド
    • Angle : 現在の書類の単位での角度フィールド
    • Area : 現在の書類の単位での面積フィールド
    • Volume : 現在の書類の単位での体積フィールド
    • Text : 文字列フィールド
    • Static information : 編集不可能な固定の文字列
    • Static Value : 編集不可能な固定の文字列(太字)
    • Popup : ポップアップコントロール
    • Class : クラスポップアップコントロール
    • Layer : レイヤポップアップコントロール
    • Separator : オブジェクト情報パレットでのパラメータ表示の整理のための区切り線を表示します。ノードに動作に影響を与えません。
    • Textures : テクスチャポップアップコントロール
    • Button : ボタンコントロール
    • Slider : スライダーコントロール
    • RadioButton : ラジオボタンコントロール

マリオネットネットワークを実行すると、Vectorworksはマリオネットネットワークに接続されたすべてのノードとノード間のデータの連携方法を走査します。 各ノードのコードからマリオネットネットワーク全体のPythonスクリプトを構築します。構築したPythonスクリプトに問題がなければ、Vectorworksがそのプログラムを実行します。

既存ノードをカスタマイズすることによって、オリジナルのノードを作成することができます。 ノードの機能を定義するpythonスクリプトを記述することによって、 ノードの動作や入力ポートと出力ポート、オブジェクト情報パレットのパラメータ等を編集することができます。

ノードのカスタマイズ

マリオネットツールのデバッグモードを用いて、ネットワークのトラブルシューティングが行うことができます。 デバッグモードを起動するには、マリオネットツールのツールバーから、虫のアイコンを選択します。


デバッグモードでは、各出力ポートの隣に数字が表示され、その出力ポートから接続された入力ポートに流れる値の数が表示されます。 ワイヤーを選択するとワイヤーを通過する値がダイアログに表示され、ダイアログ内で値の確認と変更を行うことができます。 ワイヤーを通過する値がハンドル型の場合、図形のタイプ番号が表示されます。ダイアログを閉じるとスクリプトが実行されます。

マリオネットに関するお問い合わせ

マリオネットに関するお問合せは、以下からお問い合せください。

エーアンドエー株式会社 研究開発室

email:develop@aanda.co.jp