Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

GeometryInstance3D

Наследует: VisualInstance3D < Node3D < Node < Object

Наследуется от: CPUParticles3D, CSGShape3D, GPUParticles3D, Label3D, MeshInstance3D, MultiMeshInstance3D, SpriteBase3D

Базовый узел для визуальных экземпляров на основе геометрии.

Описание

Базовый узел для визуальных экземпляров на основе геометрии. Имеет некоторые общие функции, такие как видимость и пользовательские материалы.

Обучающие материалы

Свойства

ShadowCastingSetting

cast_shadow

1

AABB

custom_aabb

AABB(0, 0, 0, 0, 0, 0)

float

extra_cull_margin

0.0

LightmapScale

gi_lightmap_scale

0

float

gi_lightmap_texel_scale

1.0

GIMode

gi_mode

1

bool

ignore_occlusion_culling

false

float

lod_bias

1.0

Material

material_overlay

Material

material_override

float

transparency

0.0

float

visibility_range_begin

0.0

float

visibility_range_begin_margin

0.0

float

visibility_range_end

0.0

float

visibility_range_end_margin

0.0

VisibilityRangeFadeMode

visibility_range_fade_mode

0

Методы

Variant

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 🔗

Режим, используемый для отбрасывания теней в данном случае.


AABB custom_aabb = AABB(0, 0, 0, 0, 0, 0) 🔗

  • void set_custom_aabb(value: AABB)

  • AABB get_custom_aabb()

Заменяет ограничивающий прямоугольник этого узла пользовательским. Это можно использовать, чтобы избежать дорогостоящего пересчета AABB, который происходит при использовании скелета с MeshInstance3D, или для точного контроля над ограничивающим прямоугольником MeshInstance3D. Чтобы использовать AABB по умолчанию, установите значение AABB со всеми полями, установленными на 0.0. Чтобы избежать отсечения по пирамиде видимости, установите custom_aabb на очень большой AABB, который охватывает весь ваш игровой мир, например, AABB(-10000, -10000, -10000, 20000, 20000, 20000). Чтобы отключить все формы отсечения (включая окклюзию и отсечение слоев), вызовите метод RenderingServer.instance_set_ignore_culling() для объекта GeometryInstance3D с его RID.


float extra_cull_margin = 0.0 🔗

  • void set_extra_cull_margin(value: float)

  • float get_extra_cull_margin()

Дополнительное расстояние, добавленное к ограничивающему прямоугольнику GeometryInstance3D (AABB) для увеличения его области отбраковки.


LightmapScale gi_lightmap_scale = 0 🔗

Устарело: Use gi_lightmap_texel_scale instead.

Плотность текселей, используемая для отображения освещения в LightmapGI.


float gi_lightmap_texel_scale = 1.0 🔗

  • void set_lightmap_texel_scale(value: float)

  • float get_lightmap_texel_scale()

Плотность текселей для использования при отображении освещения в LightmapGI. Большие значения масштаба обеспечивают более высокое разрешение в карте освещения, что может привести к более резким теням для источников света, которые имеют как прямой, так и непрямой свет, запеченный. Однако большие значения масштаба также увеличат пространство, занимаемое сеткой в текстуре карты освещения, что увеличивает требования к памяти, хранению и времени запекания. При использовании одной сетки в разных масштабах рассмотрите возможность корректировки этого значения, чтобы сохранить плотность текселей карты освещения одинаковой для всех сеток.

Например, удвоение gi_lightmap_texel_scale удваивает разрешение текстуры карты освещения для этого объекта на каждой оси, поэтому это учетверит количество текселей.


GIMode gi_mode = 1 🔗

Режим глобального освещения для использования во всей геометрии. Чтобы избежать непоследовательных результатов, используйте режим, который соответствует назначению сетки во время игры (статичный/динамичный).

Примечание: Режим запекания источников света также повлияет на рендеринг глобального освещения. См. Light3D.light_bake_mode.


bool ignore_occlusion_culling = false 🔗

  • void set_ignore_occlusion_culling(value: bool)

  • bool is_ignoring_occlusion_culling()

Если true, отключает отсечение окклюзии для этого экземпляра. Полезно для гизмо, которые должны быть визуализированы даже при использовании отсечения окклюзии.

Примечание: ignore_occlusion_culling не влияет на отсечение усеченной пирамиды (что происходит, когда объект не виден из-за угла камеры). Чтобы избежать отсечения усеченной пирамиды, установите custom_aabb на очень большой AABB, который охватывает весь ваш игровой мир, например, AABB(-10000, -10000, -10000, 20000, 20000, 20000).


float lod_bias = 1.0 🔗

  • void set_lod_bias(value: float)

  • float get_lod_bias()

Изменяет скорость перехода сетки на более низкий уровень детализации. Значение 0 принудительно переведет сетку на самый низкий уровень детализации, значение 1 будет использовать настройки по умолчанию, а более высокие значения будут поддерживать сетку на более высоком уровне детализации на более дальних расстояниях.

Полезно для тестирования переходов уровня детализации в редакторе.


Material material_overlay 🔗

Наложение материала на всю геометрию.

Если материал назначен этому свойству, он будет отображаться поверх любого другого активного материала для всех поверхностей.


Material material_override 🔗

Переопределение материала для всей геометрии.

Если этому свойству назначен материал, он будет использоваться вместо любого материала, установленного в любом слоте материала сетки.


float transparency = 0.0 🔗

  • void set_transparency(value: float)

  • float get_transparency()

Прозрачность, применяемая ко всей геометрии (как множитель существующей прозрачности материалов). 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 🔗

  • void set_visibility_range_begin(value: float)

  • float get_visibility_range_begin()

Начальное расстояние, с которого GeometryInstance3D будет виден, принимая во внимание также vision_range_begin_margin. Значение по умолчанию 0 используется для отключения проверки диапазона.


float visibility_range_begin_margin = 0.0 🔗

  • void set_visibility_range_begin_margin(value: float)

  • float get_visibility_range_begin_margin()

Запас для порога 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 🔗

  • void set_visibility_range_end(value: float)

  • float get_visibility_range_end()

Расстояние, с которого GeometryInstance3D будет скрыт, принимая во внимание также vision_range_end_margin. Значение по умолчанию 0 используется для отключения проверки диапазона.


float visibility_range_end_margin = 0.0 🔗

  • void set_visibility_range_end_margin(value: float)

  • float get_visibility_range_end_margin()

Запас для порога 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 🔗

Управляет тем, какие экземпляры будут исчезать при приближении к границам диапазона видимости.


Описания метода

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.