2017-04-21 10 views
1

私は、3D CAD図面と0,0,0を中心とする様々な付属の図形で構成されるjava3dシーンを持っています。私はOrbitBehaviourを使用して、ユーザーがその周りを移動できるようにしています。Java3dシーンをプログラム的に回転させる(OrbitBehaviour?を使用)

私は一定の量(例えば10度だが、明らかにラジアン)で1つの軸の周りをシーンを回転させるボタンを持っていたいと思う。私はすでにlookAtを使って最初の視点に戻る「家庭」ボタンを持っています。

私がやった他の仕事と比べるとシンプルですが、私はどのようなアプローチをしてもうまく動作しません。

私はOrbitBehaviourに対してgetViewPlatformTransform()を求めて、0,0,0に移動する必要があります - >それを回転させる - >何とか元の位置に戻しますか?

+0

明確にするために、ユーザーがマウスをドラッグして1軸回りに少し回転させたように、シーンを動かしたいと思います。 – UnixNerd

答えて

2

最も簡単な方法は、すべてのオブジェクトをTransformGroupに配置し、回転行列を適用することです。

TransformGroup tg = new TransformGroup(); 
Transform3D transform = new Transform3D(); 
/// add objects to transform group 
tg.setTransform(transform); 

実行時にtransfromを変更する場合は、その変換グループに適切なヒントを追加する必要があります。

+0

ありがとう、私は前にそれを試してみましたが、私は問題があった初期のシーンをコンパイルした後にラベルを追加したり削除したりする必要があるので。 – UnixNerd

+0

私が覚えている限り、実行時例外をスローしないようにするための適切なヒントが必要ですが、オブジェクトは動的にシーンに追加できます(つまりトランスフォームグループを介して)。 。 – Dariusz

+0

私は最初のシーンをコンパイルした後にBranchGroupsだけを追加できると思います。したがって、他のオブジェクトは1つの下にラップする必要があります。 – UnixNerd

関連する問題