Можно ли визуализировать частицы за полупрозрачными объектами в наборе сцен?

Я пробую Scenekit, и у меня возникает проблема, когда я пытаюсь визуализировать частицы за полупрозрачными объектами. Они просто не рендерятся, в отличие от других объектов сцены.

введите описание изображения здесь

На этом изображении все частицы находятся перед полупрозрачной коробкой, все частицы позади не отображаются. Вы можете видеть, что сфера отображается правильно, а цвета закрытой части приглушены. Я ожидал бы того же от частиц, но, может быть, выбор рендеринга фреймворка, чтобы сделать системы частиц эффективными, делает такое поведение нормальным?

Я пытался использовать google/stackoverflow, но кажется, что scenekit не очень хорошо освещенная тема.


person Xav    schedule 13.10.2015    source источник
comment
Я не так много знаю о наборе сцен, но я знаю, что в OpenGL порядок прорисовки очень важен для прозрачности. Можете ли вы контролировать, рисуете ли вы частицы до или после коробки? Сначала вы должны нарисовать непрозрачные объекты.   -  person Justin Meiners    schedule 13.10.2015
comment
это хороший намек... Я искал его, но думаю, что упустил из виду... Я не могу изменить порядок рендеринга частиц, но кажется, что я могу изменить порядок рендеринга излучателя частиц... попробую .   -  person Xav    schedule 13.10.2015
comment
Просто быстрый google показывает, что вы можете управлять порядком рисования с помощью графа сцены. Родитель рисует свое содержимое перед рендерингом своих дочерних элементов. Дочерние элементы отображаются в том порядке, в котором они появляются в дочернем массиве.   -  person Justin Meiners    schedule 13.10.2015
comment
вот и все... Мне просто нужно было настроить порядок рендеринга родительского элемента scnode системы частиц. Спасибо !   -  person Xav    schedule 13.10.2015
comment
Напишу ответ.   -  person Justin Meiners    schedule 13.10.2015
comment
нет, я был неправ. Чего-то не хватает, см. сообщение ниже ответа   -  person Xav    schedule 13.10.2015
comment
Давайте продолжим обсуждение в чате.   -  person Xav    schedule 13.10.2015


Ответы (1)


Полупрозрачность сильно зависит от порядка прорисовки. При альфа-смешении средство визуализации считывает текущие значения из буфера кадра и смешивает полупрозрачный цвет поверх этих значений.

Это означает, что непрозрачные объекты должны быть нарисованы первыми, а полупрозрачные объекты должны быть нарисованы сзади наперед. Если непрозрачные объекты рисуются после полупрозрачных объектов, средство визуализации не имеет текущих цветов для смешивания.

С помощью SceneKit порядок отрисовки можно контролировать с помощью свойства renderingOrder узла сцены.

Порядок отображения содержимого узла по отношению к другим узлам.

Apple Документы

person Justin Meiners    schedule 13.10.2015
comment
это верно для SpriteKit (2D), но не для SceneKit (3D). Порядок, в котором узлы отображаются в SceneKit, не зависит от их положения в графе сцены. - person mnuages; 13.10.2015
comment
@mnuages ​​а, спасибо за улов. Я обновил ответ. - person Justin Meiners; 13.10.2015
comment
Ну, на самом деле теперь у меня противоположная проблема... Частицы за коробкой должным образом ослабляются, но частицы перед коробкой также ослабляются, хотя они не прозрачны! - person Xav; 13.10.2015
comment
У меня возникла проблема с непрозрачным объектом node, который находится внутри полупрозрачного объекта box. без настройки порядка рендеринга на i.E 100 объект иногда рисовался, а иногда вообще не рисовался. после установки порядка 100 всегда рисуется непрозрачный объект - идеальный ответ. - person ZAY; 10.05.2021
comment
Гений! Работал для меня, большое спасибо! - person The Way; 27.06.2021