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

第4回「レイヤ追従型柱状体」

ArchitectLandmarkSpotlightDesigner

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

4-3. レイヤとの連動

ここからは中級コースになるので、気合いの入れどころです。

大まかに説明すると、上端用のレイヤと下端用のレイヤをポップアップで選択し、それぞれのレイヤの高さを取得して、Extrudeの「nTop」と「nBot」に接続する、というかたちになります。

レイヤの高さだけだとつまらないので、その高さからオフセットできるように改良もしてみます。

4-3-1. 上端のレイヤを取得

まずは上端のレイヤを指定できるようにします。
先に、4-2-1で追加したDimノードは削除しておきましょう。

  • 使用するノード
    • 入力関数初級Layer Popup 1つ
    • レイヤその他Get Layer Elevation 1つ

Layer Popupノードを選択し、名前を「3上端のレイヤ」とします。


3上端のレイヤノードの出力「hLayer」とGet Layer Elevationノードの入力「hLayer」を接続します。

上端のレイヤの高さを柱状体の上面の高さにしたいので、Get Layer Elevationノードの出力「nBaseElev」をExtrudeノードの入力「nTop」につなぎます。

これで上面の高さを指定する骨組みができました。

4-3-2. 下端のレイヤを取得

次に下端のレイヤを指定できるようにします。
基本的には4-3-1と同じ手順です。設定する名前とExtrudeへの接続ポートが変わる程度です。

  • 使用するノード
    • 入力関数初級Layer Popup 1つ
    • レイヤその他Get Layer Elevation 1つ

Layer Popupノードを選択し、名前を「5下端のレイヤ」とします。
数字を「5」にしている意味は後々わかります。

5下端のレイヤノードの出力「hLayer」とGet Layer Elevationノードの入力「hLayer」を接続します。

下端のレイヤの高さを柱状体の底面の高さにしたいので、Get Layer Elevationノードの出力「nBaseElev」をExtrudeノードの入力「nBot」につなぎます。

ここまでで上下のレイヤの高さを設定するための基礎ができあがりました。

4-3-3. 所属するレイヤの高さとの差を設定

4-3-2までの手順だと問題があります。
それは、レイヤの高さをそのまま柱状体の高さに指定してしまうと、柱状体は「Z=0」ではなく、所属するレイヤの高さが基準になるので、欲しい高さの柱状体になりません。

例)
高さ「500mm」の「レイヤ-1」があった場合、「レイヤ-1」を上面に指定すると、上面の高さは「500mm(レイヤ自体の高さ)」にさらに「500mm」が足されることになるので、上面が「Z=1000mm」の高さに位置します。

どうすればいいかというと、今回作成しているマリオネットネットワーク自体が所属しているレイヤの高さを差し引いてあげる必要があります。

実際に既存のネットワークに組み込んでみます。

  • 使用するノード
    • 図形の情報Parent PIO 1つ
    • レイヤ基本Get Layer 1つ
    • レイヤその他Get Layer Elevation 1つ
    • 数学関数基本計算sub 2つ

Parent PIOノードは、いま作成しているマリオネットネットワークをオブジェクトに変換したときにだけ有効なノードで、選択しているオブジェクトのハンドルを取得することができます。(ハンドルについては前回の記事を参照ください)

使用するノードのうち上3つを使って、オブジェクトが所属するレイヤの高さを取得します。

Parent PIOノードの出力「hMarionetteObj」をGet Layerノードの入力「hObj」に接続し、Get Layerノードの出力「hLayer」をGet Layer Elevationノードの入力「hLayer」につなぎます。

あとは、上端のレイヤの高さとの差を柱状体の上面に高さに指定します。

3上端のレイヤノードからつながっているGet Layer Elevationノードの出力「nBaseElev」をExtrudeノードから切り離し、subノードの入力「n1」に接続します。さらに、Parent PIOノードからつながっているGet Layer Elevationノードの出力「nBaseElev」をsubノードの入力「n2」につなぎます。

これで、subノードの出力「n」が実際に欲しい高さとなります。
subノードの出力「n」をExtrudeの入力「nTop」につなぎます。

下端のレイヤの高さも同様です。
下図を参考に、ノードを接続してみてください。

上下の高さの調整

4-3-4. オフセットを追加

レイヤの高さだけだと細かい高さ調整ができないので、レイヤの指定と合わせて、オフセット値を入力できるようにします。

subノードにGet Layer Elevationノードが接続されている箇所が2つありますが、どちらも接続を切っておきます。

  • 使用するノード
    • 入力関数初級Dim 2つ
    • 数学関数基本計算add 2つ

まず、2つのDimノードそれぞれに「4上端のオフセット」「5下端のオフセット」と名前をつけます。(上下のレイヤ指定のポップアップの次の番号になります。)

上端のレイヤからつながっているGet Layer Elevationノードをaddノードの入力「n1」に、4上端のオフセットノードの出力をaddノードの入力「n2」に接続します。
さらに、addノードの出力「n」をsubノードの「n1」に接続します。

下端のレイヤの方も同じように接続します。
下図を参考に、ノードを接続してみてください。

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

Architect

Vectorworks Architect

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

Landmark

Vectorworks Landmark

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

Spotlight

Vectorworks Spotlight

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

Designer

Vectorworks Design Suite

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