禁用重叠平面的闪烁

时间:2017-06-06 08:26:05

标签: scenekit

你知道,当有两个平面在同一个位置,不同的颜色时,它们会开始相互对抗,所以有些部分是另一个纹理,还有一些是其他部分。

我认为Scenekit的renderingOrder应该解决这个问题,但我无法让它工作。我为planeOrder和planeB 1提供了planeA 0,但没有发生任何事情。

所以基本上我想让两架飞机处于同一位置,但我想让另一架飞机成为“主力”,以便渲染主力飞机,而不是另一架飞机。

2 个答案:

答案 0 :(得分:5)

这通常被称为Z-fighting,并且只要3D存在就一直是3D中的问题。

有两种基本的,而不是理想的方法可以解决这个问题,因为我目前了解你的情况:

1。删除您不想看到的飞机,直到您需要它,可能是当相机绕过另一侧或其他一些条件发生变化时,此时你需要添加你需要的飞机,然后移除另一架飞机。

2。曾经在" Z空间"中稍微分开它们,或者任何有意义的空间将它们推得稍微分开。这可能是一个非常小的数量,如此之小,以至于观众无法察觉到飞机不在完全相同的空间内。

答案 1 :(得分:0)

表示垂直平面的重叠框有类似的问题。

这里有一个解决方案,如果您不使用透明节点,可能会对您有用(我这样做,所以我的问题仍然存在,我会在解决后更新):

使用包含所有平面几何图形的展平节点。您可以使用getTimestamp()展平所有节点的孩子。每次你添加更多的平面节点时都会变平,即:

flattenedClone()