我正在尝试使 3D
Box
变得透明,让我可以看穿。我正在使用以下代码来制作它。
Box truck = new Box(Truck.WIDTH, Truck.HEIGHT, Truck.DEPTH);
truck.setTranslateX(Truck.WIDTH >> 1);
truck.setTranslateY(Truck.HEIGHT >> 1);
truck.setTranslateZ(Truck.DEPTH >> 1);
truckMaterial.setDiffuseColor(Color.SILVER.deriveColor(.3, .3, 0.4, .3));
truck.setMaterial(truckMaterial);
group = new Group();
group.getChildren().add(truck);
mainScene = new SubScene(group, SCREEN_WIDTH * .75, SCREEN_HEIGHT, true, SceneAntialiasing.BALANCED);
mainScene.setFill(Color.SILVER);
// set up the camera
Camera camera = new PerspectiveCamera();
camera.translateXProperty().set(Truck.WIDTH - ((mainScene.getWidth() / 2) + (SCREEN_WIDTH / 2)));
camera.translateYProperty().set(Truck.HEIGHT - (mainScene.getHeight() / 2));
camera.translateZProperty().set(-(Truck.DEPTH / 0.2));
mainScene.setCamera(camera);
这条线
truckMaterial.setDiffuseColor(Color.SILVER.deriveColor(.3, .3, 0.4, .3));
应该使它透明。材质是truckMaterial = new PhongMaterial();
如有任何帮助,我们将不胜感激。
只需将
diffuseMaterial
的不透明度设置为非零颜色,材质就会变成半透明。
我知道您在示例中已经这样做了,但是您在银色背景上绘制了一个银色半透明物体,因此您不会看到太多。另外,某些颜色的不透明度上的
.3
仍然非常不透明,因此您可能看不到太多内容。
如以下所述:
但是没有深度排序算法,这意味着 3D 形状添加到场景的顺序很重要。
所以,如果我们以这里的 3D 轨道飞行器为例:
并修改群组顺序:
Group space = new Group(sun, sunsRadiance, orbit, earth);
至:
Group space = new Group(earth, orbit, sun, sunsRadiance);
并将太阳的
diffuseColor
更改为 .1
的不透明度。
sun.setMaterial(
new PhongMaterial(
Color.ORANGERED
.deriveColor(
0,
1,
1,
.1
),
null,
null,
null,
illuminationMap
)
);
然后,当地球经过半透明的太阳后面时,您将看到白天被照亮的地球。