3D 透明 JavaFX 不混合网格中的所有三角形

3D Transparency JavaFX not blending all triangles in a mesh

我目前正在绘制一个透明的 3D 网格,该网格是通过移动立方体算法生成的,目的是在问题解决后拥有更多对象。

就目前而言,我可以完美地绘制 3d 形状,但是当我实现透明度时(在我的例子中更改网格 PhongMaterial 的不透明度)我得到了一个奇怪的效果,当在另一个三角形后面时只有几个三角形被渲染。

参见示例。

http://i.imgur.com/1wdmYYs.png (抱歉,由于代表的原因,我无法直接 post 图片)

当 "stick" 在较大的形状后面时,三角形似乎有损失,我目前不知道为什么。

红色都是以相同方式渲染的相同网格。

我目前正在使用环境光,如果有影响的话。

一些示例代码:

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);

只有当三角形面按到相机的距离排序时,透明度才能正常工作。这是消费类 3D 卡将任何场景分解为三角形,因此它们可以单独渲染每个场景这一事实的产物。当您拥有数百个核心时,这允许同时渲染数百个三角形。较旧的卡片会显示它们可以呈现的 triangles/second 的数量。

在更现代的卡上,部分三角形渲染已移至驱动程序,该驱动程序使用卡上的矢量引擎在软件中计算每个点的颜色。这仍然很快,因为你可以拥有 1000 多个矢量 CPU,而且它允许你创建复杂的程序,在每个 vertex/pixel 存储在内存之前修改它,这允许你创建闪亮的表面等