マリオネット・スクリプト解説講座

第9回「パラメトリックデザイン」

ArchitectLandmarkSpotlightDesigner

この記事は【2020年11月24日】に公開されたもので、2年以上経過しています。
記事の内容が古くなっていたり、新機能の追加・機能の改善が図られていることがあります。

マリオネットオブジェクトを使ってパラメトリックデザインに挑戦しましょう。
スライダーノードを活用したパラメータスタディの方法を解説します。

パラメトリックデザインは、パラメトリックなオブジェクトを使ってその寸法値などのパラメータを変えながらデザインを比較検討する手法です。

Vectorworksの本棚オブジェクトを例に考えてみます。本棚は、板や柱に見立てた3Dの図形を合わせて本棚の形状を組み立てるオブジェクトです。この本棚の形状を組み立てる基本ルールを固定として、オブジェクト情報パレットに表示される「高さ」や「段数」を変更しながら異なる形状の本棚を生成します。様々な寸法の本棚を検討するときはパラメータだけを変更すれば良いので、本棚の形状を一から作る必要がなく効率的なスタディができるようになります。

9. パラメトリックオブジェクトを作る

9-1.仕様設計

ねじれ柱のパラメトリックオブジェクトを作成します。同じ大きさの板を角度を少しずつ変えながら重ねることでねじれ柱を表現します。このとき、いくつかのパラメータを可変化して柱の形状のスタディができるように設計します。

固定するパラメータ
・柱の高さ
・板の大きさ
可変とするパラメータ
・板の枚数
・ ねじる角度

9-2. Slider(スライダー)ノードの使い方

パラメトリックデザインではパラメータの数値をチクチク変えながら形状の変化の様子を確認します。パラメータの数値の変更を手入力でなくスライダーで入力することでスタディの効率がぐんとアップします。

Sliderノードは、マリオネットにスライダー入力式の数値パラメータを追加します。Sliderノードは中級者向けノードに分類されるノードで、パラメータの値がとりうる上限値と下限値を自由にカスタマイズするにはPythonコードの編集を必要とします。コーディングとなると少しハードルが上がりますが、今回編集する内容は難しくありませんのでこの機会にぜひ挑戦してください。

(1) 入力関数カテゴリから、スライダーノードを配置します。

(2) オブジェクト情報パレットの”編集”ボタンをクリックして、Pythonコードの編集画面を開きます。

(3) まずはおまじないです。1行目のコードをすべて削除します。ReadOnlyの記述を削除することで、編集内容の保存が可能になります。

(4) 15行目の記述がスライダーの値の範囲を定義している部分です。ここを編集していきます。


Marionette.OIPControlのあとの括弧の中がスライダーの各種設定になっています。次のように編集してみましょう。
表示名:’板の数’
初期値:15
下限値:1
上限値:30

(5) 編集ができたらプログラムをコンパイルします。編集画面左上の歯車をクリックしてください。
「コンパイルに成功しました」というメッセージが表示されればOKです。コンパイルできたら編集内容を保存しましょう。OKボタンをクリックして編集画面を閉じます。

(6) オブジェクト情報パレットにコーディングの内容が反映されていることを確認して作業完了です。

9-3. マリオネットネットワークの作成

9-3-1.  パラメータの準備

それではねじれ柱のプログラムを作っていきます。まずは各種パラメータに対応する入力ノードを配置します。
固定の寸法値のパラメータはDimノードで入力します。Dimは書類の単位を使用して寸法値を入力するノードです。今回は書類の単位をmmに設定しています

柱の高さ:1500
板の大きさ(幅):500
板の大きさ(高さ):500
板の大きさ(厚み):50

可変のパラメータはスライダーで入力します。スライダーを2つ配置してぞれぞれ次のようにコードを編集します。

スライダー1
表示名:板の枚数
初期値:15
下限値:1
上限値:30

スライダー2
表示名:角度
初期値:90
下限値:0
上限値:180

9-3-2. 板の数だけ柱状体を作る

板にみたてた柱状体を枚数の分だけ重ねて柱のベースを作ります。板の座標のリストを作成して、柱状体を作るBoxノードに流し込みます。

500×500×50mmの柱状体の中心が(0,0,z)を通るように座標を作成します。高さzはあとで計算します。

Boxノードは左下(xy平面)の頂点を基準に柱状体を生成するので、基準の座標は(-250,-250,z)となります。Dimノードで”x”ポートと”y”ポートに”-250″を入力します。

高さzを次の計算式で導きます。

高さz = 柱の高さ / 板の枚数 * 板の番号

板の番号は、重ねたときに下から数えて何番目にあたるのかを示します。

割り算はDivノード、掛け算はMulノードを使用します。Seriesノードは数列を生成するノードです。1から板の枚数分の数列を生成することで板の番号を表現します。

高さzをPoint3Dノードに接続して座標リストを完成させます。

ここまででプログラムを実行してみましょう。板がz方向に重なってまっすぐな柱が作図されます。

9-3-3. 板を回転する

柱をねじる部分をプログラミングしていきます。それぞれの板をねじる角度を計算します。下の板から順に角度を大きくしていって上端の板が最大回転角度となる仕様で計算式を考えます。

角度 = 最大回転角度 / 板の枚数 * 板の番号

板が3枚で最大回転角度を90度とすると、1枚目は0度、2枚目45度、3枚目が90度となります。

角度の計算式を見ると、高さzの計算式と似ています。先ほどのプログラムが流用できそうです。板の番号の部分を流用して、角度の計算式を組んでいきます。

計算した角度のリストを使って柱状体を回転します。z軸に角度のリストを入力してRotateノードで回転します。

これでプログラムが完成しました。実行して結果を確認しましょう。

9-4. オブジェクト化する

作成したねじれ柱のプログラムをパラメトリックオブジェクトに変換します。

9-4-1. 可変パラメータを表示

マリオネットオブジェクトでは、入力パラメータのノードに”名前”を設定することでオブジェクト情報パレットに表示することができます。
2つのスライダーに名前を設定してオブジェクト情報パレットに表示するようにします。

9-4-2. マリオネットオブジェクトの作成

(1) マリオネットネットワークを選択してコンテキストメニューを開きます。

(2) マリオネットネットワークをラップするを選択してラッパーノードに変換します。TwistColumnなど任意に名前を設定します。

(3) ラッパーノードを選択してコンテキストメニューを開きます。

(4) オブジェクトノードに変換を選択してマリオネットオブジェクトを生成します。

ねじれ柱のプログラムの実行結果の図形がそのままオブジェクトとなりました。
オブジェクト情報パレットに、板の枚数と角度のスライダー方式のパラメータが表示されました。これでねじれ柱のパラメトリックオブジェクトの完成です。

9-5. スタディする

作成したパラメトリックオブジェクトでパラメータスタディをやってみましょう。スライダーをいじるとリアルタイムに柱の形状が変化していきます。

ひとつのオブジェクトから様々な形状のねじれ柱を生成することができました。

この機能を利用できる製品

Architect

Vectorworks Architect

建築設計や内装、ディスプレイデザインに対応した先進的なBIM・インテリア設計支援機能、拡張機能、さらには豊富な建築向けのデータライブラリを搭載した建築/内装業界向け製品
詳細情報 購入ページ

Landmark

Vectorworks Landmark

地形モデルや多彩な植栽、灌水設備計画等に対応するランドスケープデザイン機能、さらには豊富な造園向けのデータライブラリを搭載した都市計画/造園業界向け製品
詳細情報 購入ページ

Spotlight

Vectorworks Spotlight

ステージプランニングやライティング計画に対応した先進的な舞台照明計画支援機能、さらには各種メーカー製のトラスや照明機材、音響機器等の豊富なデータライブラリを搭載したエンタテインメント業界向け製品
詳細情報 購入ページ

Designer

Vectorworks Design Suite

専門分野別(建築設計/ディスプレイデザイン、ランドスケープデザイン、ステージデザイン&スポットライトプランニング)の設計支援機能、拡張機能、さらには豊富なデータライブラリを搭載した最上位の製品
詳細情報 購入ページ