[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:01316] Re: [Java3Djp:01313] Re: Shape3Dのピッキング
◆◇ ◆◇ ◆◇ MagicalCastβ(ベータ版) ◆◇ ◆◇ ◆◇
┌──┐ ┌──┐
│\/│ DNSの新MLシステム誕生です!│\/│
└──┘ └──┘
これまでの簡単・快適そのままで高機能に
いえいえもっと高速に。βテストにご協力下さい
※ fmlでもmajordomoでもありません
◆◇ ◆◇ ◆◇ http://mx7.dns-ml.co.jp/ ◆◇ ◆◇ ◆◇
どうも、阿部晃久です。
教えていただいた方法などを試したとところ、うまくピッキングすることに成功しま
した。
参考までに,どのようにプログラムを変更したのか記しておきますね。
TriangleArrayのコンストラクタにてGeometry.ALLOW_INTERSECTを指定していたんで
すが、
作ったジオメトリーに対してsetCapability()で設定しないと反映されないようでし
た。
TriangleArray(verts.length,
TriangleArray.COORDINATES|TriangleArray.NORMALS|Geometry.ALLOW_INTERSECT)
↓
TriangleArray geom = new TriangleArray(verts.length,
TriangleArray.COORDINATES|TriangleArray.NORMALS);
geom.setCapability(Geometry.ALLOW_INTERSECT);
私のプログラムでは,pickObjectのpickClosest()にてSceneGraphPathを取り出し
て,pickNode()によって
ノードを取り出していたんですが,各メソッドの引数として以下のように設定したら
うまく行きました.
pickObject.pickClosest(mouseX, mouseY, PickObject.USE_GEOMETRY);
pickObject.pickNode(sgPath, PickObject.SHAPE3D, 1)
mouseXとmouseYはマウスの座標であり、sgPathというのは取り出したSceneGraphPath
です。
つまり、ジオメトリーを元にピッキング処理を行ってシーングラフの探索を行い,
ノードを見つけるときはSHAPE3Dを探すように設定したことになるんでしょうね。
これはJava3DのTickTockPickingデモに似た方法が載っていたので,
それを参考にして作りました。
なお、Shape3DにALLOW_GEOMETRY_READをセットするように言われましたが,これはし
なくても大丈夫でした。
ちゃんと調べずに質問してしまい,本当にすいませんでした。
================================
Name : Teruhisa Abe (阿部晃久)
E-mail : teru-abe@xxxxxxxxxx
================================