[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:00248] Re: 形状のピッキング
岩倉です。
結論からしますと、解決しました。
いろいろと回答いただき、お手数かけました。
On Tue, 11 Jan 2005 10:36:22 +0900
yasuyuki <yasuyuki@xxxxxxxxxxxxx> wrote:
> > また、Sphereの場合、見かけ上そのSphereがない箇所で、Sphere近辺でクリック
> > しても、そのSphereがピッキングされるということもあります。
>
> Bounds モードだから、というわけではないのでしょうか。
まったくもってその通りでした。
当たり前だったのかもしれませんが。
GEOMETRYモードだと、例外(Capability)がでて、どこにセットすればいいか
わからなかったというところがネックだったのもありました。
結果的に、以下の修正をすることで希望する動作ができるようになりました。
Summaryとしてお知らせします。
(1) ピッキングをGeometryモードにする。
デフォルトだとBOUNDSなので、PickMouseBehaviorで、
setMode(PickTool.GEOMETRY)とした。
(2)SphereをGeometryモードでピッキング可とする。
TransformGroup(tg)-Sphere(sp)とした場合、
GEOMETRYモードでピッキングする場合、
Capabilityを
tg.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
sp.getShape().getGeometry().setCapability(Geometry.ALLOW_INTERSECT);
とセットした。
(3)ピッキングの修正
pickCanvas.pickAllSorted()ではなく、pickCanvas.pickClosest()とした。
GEOMETRYモードの場合、これで手前の形状がピッキングされる。
#BOUNDSの場合、Closestでクリック近くの形状がピッキングされるとは
#かぎらない。
(補足)ピッキング対象外の形状へのピッキング設定
ピッキング設定していない形状があり、なぜかピッキング対象と
なっているようなので、あえて対象とし、それは外す処理を追加した。
以上です。
ありがとうございました。
--
岩倉 隆裕 <iwakura.takahiro@xxxxxxxxx>