1

私は JavaFx 3d モデリングの初心者です。部屋に箱の 3D モデルを作成しようとしています。ボックスの寸法と、すべてのボックスの左下隅からの座標があります。setTranslateX() で座標を設定しようとしましたが、結果が正しくありません。座標を設定しようとするコードの写真は次のとおりです。

for (int i = 0; i < Main.load.size(); i++) {
        Load l=Main.load.get(i);
        Box sphere = new Box(l.getLength()*10, l.getWidth()*10, l.getHeight()*10);
        sphere.setTranslateX(l.getX()*10);
        sphere.setTranslateY(l.getY()*10);
        sphere.setTranslateZ(l.getZ()*10);
        PhongMaterial m = new PhongMaterial();
        m.setDiffuseColor(new Color(Math.random(),Math.random(),Math.random(),1));
        m.setSpecularColor(Color.BLACK);
        sphere.setMaterial(m);
        root.getChildren().add(sphere);
    }

誰かが私を助けてくれることを願っています。

次に例を示します。

サイズ: ブルー (30,50,50) ピンク (10,10,20)

位置: 青 (0,0,0) ピンク (30,0,0)

そして、これは私が得るものです

4

1 に答える 1

0

Box のような JavaFX 3D オブジェクトの変換を行う場合、任意の軸に沿ってオブジェクトの幅の半分を考慮する必要があります。Box のデフォルトの配置は、Box オブジェクトの中心が 0,0,0 であることを意味する原点の中心に配置されます。幅は 30 * 10 ですが、translateX は 0*10=0 に変換されます。したがって、青いボックスの右端は X=150 (300 / 2.0 = 150) になります。ピンク ボックスの translateX は 10*30=300 です。ピンクのボックスの中心は 300 に変換されます。つまり、左端は 300 - (幅/2.0) = 300 - (50) = 250 になります。

于 2016-02-09T03:24:44.373 に答える