GeometryInstance3D
Наследует: VisualInstance3D < Node3D < Node < Object
Наследуется от: CPUParticles3D, CSGShape3D, GPUParticles3D, Label3D, MeshInstance3D, MultiMeshInstance3D, SpriteBase3D
Базовый узел для визуальных экземпляров на основе геометрии.
Описание
Базовый узел для визуальных экземпляров на основе геометрии. Имеет некоторые общие функции, такие как видимость и пользовательские материалы.
Обучающие материалы
Свойства
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Методы
get_instance_shader_parameter(name: StringName) const |
|
void |
set_instance_shader_parameter(name: StringName, value: Variant) |
Перечисления
enum ShadowCastingSetting: 🔗
ShadowCastingSetting SHADOW_CASTING_SETTING_OFF = 0
Не будет отбрасывать тени. Используйте это для улучшения производительности для мелкой геометрии, которая вряд ли будет отбрасывать заметные тени (например, мусор).
ShadowCastingSetting SHADOW_CASTING_SETTING_ON = 1
Будет отбрасывать тени от всех видимых граней в GeometryInstance3D.
Будет учитываться отбраковка, поэтому грани, которые не визуализируются, не будут учитываться при отбрасывании тени.
ShadowCastingSetting SHADOW_CASTING_SETTING_DOUBLE_SIDED = 2
Будут отбрасывать тени от всех видимых граней в GeometryInstance3D.
Не будут учитываться отбраковки, поэтому при отбрасывании тени будут учитываться все грани.
ShadowCastingSetting SHADOW_CASTING_SETTING_SHADOWS_ONLY = 3
Покажет только тени, отбрасываемые этим объектом.
Другими словами, сама сетка не будет видна, будут видны только тени, отбрасываемые сеткой.
enum GIMode: 🔗
GIMode GI_MODE_DISABLED = 0
Отключенный режим глобального освещения. Используйте для динамических объектов, которые не вносят вклад в глобальное освещение (например, персонажей). При использовании VoxelGI и SDFGI геометрия будет получать непрямое освещение и отражения, но геометрия не будет учитываться при запекании GI.
GIMode GI_MODE_STATIC = 1
Режим запеченного глобального освещения. Используется для статических объектов, которые способствуют глобальному освещению (например, геометрия уровня). Этот режим GI эффективен при использовании VoxelGI, SDFGI и LightmapGI.
GIMode GI_MODE_DYNAMIC = 2
Режим динамического глобального освещения. Используется для динамических объектов, которые способствуют глобальному освещению. Этот режим GI эффективен только при использовании VoxelGI, но он оказывает большее влияние на производительность, чем GI_MODE_STATIC. При использовании других методов GI это будет действовать так же, как GI_MODE_DISABLED. При использовании LightmapGI объект будет получать непрямое освещение с помощью зондов карты освещения вместо использования запеченной текстуры карты освещения.
enum LightmapScale: 🔗
LightmapScale LIGHTMAP_SCALE_1X = 0
Устарело: Use gi_lightmap_texel_scale instead.
Стандартная плотность текселей для светового отображения с помощью LightmapGI.
LightmapScale LIGHTMAP_SCALE_2X = 1
Устарело: Use gi_lightmap_texel_scale instead.
Умножает плотность текселей на 2× для отображения освещения с помощью LightmapGI. Чтобы обеспечить постоянство плотности текселей, используйте это при масштабировании сетки с коэффициентом от 1,5 до 3,0.
LightmapScale LIGHTMAP_SCALE_4X = 2
Устарело: Use gi_lightmap_texel_scale instead.
Умножает плотность текселей на 4× для отображения освещения с помощью LightmapGI. Чтобы обеспечить постоянство плотности текселей, используйте это при масштабировании сетки с коэффициентом от 3,0 до 6,0.
LightmapScale LIGHTMAP_SCALE_8X = 3
Устарело: Use gi_lightmap_texel_scale instead.
Умножает плотность текселей на 8× для отображения освещения с помощью LightmapGI. Чтобы обеспечить постоянство плотности текселей, используйте это при масштабировании сетки с коэффициентом больше 6,0.
LightmapScale LIGHTMAP_SCALE_MAX = 4
Устарело: Use gi_lightmap_texel_scale instead.
Представляет размер перечисления LightmapScale.
enum VisibilityRangeFadeMode: 🔗
VisibilityRangeFadeMode VISIBILITY_RANGE_FADE_DISABLED = 0
Не будет затухать ни сам, ни его видимые зависимости, вместо этого будет использоваться гистерезис. Это самый быстрый подход к ручному LOD, но он может привести к заметным переходам LOD в зависимости от того, как созданы сетки LOD. Для получения дополнительной информации см. vision_range_begin и Node3D.visibility_parent.
VisibilityRangeFadeMode VISIBILITY_RANGE_FADE_SELF = 1
Будет постепенно исчезать при достижении границ своего диапазона видимости. Это медленнее, чем VISIBILITY_RANGE_FADE_DISABLED, но может обеспечить более плавные переходы. Диапазон постепенного исчезновения определяется vision_range_begin_margin и vision_range_end_margin.
Примечание: Поддерживается только при использовании метода рендеринга Forward+. При использовании метода рендеринга Mobile или Compatibility этот режим действует как VISIBILITY_RANGE_FADE_DISABLED, но с отключенным гистерезисом.
VisibilityRangeFadeMode VISIBILITY_RANGE_FADE_DEPENDENCIES = 2
Будет постепенно проявлять свои зависимости видимости (см. Node3D.visibility_parent) при достижении границ своего собственного диапазона видимости. Это медленнее, чем VISIBILITY_RANGE_FADE_DISABLED, но может обеспечить более плавные переходы. Диапазон затухания определяется vision_range_begin_margin и vision_range_end_margin.
Примечание: Поддерживается только при использовании метода рендеринга Forward+. При использовании метода рендеринга Mobile или Compatibility этот режим действует как VISIBILITY_RANGE_FADE_DISABLED, но с отключенным гистерезисом.
Описания свойств
ShadowCastingSetting cast_shadow = 1 🔗
void set_cast_shadows_setting(value: ShadowCastingSetting)
ShadowCastingSetting get_cast_shadows_setting()
Режим, используемый для отбрасывания теней в данном случае.
AABB custom_aabb = AABB(0, 0, 0, 0, 0, 0) 🔗
Переопределяет ограничивающий прямоугольник этого узла на пользовательский. Это можно использовать, чтобы избежать дорогостоящего пересчета AABB, который происходит, когда скелет используется с MeshInstance3D, или чтобы иметь точный контроль над ограничивающим прямоугольником MeshInstance3D. Чтобы использовать AABB по умолчанию, установите значение AABB со всеми полями, установленными на 0.0. Чтобы избежать отбраковки по усеченному контуру, установите custom_aabb на очень большой AABB, который охватывает весь ваш игровой мир, например AABB(-10000, -10000, -10000, 20000, 20000, 20000). Чтобы отключить все формы отсечения (включая отсечение окклюзии), вызовите RenderingServer.instance_set_ignore_culling() для RID GeometryInstance3D.
float extra_cull_margin = 0.0 🔗
Дополнительное расстояние, добавленное к ограничивающему прямоугольнику GeometryInstance3D (AABB) для увеличения его области отбраковки.
LightmapScale gi_lightmap_scale = 0 🔗
void set_lightmap_scale(value: LightmapScale)
LightmapScale get_lightmap_scale()
Устарело: Use gi_lightmap_texel_scale instead.
Плотность текселей, используемая для отображения освещения в LightmapGI.
float gi_lightmap_texel_scale = 1.0 🔗
Плотность текселей для использования при отображении освещения в LightmapGI. Большие значения масштаба обеспечивают более высокое разрешение в карте освещения, что может привести к более резким теням для источников света, которые имеют как прямой, так и непрямой свет, запеченный. Однако большие значения масштаба также увеличат пространство, занимаемое сеткой в текстуре карты освещения, что увеличивает требования к памяти, хранению и времени запекания. При использовании одной сетки в разных масштабах рассмотрите возможность корректировки этого значения, чтобы сохранить плотность текселей карты освещения одинаковой для всех сеток.
Например, удвоение gi_lightmap_texel_scale удваивает разрешение текстуры карты освещения для этого объекта на каждой оси, поэтому это учетверит количество текселей.
Режим глобального освещения для использования во всей геометрии. Чтобы избежать непоследовательных результатов, используйте режим, который соответствует назначению сетки во время игры (статичный/динамичный).
Примечание: Режим запекания источников света также повлияет на рендеринг глобального освещения. См. Light3D.light_bake_mode.
bool ignore_occlusion_culling = false 🔗
Если true, отключает отсечение окклюзии для этого экземпляра. Полезно для гизмо, которые должны быть визуализированы даже при использовании отсечения окклюзии.
Примечание: ignore_occlusion_culling не влияет на отсечение усеченной пирамиды (что происходит, когда объект не виден из-за угла камеры). Чтобы избежать отсечения усеченной пирамиды, установите custom_aabb на очень большой AABB, который охватывает весь ваш игровой мир, например, AABB(-10000, -10000, -10000, 20000, 20000, 20000).
Изменяет скорость перехода сетки на более низкий уровень детализации. Значение 0 принудительно переведет сетку на самый низкий уровень детализации, значение 1 будет использовать настройки по умолчанию, а более высокие значения будут поддерживать сетку на более высоком уровне детализации на более дальних расстояниях.
Полезно для тестирования переходов уровня детализации в редакторе.
Наложение материала на всю геометрию.
Если материал назначен этому свойству, он будет отображаться поверх любого другого активного материала для всех поверхностей.
Переопределение материала для всей геометрии.
Если этому свойству назначен материал, он будет использоваться вместо любого материала, установленного в любом слоте материала сетки.
Прозрачность, применяемая ко всей геометрии (как множитель существующей прозрачности материалов). 0.0 полностью непрозрачен, а 1.0 полностью прозрачен. Значения больше 0.0 (исключительно) заставят материалы геометрии проходить через прозрачный конвейер, который медленнее рендерится и может вызывать проблемы рендеринга из-за неправильной сортировки прозрачности. Однако, в отличие от использования прозрачного материала, установка transparent на значение больше 0.0 (исключительно) не отключит рендеринг теней.
В пространственных (Spatial) шейдерах 1.0 - transparent устанавливается как значение по умолчанию встроенного ALPHA.
Примечание: transparency ограничена между 0.0 и 1.0, поэтому это свойство нельзя использовать для того, чтобы сделать прозрачные материалы более непрозрачными, чем они есть изначально.
Примечание: Поддерживается только при использовании метода рендеринга Forward+. При использовании метода рендеринга Mobile или Compatibility transparency игнорируется и всегда считается равной 0.0.
float visibility_range_begin = 0.0 🔗
Начальное расстояние, с которого GeometryInstance3D будет виден, принимая во внимание также vision_range_begin_margin. Значение по умолчанию 0 используется для отключения проверки диапазона.
float visibility_range_begin_margin = 0.0 🔗
Запас для порога vision_range_begin. GeometryInstance3D изменит свое состояние видимости только тогда, когда оно превысит или упадет ниже порога vision_range_begin на эту величину.
Если vision_range_fade_mode равно VISIBILITY_RANGE_FADE_DISABLED, это действует как расстояние гистерезиса. Если vision_range_fade_mode равно VISIBILITY_RANGE_FADE_SELF или VISIBILITY_RANGE_FADE_DEPENDENCIES, это действует как расстояние перехода с затуханием и должно быть установлено на значение больше 0.0, чтобы эффект был заметен.
float visibility_range_end = 0.0 🔗
Расстояние, с которого GeometryInstance3D будет скрыт, принимая во внимание также vision_range_end_margin. Значение по умолчанию 0 используется для отключения проверки диапазона.
float visibility_range_end_margin = 0.0 🔗
Запас для порога vision_range_end. GeometryInstance3D изменит свое состояние видимости только тогда, когда оно превысит или упадет ниже порога vision_range_end на эту величину.
Если vision_range_fade_mode равно VISIBILITY_RANGE_FADE_DISABLED, это действует как расстояние гистерезиса. Если vision_range_fade_mode равно VISIBILITY_RANGE_FADE_SELF или VISIBILITY_RANGE_FADE_DEPENDENCIES, это действует как расстояние перехода с затуханием и должно быть установлено на значение больше 0.0, чтобы эффект был заметен.
VisibilityRangeFadeMode visibility_range_fade_mode = 0 🔗
void set_visibility_range_fade_mode(value: VisibilityRangeFadeMode)
VisibilityRangeFadeMode get_visibility_range_fade_mode()
Управляет тем, какие экземпляры будут исчезать при приближении к границам диапазона видимости.
Описания метода
Variant get_instance_shader_parameter(name: StringName) const 🔗
Получить значение параметра шейдера, установленное для данного экземпляра.
void set_instance_shader_parameter(name: StringName, value: Variant) 🔗
Установите значение шейдерной униформы только для этого экземпляра (per-instance униформа). См. также ShaderMaterial.set_shader_parameter(), чтобы назначить униформу для всех экземпляров, использующих один и тот же ShaderMaterial.
Примечание: Чтобы шейдерную униформу можно было назначать для каждого экземпляра, она должна быть определена с помощью instance uniform ..., а не uniform ... в коде шейдера.
Примечание: name чувствительна к регистру и должна точно соответствовать имени униформы в коде (а не заглавному имени в инспекторе).
Примечание: Униформы шейдера для каждого экземпляра доступны только в шейдерах Spatial и CanvasItem, но не для шейдеров Fog, Sky или Particles.