マリオネットの基本
マリオネットとは
マリオネットは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スクリプトを記述することによって、 ノードの動作や入力ポートと出力ポート、オブジェクト情報パレットのパラメータ等を編集することができます。
マリオネットツールのデバッグモードを用いて、ネットワークのトラブルシューティングが行うことができます。 デバッグモードを起動するには、マリオネットツールのツールバーから、虫のアイコンを選択します。
デバッグモードでは、各出力ポートの隣に数字が表示され、その出力ポートから接続された入力ポートに流れる値の数が表示されます。 ワイヤーを選択するとワイヤーを通過する値がダイアログに表示され、ダイアログ内で値の確認と変更を行うことができます。 ワイヤーを通過する値がハンドル型の場合、図形のタイプ番号が表示されます。ダイアログを閉じるとスクリプトが実行されます。
マリオネットに関するお問い合わせ
マリオネットに関するお問合せは、以下からお問い合せください。