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

第26回「シンプルなアウトライン引き戸」

ArchitectLandmarkSpotlightDesigner2022

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

A&Aイベントスタッフからマリオネットで建具を作成されるユーザー様が増えてきたと嬉しい声を頂戴しました。同時に、マリオネットオブジェクトを壁に挿入した際の開口部の形状のコントロールについて質問を受けましたので、アウトライン引き戸(バーンドア)のマリオネットオブジェクトを例に解説していきます。

バーンドアについてはVectorworks社のコミュニティーサイトにマリオネットオブジェクトのサンプルが共有されています。

Barn Doorサンプル(Vectorworks社フォーラムサイト)

戸の部分とレールの部分を柱状体の組み合わせで作図して、スライダーで開閉(水平移動)する仕組みです。開口部の形状もプログラムでコントロールされています。

このままでも十分に使用できるサンプルですが、詳細に作り込まれているためノード数が多く、自分流にカスタマイズしようと思うとなかなか手が出ません。

このサンプルを参考に、シンプル化したバーンドアを作成していきます。今回はレール等は作図せずに、ドアがスライドして開閉する様子の再現と開口部形状をコントロールするオブジェクトを作成します。

26-1. 戸の作成

今回は、3Dでの表示と2Dの表示用の図形をそれぞれ作成します。

26-1-1. 3D戸のモデリング

戸のオブジェクトを柱状体で作成します。Boxノードに次の通り各部の寸法を入力します。

    • 幅:800mm
    • 奥行き:35mm
    • 高さ:2100mm

作成した柱状体にTextureノードで木材のテクスチャを割り当てます。

戸のモデリングが出来ました。

今回は壁に挿入して使用するため、マリオネットオブジェクトに変換します。

ラッパーノードに変換して、

さらにオブジェクトノードに変換します。

壁に挿入します。このままだと壁の中に戸がピッタリ埋まっていてスライドできません。

Moveノードを使用して、上から見て戸の端が壁の表面にくるように位置を調整します。具体的には、yのマイナス方向に戸の厚み+壁の厚みの半分だけ移動します。

< 壁の厚みを取得する >

マリオネットオブジェクトから壁の厚みを取得する場合、次の手順でノードを繋ぎます。

    1. ParentPIO:マリオネットオブジェクトのハンドル
    2. GetParent:マリオネットオブジェクトが挿入された壁のハンドル
    3. Get Wall Thickness:壁の厚み

取得した壁の厚みの半分と戸の厚みを加算した値を、negativeノードでマイナスに変換して、Moveノードに入力します。

戸をスライドできる位置に移動できました。

26-1-2. 2D戸のモデリング

3Dの戸と同じ位置に四角形の戸を作図します。

四角形を作図するRectangleノードと、3D戸のモデリングで使用したDimノードを使用します。2Dの戸は上から見た図ですので、3D戸の奥行きが四角形の戸の高さに対応します。

2D戸がモデリングできました。

26-2. 開口部設定

マリオネットオブジェクトを壁に挿入したとき、壁の開口部は作図した図形の幅の全長で自動的に設定されます。今回のバーンドアをスライドしたときのように、作図する部材と開口部の位置が異なる場合には別途開口部を設定する必要があります。2Dのときと3Dの時で設定方法が異なりますのでそれぞれ解説します。

26-2-1. 2Dの開口部設定

2Dの開口部の設定には基準点(2D)を使用します。開口部の左右の端点に基準点を配置することで、2つの基準点の間で壁の開口部を設定することができます。

ここではバーンドアの幅よりひとまわり小さい開口とするので、ドアの幅方向(x)の左端と右端から50mmほどオフセットした座標にLocusノードで基準点を作成します。

2Dの開口部を設定できました。

26-2-2. 3Dの開口部設定

残念ながら、3Dの開口部設定は標準のノードだけでは設定することができません。開口部を設定する専用のスクリプト関数を使用して自作のノードを作成する必要があります。

ただ今回は前述のバーンドアのサンプルにて該当のノードが使用されていますので、流用します。フォーラムサイトのURLにアクセスしてサンプルファイルをダウンロードします。

Barn Doorサンプル(Vectorworks社フォーラムサイト)

サンプルファイルをVectorworksで開きます。

バーンドアのマリオネットオブジェクトが配置されていますので、ダブルクリックしてスクリプトの編集画面を開きます。

Set PIO Hole Cutting Objノードを見つけてください。

ノードをコピーして作業中の書類にペーストします。

Set PIO Hole Cutting Objノードは壁のハンドルと、開口部の形状を定義する図形を入力します。

ここでは開口の形状を柱状体で定義します。次のサイズの柱状体を作成します。

    • 幅:700mm
    • 奥行き:壁の厚み
    • 高さ:2000mm
    • オフセット:x方向に50mm、yマイナス方向に壁の厚みの半分

Box 2 Ptノードは2点の3次元座標を指定して注状体を作成することができます。上記の条件を満たすように座標値を入力します。

3Dの開口部を設定できました(説明のため、一時的に透明のテクスチャに設定しています)。

26-3. 戸のスライド

オブジェクト情報パレットに設置したスライダーと連動して戸のオブジェクトがリアルタイムに開閉する仕組みを実装します。

まずはSliderノードの値の範囲を編集します。Sliderノードを配置して、編集…ボタンからソースコードの編集画面を表示します。

編集した内容を保存できるように、READONLY:REFFILEを含む1行目の記述を削除します。

スライダーの値をスライド幅に対応させるため、スライダーコントロールの値を次のように設定してOKで編集画面を閉じます。

    • 初期値:0
    • 下限値:0
    • 上限値:800

それではSliderノードの値を使用して戸のオブジェクトを移動させます。26-1.で使用したMoveを流用します。3Dと2Dの戸を移動量を定義するPoint3及びPoint2ノードにて、空いていたnXポートにスライダーの値を入力します。Sliderノードには「スライド距離」等の名前を設定します。

スクリプトの編集画面を出ます。バーンドアのオブジェクトが完成しました。

スライダーに連動して戸が開閉します。戸のスライド位置によらず、壁の開口部が固定されています。

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

Architect

Vectorworks Architect

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

Landmark

Vectorworks Landmark

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

Spotlight

Vectorworks Spotlight

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

Designer

Vectorworks Design Suite

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