如何在J3d核心中附加一个对象,J3d util

时间:2016-10-03 11:38:28

标签: java

我有一个动态移动的3D对象,比如一个立方体。我打算在这个立方体的一侧附加另一个物体,比如一个球体。

我想要的是当这个立方体(主要对象)移动时,辅助对象应该随之移动,保持完全附着/粘合到它上面。

我想知道你是否可以提供帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

从概念上来说这很简单,但鉴于问题中的信息很少,答案可能听起来很模糊:你必须将它们附加到同一个变换组。

这里有一些过于暗示变量名称的伪代码:

// The transform group that moves the cube
TransformGroup tgThatMovesTheCube = new TransformGroup();
tgThatMovesTheCube .addChild(new ColorCube(0.4));

// The transform group that "attaches" the sphere to the cube:
TransformGroup tgThatAttachesTheSphere = new TransformGroup();
tgThatAttachesTheSphere.addChild(new Sphere(...));

// The transform of this transform group: It is a transform
// that moves the sphere (from its original position) to 
// one side of the cube (at its original position)
Transform3D attachingTransform = new Transform3D();
attachingTransform.setTranslation(new Vector3f(1,0,0)); 
tgThatAttachesTheSphere.setTransform(attachingTransform);

// Attach the transformed (!) sphere to the same TG as the cube:
tgThatMovesTheCube.addChild(tgThatAttachesTheSphere);

现在,更改tgThatMovesTheCube的变换将导致球体球体以相同的方式移动。

球体和立方体的相对位置仅由tgThatAttachesTheSphere确定,如果不更改其变换,则表现为球体“卡住”在立方体上。