如何在Java 3D中以特定角度连续旋转一个矩形

3

我使用下面的代码沿着x轴旋转一个矩形。但问题是,我想通过循环或者用户输入不断改变旋转角度。由于我对Java3D还很陌生,不知道怎么做。

非常感谢您提供任何帮助!

  SimpleUniverse universe = new SimpleUniverse();
  BranchGroup group = new BranchGroup();
  ColorCube c = new ColorCube(0.3);

  Transform3D t1 = new Transform3D();
  t1.rotX(Math.PI/2.0d);    

  TransformGroup tg1 = new TransformGroup(t1);

  tg1.addChild(c);
  group.addChild(tg1);
  group.compile();

  universe.getViewingPlatform().setNominalViewingTransform();
  universe.addBranchGraph(group);

创建一个while循环 - 通过将函数应用于t1.rotX(Math.PI/2.0d)来更改旋转角度,并在每次循环迭代中重新绘制它。如果您希望它持续旋转。我建议您创建第二个线程,将您的'while(true)'循环放入其中。 - Jay
其实我想详细了解Java 3D中的“重绘”过程,因为我使用了for循环但失败了 :( @Jay - Sefat Noor Orni
调用tg1.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE),然后在其他地方使用新的旋转调用tg1.setTransform()来旋转它,可以参考这个例子(确保您使用的是Java3D 1.6.0):http://www.java3d.org/animationinteraction.html。 - gouessej
@gouessej 你介意把这个扩展成一个答案吗?否则,我可以构建一个,只是为了避免让这个问题“无解”(尽管,是的,它可以通过几次网络搜索来回答...) - Marco13
如果您有建议,请提出来,因为我的问题还没有解决 @Macro13 - Sefat Noor Orni
@Marco13 已完成,谢谢 ;) - gouessej
1个回答

1
您需要在运行时调用TransformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE)以允许修改变换。然后,稍后必须调用TransformGroup.setTransform()来修改其变换。您可以通过传递不同的变换使其旋转、移动等。您可以使用以下示例: http://www.java3d.org/animationinteraction.html 您可以使用计时器定期执行任务。此任务可以修改变换(通过从先前的变换计算新变换),而无需编写循环来执行此操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接