我是JavaFx 3d建模的初学者。我正在尝试在一个房间里创建一个3d模型的盒子。我有每个盒子前左下角的盒子和坐标的尺寸。我试图用setTranslateX()设置coords,但结果不正确。这是我的代码的一部分,我尝试设置coords:
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)
答案 0 :(得分:0)
当你像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 - (宽度/2.0)= 300 - (50)= 250。