我已经开发了iOS应用程序以使用ARKit具有AR功能。我已经使用过this项目。
该应用程序动态处理Collada(.dae)文件,这意味着客户端将Collada文件和所有纹理上传到某处,并且在this solution的帮助下相应地显示了模型。 该应用程序通常运行良好,但是对于这一应用程序,我们体验到模型的黑色部分闪烁。
正如您在图片中看到的,大部分地板应该是完全黑色的(除了一小部分是黑白的)。当我们放大模型(使模型更大)时,模型显示的地板上的白点更少(在第一张图中几乎没有白点,但有时我们可以看到一些)。当我们缩小模型并使模型变小时,我们会在地板上和其他地方看到很多白色斑点,这些地方应该是黑色的。[在模型中用更少的白色斑点进行缩放]
这个问题有解决方案吗?
答案 0 :(得分:0)
您看到的问题称为Z-fighting。
在给定的模型中,黑色(底部/地板)平面和黑色/白色图案平面非常接近,因此当用户进一步远离渲染器时,渲染器无法准确地区分应首先显示哪个平面。
一种解决方案是将平面材料的readsFromDepthBuffer
属性设置为false。
引用节点/平面后,可以将属性设置为其材质。
if let geom = node.geometry {
for material in geom.materials {
material.readsFromDepthBuffer = false
}
}