【发布时间】:2015-11-03 13:58:06
【问题描述】:
我目前正在绘制一个通过行进立方体算法生成的单个透明 3D 网格,目的是在问题解决后拥有更多对象。
就目前而言,我可以完美地绘制 3d 形状,但是当我实现透明度时(在我的例子中是更改网格 PhongMaterial 的不透明度),我得到了一种奇怪的效果,即在另一个三角形后面时只渲染了几个三角形。
参见示例。
http://i.imgur.com/1wdmYYs.png (抱歉,由于rep,我无法直接发布图片)
当“棍子”在较大的形状后面时,三角形似乎丢失了,我目前不知道为什么。
红色是所有以相同方式渲染的相同网格。
如果有影响的话,我目前正在使用环境光。
一些示例代码:
MeshView mesh = generate Mesh Data via marching cube;
mesh.setCullFace(CullFace.None);
PhongMaterial mat = new PhongMaterial(1, 0, 0, 0.5d);
AmbientLight light = new AmbientLight();
light.setColor(new Color(1, 0, 0, 0.5)); // I dont believe the alpha makes a difference
light.setOpacity(0.5);
mesh.setMaterial(mat);
group.getChildren().addAll(light, mesh);
【问题讨论】:
-
您使用的是什么 JDK 版本?注意透明度的工作基于场景中节点的顺序,正如您在 question 中看到的那样
-
我相信我正在使用 JDK8u60 b15。我会尝试更新到最新版本,看看是否有任何变化。在示例中,我只渲染一个网格,因此只有一个节点。
-
这就是我所说的顺序,你需要有几个3D形状才能看到透明效果。最上面的透明节点将让您看到它后面的其余形状。
-
确保按照与相机的距离对网格中的三角形进行排序。否则,透明度将无法按预期工作。
-
我的问题更多是关于如何在单个形状中处理透明度(红色形状是单个模型)。 IE。它自己的三角形隐藏在自己的背后。从我收集到的信息来看,透明度对多个对象都很好,但似乎为每个对象创造了一种战略效果。这是一个效果示例。 i.imgur.com/JtyirsA.png 我希望这表明问题在于每个 3d 形状以及它如何处理其自己的网格中的不透明度。抱歉,如果图片难以理解,我现在会尝试制作更好的版本。
标签: java javafx 3d transparency opacity