Created on | Updated on

Viewer State でジオメトリにジオメトリを重ねる

概要

Viewer State のサンプルコード Add Point と、マウスポインタとジオメトリの交差判定を使うことで HDA 入力ジオメトリ上にポイントを配置することができます。
今回は入力ジオメトリ上に配置した box に box を重ねる処理をします。

mceclip11.png

手順

  • Viewer State Code Generator で Add Point のサンプルコードを作り、機能する状態にする

mceclip1.pngmceclip2.png

  • HDA の入力受けを 1 にして、ノードネットワークを作る
    • HDA と同じ階層に box ノード(と視認性向上のために Color ノード)を配置する
    • HDA 内ノードネットワークを作る

mceclip3.pngmceclip4.pngmceclip5.png

  • Viewer State に処理を追加する
    • イニシャライザに交差判定用のジオメトリ変数 _geometry を追加

______1-__.png

  • onEnter メソッドに GEO_MERGED のジオメトリ情報を格納する

______1-__.png

    • onMouseEvent を書き換える

______1-__.png

    • Accept で保存して Viewer State を実行する

mceclip6.png

クリックで作ったジオメトリを交差判定の対象にして box を重ねられるようになりました。

box 同士が埋まらないようにする

  • HDA 内のノードネットワークに matchsize を追加する

mceclip7.png

  • パラメータに フォルダを作り、matchsize の Justify x, y, z をコピーする

mceclip8.png

  • Viewer State に処理を追加する
    • マウスポインタと交差するプリミティブの法線情報を取得し、六面全てと比較しています。これは copy to points でコピーする box ノードの向きが変更されていない場合にのみ有効で、これが sphere などである場合は別の考え方が必要です。

______1-__.png

  • Accept で保存して Viewer State を実行する

mceclip10.png

box を重ねることができました。横に重ねる場合は Justify が切り替わるのがわかります。

この Viewer State の書き方はあくまで一例であり、他のアプローチの仕方や考え方、より簡単な書き方は存在します。ご了承ください。

問題が解決しない場合は、Born Digital サポートまでお問い合わせ下さい。

※ 問い合わせ対応はBorn Digitalより製品をご購入頂きましたお客様のみのサービスとなります。ご了承下さい。
サポート問い合わせ