【问题标题】:SCNParticleSystem partially hidden or occluded in wrong mannerSCNParticleSystem 以错误的方式部分隐藏或遮挡
【发布时间】:2021-05-04 02:25:03
【问题描述】:

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

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

有没有人遇到过类似的问题?有什么办法可以在所有情况下(从所有视角)正确渲染。

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

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

【问题讨论】:

    标签: ios swift scenekit particle-system pbr


    【解决方案1】:

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

    根据视点(相机位置)和 SCNParticleSystem 所附着的对象,我得到了发射粒子的奇怪遮挡。

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

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

    【讨论】:

    • 很高兴听到...您有什么建议或解决方法来摆脱这种奇怪的遮挡吗?
    • 很遗憾没有。您在 macOS 和/或 iOS 下遇到过问题吗?如果我将相同的粒子系统添加到另一个对象,它不会发生。看起来只有当粒子系统附加到的对象被另一个几何体隐藏时才会发生。这可能是一个糟糕的 SceneKit 优化......如果对象被另一个对象遮挡,那么它的粒子也会被隐藏......
    • 我只为 iOS 开发,所以我不知道它是否也发生在 MacOS 上。在我的特殊情况下,这个系统偶尔会被遮挡。当角色跑向它并且相机面对粒子系统的一些较小的不同角度时,然后一秒钟它被遮挡,然后它恢复正常,然后再次被遮挡 - 然后我向另一个方向运行角色,然后它又恢复正常了。这真的很奇怪。您是否向 Apple 提交了错误?
    • 问题看起来很相似。我有一个悬停在相机前面的 SCNNode 对象。此 SCNNode 对象附加了一个 SCNParticleSystem。当对象悬停时,它的 y 位置会缓慢地上下更新,这使得 SCNParticleSystem 有时会闪烁(隐藏一秒钟,然后再次显示)。如果我稍微移动相机,那么它就不会再发生了。我还没有填写错误报告,因为我需要创建一个演示应用程序来显示错误,而我目前没有足够的时间。
    【解决方案2】:

    如果有人需要。我有类似的问题,并试图设置粒子系统的不同设置一段时间。 解决方案之一是增加包含粒子的节点的“渲染顺序”,但如果更改相机方向,粒子就会消失。 偶然地,我发现当我将特定节点添加到场景中时会发生错误。我发现的一个区别是,这个节点的材质具有透明模式“双层”。我试过这个来制作透明的纹理。 我将模式更改为“默认”,它有所帮助。 Xcode screen

    【讨论】:

      猜你喜欢
      • 2013-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2023-03-04
      • 1970-01-01
      • 2023-04-03
      相关资源
      最近更新 更多