我有一个动态移动的3D对象,比如一个立方体。我打算在这个立方体的一侧附加另一个物体,比如一个球体。
我想要的是当这个立方体(主要对象)移动时,辅助对象应该随之移动,保持完全附着/粘合到它上面。
我想知道你是否可以提供帮助。
谢谢
答案 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
确定,如果不更改其变换,则表现为球体“卡住”在立方体上。