我正在使用 JavaFX 8 开发一个 3D 项目。我已经用几个 TriangleMesh 对象构建了一个 Car 3d 模型,我还使用其他几个 JavaFX 'Shape 3D' 来创建车轮和车轴。
问题是 MeshViews 元素看起来是透明的。我可以通过它看到其他 Shape3D 对象
这是我制作的其中一个 TriangleMesh 的示例
// ============================= ROOF ============================= //
TriangleMesh roofMesh = new TriangleMesh(VertexFormat.POINT_TEXCOORD);
roofMesh.getPoints().addAll(
/* X */ -roofWidth/2.f, /* Y */ roofHeight + wheelDiameter / 2 + wheelGap + doorHeight, /* Z */ - roofLength/2, //PT0
/* X */ roofWidth/2.f, /* Y */ roofHeight + wheelDiameter / 2 + wheelGap + doorHeight, /* Z */ - roofLength/2, //PT1
/* X */ -roofWidth/2.f, /* Y */ roofHeight + wheelDiameter / 2 + wheelGap + doorHeight, /* Z */ roofLength/2, //PT2
/* X */ roofWidth/2.f, /* Y */ roofHeight + wheelDiameter / 2 + wheelGap + doorHeight, /* Z */ roofLength/2 //PT3
);
roofMesh.getTexCoords().addAll(
0, 0, // t0
1, 0, // t1
0, 1, // t2
1, 1 // t3
);
roofMesh.getFaces().addAll(
1,1, 0,0,2,2,
3,3, 1,2 ,2,1
);
创建网格后,我正在创建一个新的 MeshView 对象
meshViewMap.put("roof", new MeshView(roofMesh));
我还向 MeshViews 应用了材质:
private void setTexColor(Shape3D shape, Color c, String imagePath )
{
PhongMaterial pm = new PhongMaterial();
pm.setDiffuseColor(c);
pm.setSpecularColor(c);
shape.setMaterial(pm);
}
这些是您可以在图像中看到的圆柱体:
//Create Axles
Cylinder frontCylinder = new Cylinder(0.5, bodyWidth);
Cylinder rearCylinder = new Cylinder(0.5, bodyWidth);
PhongMaterial cylinderMat = new PhongMaterial();
cylinderMat.setDiffuseColor(Color.BLACK);
cylinderMat.setSpecularColor(Color.BLACK);
frontCylinder.setMaterial(cylinderMat);
rearCylinder.setMaterial(cylinderMat);
frontCylinder.setRotate(90);
rearCylinder.setRotate(90);
frontCylinder.setTranslateZ( 0.7f * (bodyLength/2 + hoodLength/2));
rearCylinder.setTranslateZ( -0.4f * (bodyLength/2 + hoodLength/2));
frontCylinder.setTranslateY(wheelDiameter/2);
rearCylinder.setTranslateY(wheelDiameter/2);
this.getChildren().add(frontCylinder);
this.getChildren().add(rearCylinder);
我试图将不透明度设置为 1,即使它是默认值。
Java 版本 8.0.121-b13