0

私は基本的に Java3D を介して形状を作成しようとしていますが、画面に立方体が 1 つしか表示されません。立方体を行または列に配置したいのですが、何が間違っているのかわかりません。明らかに、これはコードの一部にすぎず、キューブを作成する方法にすぎません。

プライベートボイド 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 に答える