SCNParticleSystem 部分隐藏或以错误方式遮挡

问题描述

我有一个粒子系统的问题,在极少数情况下,它可能会以错误的方式被遮挡。您在打印屏幕上看到的粒子系统是一个球体(具有不可见的材质,材质透明度 = 0.0),它从其表面发射粒子。大约每秒 250 个粒子 - 没有魔法 - 粒子系统可以正常工作 99%。

您还会看到一个直径非常大的地板(它是一个 SCNPlane),大约为 100m x 100m。遮挡发生在相机飞过并且视角发生一点变化时,因为相机移动平滑。根据相机的角度,它可能会发生 - 正如您在第二张图像中看到的 - 粒子系统以错误的方式部分被遮挡,就像它会留在地平线后面 - 但它没有 - 它在地板上方 2m 处徘徊并且有半径为 1m。

有人遇到过类似的问题吗?有什么可以做的,使这个渲染在所有情况下(从所有视角)都正确。

有时粒子系统甚至会完全消失。 i.Ex 当相机从上方 (20m) 直接观察粒子系统时。

Good Particle System

Bad Particle System

(场景使用 SceneKit 使用基于物理的渲染 - 背景是一个简单的天空盒)

解决方法

你问是否有人遇到过类似的问题? 我可以回答是!

根据视角(相机位置)和 SCNParticleSystem 所附着的对象,我会发现发射的粒子有奇怪的遮挡。

我没有 SCNPlane,但我在场景周围有一个大型 SCNSphere,显示 360 度全景视频。如果我移除球体,错误就不会再发生了。

这可能是 iOS 14.x 和 macOS 11.2 的回归,因为在 iOS 13.6.1 下运行的相同应用程序没有显示问题!