SCNParticleSystem частично скрыта или закрыта неправильным образом

У меня есть проблема с системами частиц, которые в редких случаях могут быть перекрыты неправильным образом. Система частиц, которую вы видите на принтскринах, представляет собой сферу (с невидимым материалом, прозрачность материала = 0,0), которая испускает частицы со своей поверхности. Вроде 250 частиц в секунду — никакой магии — и система частиц работает на 99% как надо.

Вы также видите пол (который представляет собой SCNPlane) очень большого диаметра, примерно 100 м x 100 м. Окклюзия происходит, когда камера пролетает и угол обзора немного меняется, потому что камера движется плавно. В зависимости от угла камеры это может случиться - как вы видите на втором изображении - система частиц частично закрыта неправильным образом, как будто она осталась бы за горизонтом - но это не так - она ​​пылесосит на высоте 2 м над полом и имеет радиус 1м.

Кто-нибудь сталкивался с подобной проблемой? Можно ли что-то сделать, чтобы этот рендер был корректным во всех случаях (со всех углов обзора).

Иногда система частиц даже полностью исчезает. i.Ex, когда камера смотрит с высоты (20 м) прямо на систему частиц.

Хорошая система частиц Плохая система частиц

(Сцена использует физический рендеринг с использованием SceneKit — фон представляет собой простой скайбокс)


person ZAY    schedule 30.01.2021    source источник


Ответы (1)


Вы спрашивали, сталкивался ли кто-нибудь с подобной проблемой? Я могу ответить да!

В зависимости от точки зрения (положения камеры) и объекта, к которому прикреплена SCNParticleSystem, я получаю странные окклюзии излучаемых частиц.

У меня нет SCNPlane, но у меня есть большая SCNSphere вокруг сцены, показывающая 360-градусное видео. Если я уберу сферу, ошибка больше не возникает.

Это может быть регрессией с iOS 14.x и macOS 11.2, поскольку то же самое приложение, работающее под iOS 13.6.1, не показывает проблему!

person stipus    schedule 15.04.2021
comment
Интересно услышать... есть ли у вас какое-либо предложение или обходной путь, чтобы избавиться от этой странной окклюзии? - person ZAY; 16.04.2021
comment
К сожалению нет. У вас возникла проблема с macOS и/или iOS? Если я добавлю ту же систему частиц к другому объекту, этого не произойдет. Похоже, это происходит только тогда, когда объект, к которому прикреплена система частиц, скрыт другой геометрией. Возможно, это плохая оптимизация SceneKit... если объект закрыт другим объектом, то его частицы также скрыты... - person stipus; 16.04.2021
comment
Я разрабатываю только для iOS, поэтому я понятия не имею, происходит ли это и на MacOS. В моем конкретном случае эта система иногда блокируется. Когда персонаж бежит к нему, и камера смотрит на систему частиц под небольшим углом, затем на одну секунду он закрывается, затем возвращается в нормальное состояние, затем снова закрывается — затем я запускаю персонажа в другом направлении, и снова становится нормальным. Это действительно странно. Вы сообщили об ошибке в Apple? - person ZAY; 16.04.2021
comment
Проблема выглядит очень похоже. У меня есть объект SCNNode, который парит перед камерой. К этому объекту SCNNode прикреплена система SCNParticleSystem. Когда объект зависает, его y-позиция медленно обновляется вверх и вниз, и это заставляет SCNParticleSystem иногда мигать (на одну секунду он скрыт, затем снова отображается). Если немного сдвинуть камеру, то этого больше не происходит. Я еще не заполнил отчет об ошибке, так как мне нужно будет создать демонстрационное приложение, чтобы показать ошибку, и в настоящее время у меня недостаточно времени. - person stipus; 17.04.2021