[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:00932] Re: picking and detach/attach
□■■■■■□ yourID.glay.toでwebsiteを運営できる! □■■■■■■■□
■ ■
■ ◎CGI/SSI可。【30M・\900/月】【60M・\1,500/月】の低料金設定! ■
■ さらに、yourID@xxxxxxxxxxでメールアドレスもついてくる! ■
■ ■
■ ◎"1mg"chat!も大人気!みなさんも楽しくお話しませんか?? ■
■ ■
□■□ katuweb communication □■□ http://katuweb.com □■■■■■■■□
えんどうです。
> #Switchをつかうべきでしょうか・・。
表示/非表示だけだったら Switch が無難かも知れません。
> pickingのbehaviorはSUNのcom.sun.j3d.utils.picking.の
> クラスをサブクラス化したものです。
>
> で、このbehaviorの中を調べてみると、updateScene()のなかで
> PickObject#pickClosest(int xpos, int ypos, int pickMode)が
> nullを返しています。
>
> pickingのモードはboundsでもgeometryでも変わりません。
> attach/detachするオブジェクトやその親をcompile()する・
> しないでも変わりません。
com.sun.j3d.utils.behaviors.picking パッケージですが、実際には
BranchGroup#pickAll()/pickAllSorted()/pickAny()/pickClosest()
を使っています。
これは、その BranchGroup 配下のノードを調べ、
PickRay と交差しているかどうかを判定しているようです。
null を返すとなると、再接続されたノードのトラバーサルが
うまく行っていないかもしれません。
atach/detach は BranchGroup の単位でしょうか、
それとも TransformGroup の単位ですか?
あと、pick の際の Node タイプ は何でしょうか。
PickObject には次のタイプが用意されています。
BRANCH_GROUP, GROUP, LINK, MORPH, PRIMITIVE,
SHAPE3D, SWITCH, TRANSFORM_GROUP
pickAll() で交差しているすべての SceneGraphPath を得て、
全部の Node を調べてみるという方法も考えられます。
あまり参考にならないかも知れませんが、
PickMouseBehavior を継承したピッキングのサンプルがありますので、
お好きに改造して使ってください。
http://www.javaopen.org/j3dbook/examples/SimplePicking/SimplePicking.java
---
ENDO Yasuyuki <yasuyuki@xxxxxxxxxx>
http://www.javaopen.org/jfriends/index.html (Japanese Only)