2017-04-21 65 views
1

我有一个java3d场景,包含一个3D CAD绘图和以0,0,0为中心的各种附加形状。我正在使用OrbitBehaviour让用户围绕它移动。编程式旋转java3d场景(使用OrbitBehaviour?)

我想要有一个按钮,可以围绕一个轴旋转一个固定的数量(比如说10度,但显然是弧度)的场景。我已经有了一个“home”按钮,可以使用lookAt返回到初始查看点。

与我所做的其他工作相比,听起来很简单,但无论我尝试什么方法,都无法使其工作。

我在想我应该问OrbitBehaviour它的getViewPlatformTransform()并移动到0,0,0 - >旋转它 - >以某种方式回到原来的位置?

+0

为了澄清,我希望场景像用户拖动鼠标一样移动,以便围绕一个轴旋转一点。 – 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。所以其他对象必须包装在一个下面。 – UnixNerd