在 JavaFx 中定位 3d 框

Positioning of 3d boxes in JavaFx

我是 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)

And this is what I get

当您平移像 Box 这样的 JavaFX 3D 对象时,您需要沿任何轴计算对象宽度的一半。 Box 的默认位置是以原点为中心,这意味着 Box 对象的中心位于 0,0,0。您的宽度是 30 * 10,但您的 translateX 转换为 0*10=0。所以你的蓝色盒子最右边的边缘将是 X=150 (300 / 2.0 = 150)。你的 Pink Box 的 translateX 为 10*30=300。粉红色框的中心将转换为 300,这意味着最左边的边缘将位于 300 - (width/2.0) = 300 - (50) = 250.