[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>