0

我基本上是在尝试通过 Java3D 创建一个形状,屏幕上只出现一个立方体。我想把立方体放在一行或一列中,但我就是不知道我做错了什么。显然这只是部分代码,只是创建立方体的方法。

私人无效createCubes(){

                Cuboid box = new Cuboid(0.03f, 0.03f, 0.03f, cubeAppearance);
                Cuboid box2 = new Cuboid(0.03f, 0.03f, 0.03f, cubeAppearance);
                Cuboid box3 = new Cuboid(0.03f, 0.03f, 0.03f, cubeAppearance);
                Cuboid box4 = new Cuboid(0.03f, 0.03f, 0.03f, cubeAppearance);


                Vector3f vector = new Vector3f(0f, .3f, 0f);




                TransformGroup tg = new TransformGroup();
                Transform3D transform = new Transform3D();
                transform.setTranslation(vector);

                tg.addChild(box);
                tg.setTransform(transform);
                tg.addChild(box2);
                tg.setTransform(transform);
                tg.addChild(box3);
                tg.setTransform(transform);
                tg.addChild(box4);
                tg.setTransform(transform);






                rootGroup.addChild(tg);
4

1 回答 1

0

为什么您认为您的代码应该将多维数据集放在一行/列中?它们都具有相同的坐标、大小、变换并属于同一个变换组...您必须为要单独放置的每个框创建一个新的变换和变换组。

像这样的东西应该可以解决 4 个盒子:

TransformGroup getNewBox(float hpos) {
  Cuboid box = new Cuboid(0.03f, 0.03f, 0.03f, cubeAppearance);
  TransformGroup tg = new TransformGroup();
  Transform3D transform = new Transform3D();
  Vector3f vector = new Vector3f(0f, hposf, 0f);
  transform.setTranslation(vector);
  tg.addChild(box);
  tg.setTransform(transform);
  return tg;
}

{
  rootGroup.addChild(getNewBox(0f);
  rootGroup.addChild(getNewBox(0.3f);
  rootGroup.addChild(getNewBox(0.6f);
  rootGroup.addChild(getNewBox(0.9f);
}
于 2013-01-14T10:32:15.223 回答