Metasequoia.asをインタラクティブにする方法:詳細編

  • このエントリーをはてなブックマークに追加
  • 0

さて、とりあえずMetasequoia.asをインタラクティブ化するために必要な修正はわかったので、それを実現するためのコードを掲載。といっても、前回のコード断片でほぼ通じてると思うが。

仕組みを調べる

まず、InteractiveScene3DEventの発生についての判定は、以下の道筋で行われているようだ。

  1. ViewPort3D#hitTestMouse
  2. ViewPort3D#hitTestPoint2D
  3. RenderTriangle#hitTestPoint2D
  4. RenderTriangle#deepHitTest

で、最後のRenderTriangle#deepHitTest内で、結果がRenderHitDataに格納されて戻ってくる。この時、判定が行われたDisplayObject3Dインスタンスが、RenderTriangle#triangle#instanceとなっている。RenderTriangle.asの131行目(Rev.439時点)の、

ActionScript

  1. rhd.displayObject3D = face.instance;

とある部分だ。
つまり、Triangle3Dのインスタンスを作った瞬間に、今後InteractiveScene3DEventの発生元となるDisplayObject3Dインスタンスが決まると言うわけだった。

スポンサーリンク
スポンサーリンク
  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク