マリオネット解説講座

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

ArchitectLandmarkSpotlightDesigner

4-4. ムシ退治

4-3までで、レイヤに追従する柱状体がほぼできあがりました。
ただ、このままオブジェクトにしてしまうと、エラーが発生してしまいます。いわゆる「バグ」というものです。

上下のレイヤ指定のためのポップアップで、あらかじめデフォルトレイヤを指定しておくことはできますが、ファイルによってレイヤ名が変わることがあります。

その際、レイヤ名が空欄になることから、レイヤの高さを取得できずにエラーを出してしまいます。

4-4-1. レイヤ選択が正しいかを判定

上下のレイヤ選択ポップアップが空欄でないことを判定します。

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

not equalノードの入力「n1」に3上端のレイヤノードの出力「hLayer」を、not equalノードの入力「n2」にAnyノードの出力「item」を接続します。

not equalノードは、2つの入力ポートが異なるものであれば「True」を、同じものであれば「False」を出力するノードです。

Anyノードを選択し、オブジェクト情報パレットのevalに「0」と入力します。3上端のレイヤで何も選択されていないときは「0」が出力されるので、きちんとレイヤが選択されているときはnot equalが「True」を、選択されていないときはnot equalが「False」を出力するようになります。

5下端のレイヤノードの方も同じように接続しましょう。

4-4-2. もしも♫レイヤが♫カラ〜な〜らば〜

ということで、2つの条件に合わせてレイヤの高さを取得します。

  • 「もし」Anyが「True」ならば、選択されたレイヤの高さを…
  • 「もし」Anyが「False」ならば、オブジェクトがあるレイヤの高さを…

これを実現するのがIfノードです。

  • 使用するノード
    • データフローIf 2つ

まず、3上端のレイヤノードとGet Layer Elevationノードを切り離します。そこにIfノードを配置し、3上端のレイヤノードの出力「hLayer」をIfノードの入力「itemTrue」に接続します。Ifノードの出力「item」はGet Layer Elevationノードの入力「hLayer」につなぎます。

Ifノードの入力「itemFalse」には、Parent PIOGet Layerノードの出力「hLayer」を接続します。

IfノードがTrueかFalseかを判定するために、入力「bTest」にnot equalノードの出力「b」をつなぎます。

これで、レイヤの選択が間違っていればオブジェクトが配置されたレイヤの高さを、正しければ指定されたレイヤの高さを取得して、柱状体作成に利用します。

5下端のレイヤノードの方も手を加えてみましょう。
できあがりは下図のようになります。

ネットワーク全体は下図のようになります。

このように比較的簡単なプログラムでもエラーの回避が必須になります。プログラムが大きくなるにつれて、エラー箇所の発見や修正が大きな作業になります。

これで今回のマリオネットの組み立ては以上となりますが、このままだと動かないので、次のセクションでオブジェクトノードに変換します。

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

Architect

Vectorworks Architect

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

Landmark

Vectorworks Landmark

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

Spotlight

Vectorworks Spotlight

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

Designer

Vectorworks Designer

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

コメントを残す

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