Metasequoia.asをインタラクティブにする方法:詳細編
さて、とりあえずMetasequoia.asをインタラクティブ化するために必要な修正はわかったので、それを実現するためのコードを掲載。といっても、前回のコード断片でほぼ通じてると思うが。
仕組みを調べる
まず、InteractiveScene3DEventの発生についての判定は、以下の道筋で行われているようだ。
ViewPort3D#hitTestMouseViewPort3D#hitTestPoint2DRenderTriangle#hitTestPoint2DRenderTriangle#deepHitTest
で、最後のRenderTriangle#deepHitTest内で、結果がRenderHitDataに格納されて戻ってくる。この時、判定が行われたDisplayObject3Dインスタンスが、RenderTriangle#triangle#instanceとなっている。RenderTriangle.asの131行目(Rev.439時点)の、
rhd.displayObject3D = face.instance;
とある部分だ。
つまり、Triangle3Dのインスタンスを作った瞬間に、今後InteractiveScene3DEventの発生元となるDisplayObject3Dインスタンスが決まると言うわけだった。
カテゴリ:ActionScript | Papervision3D



