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

このエントリをはてなブックマークに追加このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加このエントリをkwoutに追加
2008年3月3日 月曜日0:58:26

さて、とりあえず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時点)の、

rhd.displayObject3D = face.instance;

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

  • ページ:
  • 1
  • 2
  • 3

トラックバック URL :

コメントをどうぞ

HTML convert time: 0.526 sec.