3

私の Java3D アプリケーションでは、移動可能な表示プラットフォーム (たとえば、"OrbitBehavior" および "KeyNavigatorBehavior" ビヘイビアのおかげ) があるので、視点をシーンに変更できます。ここで、ビュー上に「静的」なオブジェクトを追加したいと思います。つまり、ビューを移動すると常に同じように表示されます (たとえば、FPS でのプレイヤーの銃のように)。これまでに、この問題に対して次の 2 つのアプローチを試みましたが、いずれも機能しませんでした。

1/オブジェクトを ViewingPlatform に直接アタッチします (専用の BranchGroup と TransformGroup を介して)。この場合、私のオブジェクトは単に表示されません (実際にそのような操作を実行することが許可されているかどうかはまったくわかりません...)。これは私のコードのこの部分です:

コード : ( viewViewingPlatform を使用)

BranchGroup fixedBG = new BranchGroup();
TransformGroup fixedTG = new TransformGroup();
fixedTG.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
fixedTG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
Transform3D transfo = new Transform3D();
transfo.setTranslation(new Vector3f(0.2f, 0.0f, -1.0f));
fixedTG.setTransform(transfo);
ColorCube fixedCube = new ColorCube(0.2);
fixedTG.addChild(fixedCube);
view.addChild(fixedBG);

2/オブジェクトに同じ変換を適用します(回転+変換; getViewPlatformTransform()のgetTransform()を介して取得-ここでは、これらの変換とビューPFとオブジェクトの初期位置の間の操作で、より複雑なことも試しました)プラットフォームの表示と同じ. 専用の動作 (ビューの場所を変更する動作と同じウェイクアップ条件) を使用して、これらすべてをリアルタイムで行います。ここで、ビューを移動するとオブジェクトが消え、KeyNavigator のズーム/ズーム解除アクションを使用すると (ただし非常に不安定な方法で) 再び表示されることがあります。

私がやろうとしていることは実行可能であり、おそらく非常に単純であると確信していますが、今は手がかりがありません...

よろしくお願いいたします。

(追伸: 英語は私の母国語ではないので、私の問題を説明するのは非常に厄介かもしれません: 理解できない部分をもう一度書くように頼むことを躊躇しないでください)

4

1 に答える 1

2

これが機能するかどうかは100%確信が持てませんが、たとえば、いくつかのドキュメント( http://graphcomp.com/info/specs/java3d/j3dguide/Intro.doc.html#47470 )を確認しました。シーン グラフの順序を逆にする必要があります。したがって、通常、ビュー プラットフォームは、ロケールからぶら下がっているブランチ グループからぶら下がっているトランスフォーム グループからぶら下がっています。変換グループは、ビューを方向付けるものです。ColorCube をその変換グループに接続し、ビュー プラットフォームをそのカラー キューブに接続すると、ビューとキューブが一緒に移動するはずです。ビューから立方体をオフセットするために、別の変換グループを挿入することができると思います。カメラを制御しているユーザーは、ブランチの上位にあるトランスフォーム グループを操作しています。

于 2009-10-08T13:59:34.147 に答える