旋转相机时显示黑色三角形的视图

Posted

技术标签:

【中文标题】旋转相机时显示黑色三角形的视图【英文标题】:View showing black triangles when rotating the camera 【发布时间】:2017-01-22 12:57:52 【问题描述】:

我有一个 6 面的图像设置为相机的背景图像(作为天空盒)并且一切正常,直到我将 Xcode 更新为 Xcode 8。现在相机显示三角形形状的黑色斑块,就好像它与旋转时的天空盒。

我在场景编辑器中设置了几乎所有内容,因此我没有相关代码可发布。

我找不到任何关于更改为天空盒创建的盒子的大小或类似的东西。设置一些相机属性可以解决这个问题吗?

编辑:添加截图。

另一个编辑:

使用实际设备不会出现类似问题。

【问题讨论】:

能否附上截图让问题更容易理解? 当然,我加了截图。 【参考方案1】:

Xcode 8 的 Scene Kit 中的相机具有更激进的 Z 距离裁剪。这是相机停止渲染(或看到)超过一定距离之前的距离。或者离它太近了。

这看起来有点像,但不完全是。通常天空盒不受 Z 剪切的影响,这是不需要它的特殊情况。

存在距离裁剪是为了防止需要绘制(许多)事物(并计算它们),这些事物可能太远以至于它们不可见,或者对于游戏功能来说不是必需的,并且只是计算开销。

在节点树或屏幕中选择您的相机,然后将 Z-clipping Far 值(在 Inspector 中)调整为当前值的两倍或三倍。这可能会解决这个问题。

如果是这样,我建议影响天空盒渲染的 Z 剪辑是一个错误。

【讨论】:

同时改变近端和远端 Z 剪裁值对问题没有影响,但我确实注意到了一些我以前没有注意到的东西。显然问题不在于相机,而在于天空盒本身,因为唯一被剪裁的东西(上面有黑色三角形)是天空盒本身。我用作立方体贴图的图像是否有问题?

以上是关于旋转相机时显示黑色三角形的视图的主要内容,如果未能解决你的问题,请参考以下文章

记录相机成像原理

opengl旋转的对象不居中

视图在方向更改时旋转时的黑色背景

如何制作用于围绕 z 轴旋转三角形的特征模型矩阵

OpenGL,第一人称相机翻译

如何在openGL中旋转图像?