マリオネット解説講座

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

ArchitectLandmarkSpotlightDesigner

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」に接続します。

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

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください