[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:00934] Re: picking and detach/attach
★★★ !!!注目!!! ★★★
━ フルカラー名刺屋さん ━━ URL http://www5.tokyoweb.or.jp/netcraft/
カードクラフト ▲ Click ! ▲
● 速い!● ご注文の翌営業日に出荷致します。
● 安い!● 80枚1500円(税別)全国送料無料。
● 綺麗!● 高品質なフルカラー名刺です。
-----------------------------------------------------------------------
小池です。
えんどうさん、ありがとうございます。
At 06:16 99/09/23 +0900, yasuyuki@xxxxxxxxxx wrote:
> えんどうです。
>
> > #Switchをつかうべきでしょうか・・。
>
> 表示/非表示だけだったら Switch が無難かも知れません。
うーむ、最初にちょっと検討したんですけど、インスタンスの
参照はどの道キープしてるので、detach/attachの方が簡単に
思えたんですよね。
> > pickingのbehaviorはSUNのcom.sun.j3d.utils.picking.の
> > クラスをサブクラス化したものです。
> >
> com.sun.j3d.utils.behaviors.picking パッケージですが、実際には
> BranchGroup#pickAll()/pickAllSorted()/pickAny()/pickClosest()
> を使っています。
>
> これは、その BranchGroup 配下のノードを調べ、
> PickRay と交差しているかどうかを判定しているようです。
>
> null を返すとなると、再接続されたノードのトラバーサルが
> うまく行っていないかもしれません。
そうですね。私もその線を疑っています。
昨日JDCのバグパレードも調べてみたんですが、らしいものは
見つかりませんでした。
> atach/detach は BranchGroup の単位でしょうか、
> それとも TransformGroup の単位ですか?
親はTransformGroup、子はBranchGroupのサブクラスです。
> あと、pick の際の Node タイプ は何でしょうか。
> PickObject には次のタイプが用意されています。
> BRANCH_GROUP, GROUP, LINK, MORPH, PRIMITIVE,
> SHAPE3D, SWITCH, TRANSFORM_GROUP
PRIMITIVE | BRANCH_GROUP、もしくはTRANSFORM_GROUPにして
あります(behaviorが複数あり、両方のタイプがある)。
ただ、該当部分のコードは以下の通りですが、
int pickObjectType = PickObject.PRIMITIVE | PickObject.BRANCH_GROUP;
(途中省略)
TransformGroup tg = null;
if (trigger.isTrigger(mevent)) {
tg = (TransformGroup)pickScene.pickNode(
pickScene.pickClosest(xpos, ypos, pickMode),
pickObjectType);
( pickScene : PickObject型 )
nullを返すのはpickClosest()ですので、あまり関係ないかなと。
> pickAll() で交差しているすべての SceneGraphPath を得て、
> 全部の Node を調べてみるという方法も考えられます。
そうですね。やってみます。
実はPickObject#pickClosest()の中を見て、そこで
BranchGroup#pickClosest()を呼んでいたので、これをpickAll()に
してみようか、とは思ってました。ただ、それにはPickObjectを
自前のクラスにしなければならず、それを使うようにするには
PickMouseBehaviorもしなければならず・・という具合で、
躊躇してました。
えんどうさんに言われて初めて、PickObjectにpickAll()があるのに
気づきました。
> あまり参考にならないかも知れませんが、
> PickMouseBehavior を継承したピッキングのサンプルがありますので、
> お好きに改造して使ってください。
>
> http://www.javaopen.org/j3dbook/examples/SimplePicking/SimplePicking.java
ありがとうございます。
/* written by Koike,T. */