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

第12回「コントロールジオメトリの解説」

ArchitectLandmarkSpotlightDesigner2021

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

マリオネットオブジェクトでのコントロールジオメトリの使い方を解説します。
コントロールジオメトリをマスターすることで効率よく形状を操作できるパラメトリックオブジェクトを作ることができるようになります。

マリオネットではマリオネットオブジェクトを使って、オリジナルのパラメトリックオブジェクトを簡単に作成することができます。マリオネットオブジェクトに変換することで、図面上に散らばったノードに入力していた幅や高さなどのパラメータがオブジェクト情報パレット(OIP)にまとまって表示され、パラメータの変更が直ちに見た目に反映されるので、実行結果を見ながら効率よく目的の図形を作成することができます。

1. コントロールジオメトリの使い方

パラメータの中でもオブジェクトの形状に直接関わる部分は、数字をいじるのではなく、手で作図した方が効率が良い場合もあります。

「コントロールジオメトリ」はマリオネットオブジェクトに概形(ベースとなる図形)をひとつ登録することができる仕組みです。登録した図形はマリオネットオブジェクトの中のスクリプトで使用することができます。また、登録した後に図形を直接編集することもできます。

“Contorol Geometory”ノードはマリオネットオブジェクト内のスクリプトからコントロールジオメトリの図形のハンドルにアクセスする機能を持っています。このノードを使用して次のようにマリオネットオブジェクトを作成します、

    1. Contorol Geometoryノードと、登録したい概形の図形を配置します。

2. Contorol Geometoryノードをラッパーノードに変換します。

3. ラッパーノードと概形図形を同時に選択した状態で、ラッパーノードのコンテキストメニューを開きます。

4. オブジェクトノードに変換を選択して完成です。

概形図形を表示図形としたマリオネットオブジェクトが作成されました。

マリオネットオブジェクトのコンテキストメニューから、コントロールジオメトリの編集画面に入ることができます。

編集画面のほか、登録した図形が多角形など変形ツールに対応した図形であれば、変形ツールでオブジェクトをアクティブにすることでコントロールポイントで編集することができます。

オブジェクト内のスクリプトにはContorol Geometoryノードが配置されています。このノードから、登録した概形図形のハンドルにアクセスしてマリオネットネットワークで使用することができます。

2. 3Dパス図形を作成する

コントロールジオメトリの概念を理解する上で、もっとも近いものは3Dパス図形のパスと断面でしょう。良いものは使おうの理念に反しますが、練習として3Dパス図形をマリオネットで作成します。

Vectorworksに搭載されている3Dパス図形ではパスと断面の2つの図形をオブジェクトに登録しますが、今回はパス図形のみをコントロールジオメトリに登録したオブジェクトを作成します。

2-1. パス図形をコントロールジオメトリに設定する

パスとなる図形と”Contorol Geometory”ノードを配置して、1.で紹介した手順でマリオネットオブジェクトを作成します。

マリオネットオブジェクト内のスクリプト編集画面を開き、3Dパス図形を作成する”Path Extrude”ノードを配置します。”Control Geometory”を”Path Extrude”ノードの”hPath”ポートに入力します。

ここでは断面を円とします。円を作図する”Circle”ノードに、”Dim”ノードで半径「40mm」を入力して、”Cricle”ノードの作図結果を”Path Extrude”ノードの”hProfile”に入力します。円の半径がパラメータとして表示されるように、”Dim”ノードに名前「半径」を設定します。

スクリプトの編集画面を出ると、マリオネットオブジェクトの形状が、3Dパス図形となっています。断面は円で、半径のパラメータを変更すると図形全体の断面に反映されます。また、変形ツールでパスを編集することができ、パスの変更が図形全体に反映されます。

3. タイル敷き詰めオブジェクト

今度は、フレームのような役割でコントロールジオメトリを使用します。コントロールジオメトリで指定した領域内に、タイルにみたてた柱状体を並べて配置します。

一定の領域内に図形を敷き詰める作業は、領域の縁の部分で形状が複雑になりがちです。マリオネットで素直に多角形の頂点を調整して表現しようとすると骨が折れるでしょう。今回はできるだけ簡単な手順で、多様なフレーム形状に対応した汎用的なオブジェクトを作成します。

プログラムの大まかな手順は次の通りです。

    1. フレームをコントロールジオメトリから取得する
    2. フレームが収まる領域にタイル(柱状体)を敷き詰める
    3. 敷き詰めたタイルに対してフレームの図形を使ってトリミングする

3-1. ベースのマリオネットオブジェクトの作成

フレームにする多角形と、”Contorol Geometry”ノードを配置して、マリオネットオブジェクトを作成します。フレームの形状のマリオネットオブジェクトができたら、オブジェクトの中に入ってスクリプトの編集画面を開きます。

3-2.フレーム領域内の座標を取得する

タイルの敷き詰めや植栽など、Vectorworksではある領域の内部に限定して作図をすることがよくあります。これをマリオネットで再現する場合、内外判定のノードを使用して、領域内の座標を抽出する方法がよく使われています。

① まずは、フレームの領域を覆う範囲に網目状に座標を発生させます。領域全体を覆っていれば範囲の大小は問題はありませんが、あまりに広範囲だと無駄が多く効率がよくありません。領域のバウンダリングボックス(領域を囲む最小の四角形)を発生範囲とするのが良いでしょう。

バウンダリングボックスは”Get Bounding Box”ノードで取得することができます

② バウンダリングボックスを端点座標を基準に網目状に分割します。pTopLは上(Top)左(L)、pBotRは下(Bot)右(R)の端点です。

Seaqenceノードを2つ配置して、一つは左端をStartに右端をEndとしたx座標、もう一つは下端をStartに上端をEndとしたy座標を作成します。stepには分割間隔を指定します。

③ x座標とy座標を”Mix2″ノードで組み合わせて網目の座標を作成します。

④ この網目状の座標から、”Is In or On Poly”ノードを使用して領域に含まれるものだけを抽出します。”poly”ポートに領域図形のハンドル、”point”ポートに座標を入力します。出力側の”point”ポートから、領域に含まれる座標だけを取得することができます。

このままだと網目の端点の座標を判定基準にして結果を返しますが、網目の中心を判定基準にしたり、偏りを無くすために領域を広めに取ったりと、目的に応じてカスタマイズして使用します。

よく使うネットワークですので、ラッパーノードに変換して再利用できるようにしておきましょう。A&Aノードライブラリに「Point on Poly」ノードを追加して配布しています。是非ご利用ください。

A&Aノードライブラリのダウンロード

3-3. タイルを敷き詰める

“Point on Poly”ノードで取得した座標にタイルを配置していきます。”Point on Poly”ノードの分割間隔(meshsize)は100mmとします。取得した座標を中心に95mmの四角形を作成し、厚さ10mmの柱状体に変換します。

95mmの四角形なので、Rectangle2Ptノードには中心から47.5mm(-47.5mm)ほどオフセットした座標を入力します。

3-4. フレームでトリミングする

タイルがフレームからはみ出している状態ですので、フレームのライン上で切断するようにタイルをトリミングします。

“SolidBoolean”ノードはモデルメニューの「噛み合わせる」「削り取る」「重なった部分を残す」を実行することができます。ただし、タイルが3D図形なのに対して、フレームが2D図形ですので実行できません。フレームをタイルと同じ厚さの柱状体に変換します。

“SolidBoolean”のパラメータを「Intersect」に設定します。これは「重なった部分を残す」に該当します。タイルの柱状体と、フレームの柱状体を”SolidBoolean”に入力してトリミング処理の完成です。

3-5. 実行結果の確認

スクリプトの編集が終了したら、画面右上の”マリオネットスクリプトを出る”をクリックして編集画面を閉じます。

編集画面を閉じると、スクリプトが実行されマリオネットオブジェクトの表示に反映されます。3D表示すると、コントロールジオメトリに指定した領域でタイルがトリミングされている様子が確認できます。

オブジェクトのOIPにはグリッドサイズとタイルサイズ、厚みのパラメータが表示されます。各パラメータを変更すると、タイルのサイズや間隔に反映されて表示が更新されます。

オブジェクトに変形ツールを適用すると、フレームのコントロールポイントが表示されます。フレームを変形すると、変更した形状に合わせてタイルが敷き詰められます。

コントロールジオメトリの編集に入って全く違う図形に入れ替えても、問題なくタイル分割してくれますので、自由なフレーム形状に適用することができます。

サンプルファイルのダウンロード

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

Architect

Vectorworks Architect

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

Landmark

Vectorworks Landmark

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

Spotlight

Vectorworks Spotlight

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

Designer

Vectorworks Design Suite

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