ReflectionProbe
Наследует: VisualInstance3D < Node3D < Node < Object
Фиксирует окружающую обстановку для создания быстрых и точных отражений из заданной точки.
Описание
Захватывает свое окружение в виде кубической карты и сохраняет ее версии с увеличивающимися уровнями размытия для имитации различных шероховатостей материалов.
ReflectionProbe используется для создания высококачественных отражений при низких затратах производительности (когда update_mode равно UPDATE_ONCE). ReflectionProbe-ы можно плавно смешивать друг с другом и с остальной частью сцены. ReflectionProbe-ы также могут комбинироваться с VoxelGI, SDFGI (Environment.sdfgi_enabled) и отражениями в экранном пространстве (Environment.ssr_enabled) для получения более точных отражений в определенных областях. ReflectionProbe-ы визуализируют все объекты в пределах cull_mask, поэтому их обновление может быть довольно затратным. Лучше всего обновить их один раз, добавив важные статические объекты, и больше не трогать.
Примечание: В отличие от VoxelGI и SDFGI, ReflectionProbe получают свою среду только из узла WorldEnvironment. Если указать ресурс Environment в узле Camera3D, он будет проигнорирован ReflectionProbe. Это может привести к неправильному освещению внутри ReflectionProbe.
Примечание: При использовании метода Mobile рендеринга на каждом ресурсе сетки могут отображаться только 8 reflection отражения, тогда как метод Compatibility рендеринга поддерживает только до 2 Reflection Probe на каждой сетке. Попытка отобразить более 8 reflection отражения на одном ресурсе сетки с помощью Mobile рендеринга приведет к мерцанию зондов отражения при движении камеры, в то время как Compatibility рендеринга не будет отображать никаких дополнительных зондов, если используется более 2 Reflection Probe.
Примечание: При использовании метода Mobile рендеринга Reflection Probe будут правильно воздействовать только на те сетки, видимость AABB которых пересекается с AABB Reflection Probe. При использовании шейдера для деформации сетки, выходящей за пределы AABB, необходимо увеличить GeometryInstance3D.extra_cull_margin сетки. В противном случае Reflection Probe может быть не виден на сетке.
Обучающие материалы
Свойства
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Перечисления
enum UpdateMode: 🔗
UpdateMode UPDATE_ONCE = 0
Обновите зонд один раз в следующем кадре (рекомендуется для большинства объектов). Соответствующая карта яркости будет сгенерирована в течение следующих шести кадров. Это занимает больше времени для обновления, чем UPDATE_ALWAYS, но имеет меньшие затраты производительности и может привести к более качественным отражениям. ReflectionProbe обновляется, когда изменяется его преобразование, но не когда изменяется близлежащая геометрия. Вы можете принудительно обновить ReflectionProbe, слегка переместив ReflectionProbe в любом направлении.
UpdateMode UPDATE_ALWAYS = 1
Обновлять зонд каждый кадр. Это обеспечивает лучшие результаты для быстро движущихся динамических объектов (например, автомобилей). Однако это имеет значительные затраты производительности. Из-за затрат рекомендуется использовать только один ReflectionProbe с UPDATE_ALWAYS максимум на сцену. Для всех других случаев использования используйте UPDATE_ONCE.
enum AmbientMode: 🔗
AmbientMode AMBIENT_DISABLED = 0
Не применяйте никакого окружающего освещения внутри поля ReflectionProbe, определенного его size.
AmbientMode AMBIENT_ENVIRONMENT = 1
Применить автоматически генерируемое окружающее освещение внутри поля ReflectionProbe, определяемого его size.
AmbientMode AMBIENT_COLOR = 2
Применить пользовательское окружающее освещение внутри поля ReflectionProbe, определяемого его size. См. ambient_color и ambient_color_energy.
Описания свойств
Color ambient_color = Color(0, 0, 0, 1) 🔗
Пользовательский цвет окружения для использования в поле ReflectionProbe, определенном его size. Действует только если ambient_mode — AMBIENT_COLOR.
float ambient_color_energy = 1.0 🔗
Пользовательская энергия окружающего цвета для использования в поле ReflectionProbe, определенном его size. Действует только если ambient_mode равно AMBIENT_COLOR.
AmbientMode ambient_mode = 1 🔗
void set_ambient_mode(value: AmbientMode)
AmbientMode get_ambient_mode()
Цвет окружающего пространства для использования в поле ReflectionProbe, определенном его size. Цвет окружающего пространства будет плавно смешиваться с другими ReflectionProbe и остальной частью сцены (за пределами поля ReflectionProbe, определенного его size).
Определяет расстояние в метрах, на котором зонд сливается с сценой.
Если true, включает проекцию коробки. Это делает отражения более правильными в прямоугольных комнатах, смещая центр отражения в зависимости от расположения камеры.
Примечание: Чтобы лучше подогнать прямоугольные комнаты, которые не выровнены по сетке, можно повернуть узел ReflectionProbe.
Устанавливает маску отбраковки, которая определяет, какие объекты рисуются этим зондом. Каждый VisualInstance3D со слоем, включенным в эту маску отбраковки, будет визуализирован зондом. Лучше всего включать только крупные объекты, которые, вероятно, займут много места в отражении, чтобы сэкономить на стоимости рендеринга.
Это также можно использовать для предотвращения отражения объекта от самого себя (например, ReflectionProbe, центрированный на транспортном средстве).
Если true, вычисляет тени в зонде отражения. Это замедляет рендеринг зонда отражения; вы можете отключить это, если используете UPDATE_ALWAYS update_mode.
Определяет интенсивность отражения. Интенсивность модулирует силу отражения.
Если true, отражения будут игнорировать влияние неба.
Максимальное расстояние от ReflectionProbe, на котором может находиться объект, прежде чем он будет отсечен. Уменьшите это значение, чтобы улучшить производительность, особенно при использовании UPDATE_ALWAYS update_mode.
Примечание: Максимальное расстояние отражения всегда по крайней мере равно протяженности зонда. Это означает, что уменьшение max_distance не всегда будет отсеивать объекты из отражений, особенно если область зонда отражения, определяемая его size, уже велика.
float mesh_lod_threshold = 1.0 🔗
Автоматическое смещение LOD для использования сеток, визуализируемых в ReflectionProbe (это аналог Viewport.mesh_lod_threshold). Более высокие значения будут использовать менее подробные версии сеток, которые имеют сгенерированные вариации LOD. Если установлено значение 0.0, автоматический LOD отключен. Увеличьте mesh_lod_threshold, чтобы улучшить производительность за счет детализации геометрии, особенно при использовании UPDATE_ALWAYS update_mode.
Примечание: mesh_lod_threshold не влияет на диапазоны видимости GeometryInstance3D (также известные как «ручной» LOD или иерархический LOD).
Vector3 origin_offset = Vector3(0, 0, 0) 🔗
Устанавливает смещение начала координат, которое будет использоваться, когда этот ReflectionProbe находится в режиме box_projection. Это может быть установлено на ненулевое значение, чтобы гарантировать, что отражение вписывается в прямоугольную комнату, одновременно уменьшая количество объектов, которые «мешают» отражению.
int reflection_mask = 1048575 🔗
Устанавливает маску отражения, которая определяет, какие объекты имеют отражения, примененные этим зондом. Каждый VisualInstance3D со слоем, включенным в эту маску отражения, будет иметь отражения, примененные этим зондом. См. также cull_mask, который можно использовать для исключения объектов из отражения, при этом оставляя их под воздействием ReflectionProbe.
Vector3 size = Vector3(20, 20, 20) 🔗
Размер зонда отражения. Чем больше размер, тем больше пространства охватывает зонд, что снижает воспринимаемое разрешение. Лучше всего сохранять размер только настолько большим, насколько это необходимо.
Примечание: Чтобы лучше подогнать области, которые не выровнены по сетке, можно вращать узел ReflectionProbe.
UpdateMode update_mode = 0 🔗
void set_update_mode(value: UpdateMode)
UpdateMode get_update_mode()
Устанавливает частоту обновления ReflectionProbe. Может быть UPDATE_ONCE или UPDATE_ALWAYS.