GeometryInstance3D
Базовый узел для визуальных экземпляров на основе геометрии.
Базовый узел для визуальных экземпляров на основе геометрии.
Базовый узел для визуальных экземпляров на основе геометрии. Имеет некоторые общие функции, такие как видимость и пользовательские материалы.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
GeometryInstance3DКонструктор
public GeometryInstance3D();Свойства16
CastShadowСвойство
public GeometryInstance3D.ShadowCastingSetting CastShadow { get; set; }Управляет отбрасыванием тени геометрией, а не её обычной видимостью и не приёмом теней. Off убирает тень объекта; источник также должен иметь ShadowEnabled. В примере проверен DirectionalLight3D в Compatibility.
CustomAabbСвойство
public Aabb CustomAabb { get; set; }Пользовательские локальные границы для отсечения экземпляра рендеринга. Ненулевой Aabb заменяет вычисленные границы; default(Aabb) снимает замену. Затем применяется ExtraCullMargin, и результат трансформируется в мировой базис. Не изменяет вершины, Mesh.GetAabb(), VisualInstance3D.GetAabb() или коллизию. Слишком большой объём ухудшает отсечение и не является общим отключением проверки видимости.
ExtraCullMarginСвойство
public float ExtraCullMargin { get; set; }Дополнительный запас границ для culling геометрии. Полезен, когда vertex shader выводит вершины за исходный AABB. Не меняет CPU-вершины, исходный Mesh.GetAabb или CollisionShape3D. Подбирайте запас по максимально возможному смещению; в примере 2.
GILightmapScaleСвойство · Устарело
public GeometryInstance3D.LightmapScale GILightmapScale { get; set; }Плотность текселей, используемая для отображения освещения в LightmapGI.
GILightmapTexelScaleСвойство
public float GILightmapTexelScale { get; set; }Плотность текселей для использования при отображении освещения в LightmapGI. Большие значения масштаба обеспечивают более высокое разрешение в карте освещения, что может привести к более резким теням для источников света, которые имеют как прямой, так и непрямой свет, запеченный. Однако большие значения масштаба также увеличат пространство, занимаемое сеткой в текстуре карты освещения, что увеличивает требования к памяти, хранению и времени запекания. При использовании одной сетки в разных масштабах рассмотрите возможность корректировки этого значения, чтобы сохранить плотность текселей карты освещения одинаковой для всех сеток.
Например, удвоение GeometryInstance3D.GILightmapTexelScale удваивает разрешение текстуры карты освещения для этого объекта на каждой оси, поэтому это учетверит количество текселей.
GIModeСвойство
public GeometryInstance3D.GIModeEnum GIMode { get; set; }Режим глобального освещения для использования во всей геометрии. Чтобы избежать непоследовательных результатов, используйте режим, который соответствует назначению сетки во время игры (статичный/динамичный).
Примечание: Режим запекания источников света также повлияет на рендеринг глобального освещения. См. Light3D.LightBakeMode.
IgnoreOcclusionCullingСвойство
public bool IgnoreOcclusionCulling { get; set; }Исключает геометрию из occlusion-отсечения. В примере возвращает скрытую сферу в список отрисовки за стеной; это не делает её видимой сквозь непрозрачную стену и не отменяет все остальные виды culling.
LodBiasСвойство
public float LodBias { get; set; }Множитель выбора mesh LOD для экземпляра. В проверке увеличение с 1 до 8 сохраняет больше примитивов на дальней дистанции. Не заменяет отсутствующие LOD-данные, не меняет физическую форму и не задаёт фиксированную дистанцию переключения.
MaterialOverlayСвойство
public Material MaterialOverlay { get; set; }Дополнительный материал, отрисовываемый поверх основного отдельным проходом. Не заменяет MaterialOverride и не возвращается GetActiveMaterial. Проверен прозрачный Alpha overlay; настройте прозрачность, глубину и стоимость дополнительного прохода отдельно.
MaterialOverrideСвойство
public Material MaterialOverride { get; set; }Основной материал для всех поверхностей экземпляра с приоритетом над surface override и материалами Mesh. Назначение существующего ресурса не делает его уникальным. null возвращает выбор материалов поверхностей.
TransparencyСвойство
public float Transparency { get; set; }Прозрачность применяется ко всей геометрии (в качестве множителя существующей транспарентности материалов). 0.0 полностью непрозрачна, в то время как 1.0 - полностью прозрачны. 0.0 (исключительно) заставит материалы геометрии пройти через прозрачный трубопровод, который медленнее доставлять и может проявлять проблемы из-за неправильной транспарентности сортировки. GeometryInstance3D.Transparency на величину, превышающую 0.0 (исключительно) отключит тень.
В пространственных теннисах, 1.0 - transparency установлен в качестве значения по умолчанию ALPHA Встроенный.
Примечание: GeometryInstance3D.Transparency зажимается между 0.0 и 1.0Таким образом, это имущество не может быть использовано для того, чтобы сделать прозрачные материалы более непрозрачными, чем они были изначально.
Примечание: Поддержку поддерживают только при использовании метода трансляции " Вперед+ " . GeometryInstance3D.Transparency игнорируется и считается, что 0.0.
VisibilityRangeBeginСвойство
public float VisibilityRangeBegin { get; set; }Нижняя граница видимости по дистанции от камеры до преобразованного центра AABB. Ноль отключает нижний предел. Скрытие по диапазону не останавливает _Process, физику и не выгружает ресурсы. При нулевых margin на точной общей границе обе соседние модели могут быть видимы.
VisibilityRangeBeginMarginСвойство
public float VisibilityRangeBeginMargin { get; set; }Запас около нижней границы. При отключённом fade используется для гистерезиса переключения с учётом предыдущего состояния. Это не автоматически прозрачный переход. Настраивайте вместе с верхним диапазоном соседней модели.
VisibilityRangeEndСвойство
public float VisibilityRangeEnd { get; set; }Верхняя граница дистанционной видимости; ноль отключает верхний предел. Измеряется до преобразованного центра AABB, не обязательно до origin Entity. Это выбор видимой геометрии, не стриминг и не автоматическое упрощение треугольников.
VisibilityRangeEndMarginСвойство
public float VisibilityRangeEndMargin { get; set; }Запас около верхней границы. При отключённом fade участвует в гистерезисе; в режимах fade задаёт полосу перехода. Само значение не включает прозрачное исчезновение и не выключает обработку Entity.
VisibilityRangeFadeModeСвойство
public GeometryInstance3D.VisibilityRangeFadeModeEnum VisibilityRangeFadeMode { get; set; }Режим перехода диапазонов. Disabled переключает видимость без прозрачного fade. По исходникам прозрачные Self/Dependencies требуют Forward+; не рассчитывайте на них в Compatibility или Mobile. Нативный пример проверяет только Disabled с нулевыми margin.
Методы34
GetCastShadowsSettingGeometryInstance3D.ShadowCastingSetting
public GeometryInstance3D.ShadowCastingSetting GetCastShadowsSetting();GeometryInstance3D.ShadowCastingSettingGetCustomAabbAabb
public Aabb GetCustomAabb();Возвращает сохранённое значение CustomAabb, а не окончательные границы серверного отсечения. Прямой вызов RenderingServer.InstanceSetCustomAabb не обновляет это значение обёртки.
AabbЗаданный локальный Aabb; default(Aabb), если пользовательская замена не настроена через обёртку. Это не запрос автоматически вычисленного объёма.
GetExtraCullMarginfloat
public float GetExtraCullMargin();Возвращает сохранённый дополнительный запас локальных границ. Прямой вызов RenderingServer.InstanceSetExtraVisibilityMargin меняет серверное состояние, но не это значение обёртки.
floatНастроенный запас ExtraCullMargin; по умолчанию 0. Это не полный размер границ и не величина в мировых координатах после масштабирования.
GetGIModeGeometryInstance3D.GIModeEnum
public GeometryInstance3D.GIModeEnum GetGIMode();GeometryInstance3D.GIModeEnumGetInstanceShaderParameterVariant
public Variant GetInstanceShaderParameter(StringName name);Читает эффективное значение instance uniform этой геометрии. После снятия override через Nil в проверенном примере возвращается shader-default White. Это отличается от ShaderMaterial.GetShaderParameter, который без сохранённого override возвращает Nil.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | — |
nameИмя объявленного instance uniform с учётом регистра.
VariantVariant текущего значения параметра. Для surface_tint после сброса проверен Color White; для неизвестных имён не предполагайте такой же default.
GetLightmapScaleGeometryInstance3D.LightmapScale
public GeometryInstance3D.LightmapScale GetLightmapScale();GeometryInstance3D.LightmapScaleGetLightmapTexelScalefloat
public float GetLightmapTexelScale();floatGetLodBiasfloat
public float GetLodBias();floatGetMaterialOverlayMaterial
public Material GetMaterialOverlay();Дополнительный материал отдельного прохода. Не заменяет базовый MaterialOverride и не возвращается как GetActiveMaterial. Подчиняется своей очереди, смешиванию и глубине: непрозрачный overlay не гарантирует положение сверху. В проверке прозрачный alpha-overlay смешивается с базой.
MaterialНазначенный Material или null; без создания копии.
GetMaterialOverrideMaterial
public Material GetMaterialOverride();Базовый материал всего экземпляра, приоритетнее override отдельных поверхностей и материалов Mesh. Назначение не создаёт отдельную копию ресурса. null возвращает выбор по поверхностям; MaterialOverlay остаётся отдельным проходом.
MaterialНазначенный Material или null; без создания копии.
GetTransparencyfloat
public float GetTransparency();floatGetVisibilityRangeBeginfloat
public float GetVisibilityRangeBegin();floatGetVisibilityRangeBeginMarginfloat
public float GetVisibilityRangeBeginMargin();floatGetVisibilityRangeEndfloat
public float GetVisibilityRangeEnd();floatGetVisibilityRangeEndMarginfloat
public float GetVisibilityRangeEndMargin();floatGetVisibilityRangeFadeModeGeometryInstance3D.VisibilityRangeFadeModeEnum
public GeometryInstance3D.VisibilityRangeFadeModeEnum GetVisibilityRangeFadeMode();GeometryInstance3D.VisibilityRangeFadeModeEnumIsIgnoringOcclusionCullingbool
public bool IsIgnoringOcclusionCulling();boolSetCastShadowsSettingvoid
public void SetCastShadowsSetting(GeometryInstance3D.ShadowCastingSetting shadowCastingSetting);| Имя | Тип | По умолчанию |
|---|---|---|
shadowCastingSetting | GeometryInstance3D.ShadowCastingSetting | — |
SetCustomAabbvoid
public void SetCustomAabb(Aabb aabb);Сохраняет CustomAabb и передаёт его экземпляру RenderingServer. Объём задаётся в локальных координатах. Для ветровой или другой GPU-деформации охватите все положения вершин: движок не выводит эти смещения из кода шейдера.
| Имя | Тип | По умолчанию |
|---|---|---|
aabb | Aabb | — |
aabbЛокальные пользовательские границы; default(Aabb) возвращает автоматическое определение границ. Это значение не записывается в исходный Mesh.
SetExtraCullMarginvoid
public void SetExtraCullMargin(float margin);Расширяет локальные границы рендеринга во все стороны до применения трансформации экземпляра. Помогает учитывать смещения вершин в шейдере; при уменьшении масштаба мировой запас тоже уменьшается. Не изменяет исходные вершины, GetAabb() или коллизию. Отрицательное значение отклоняется с ошибкой движка, прежняя настройка сохраняется.
| Имя | Тип | По умолчанию |
|---|---|---|
margin | float | — |
marginНеотрицательный запас в локальных единицах; 0 снимает дополнительное расширение. При мировом смещении учитывайте масштаб и поворот, а не только значение амплитуды.
SetGIModevoid
public void SetGIMode(GeometryInstance3D.GIModeEnum mode);| Имя | Тип | По умолчанию |
|---|---|---|
mode | GeometryInstance3D.GIModeEnum | — |
SetIgnoreOcclusionCullingvoid
public void SetIgnoreOcclusionCulling(bool ignoreCulling);| Имя | Тип | По умолчанию |
|---|---|---|
ignoreCulling | bool | — |
SetInstanceShaderParametervoid
public void SetInstanceShaderParameter(StringName name, Variant value);Задаёт instance uniform для этой геометрии, сохраняя общий ShaderMaterial у других мешей. Параметр должен быть объявлен как instance uniform. Nil снимает override и восстанавливает shader-default этого параметра.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | — |
value | Variant | — |
nameТочное имя instance uniform, например surface_tint. Обычный uniform height_scale из примера задаётся на ShaderMaterial.
valueСовместимое значение Variant; пример передаёт Color для vec4 с source_color. default(Variant) снимает индивидуальное значение, не удаляя общий материал.
SetLightmapScalevoid
public void SetLightmapScale(GeometryInstance3D.LightmapScale scale);| Имя | Тип | По умолчанию |
|---|---|---|
scale | GeometryInstance3D.LightmapScale | — |
SetLightmapTexelScalevoid
public void SetLightmapTexelScale(float scale);| Имя | Тип | По умолчанию |
|---|---|---|
scale | float | — |
SetLodBiasvoid
public void SetLodBias(float bias);| Имя | Тип | По умолчанию |
|---|---|---|
bias | float | — |
SetMaterialOverlayvoid
public void SetMaterialOverlay(Material material);Дополнительный материал отдельного прохода. Не заменяет базовый MaterialOverride и не возвращается как GetActiveMaterial. Подчиняется своей очереди, смешиванию и глубине: непрозрачный overlay не гарантирует положение сверху. В проверке прозрачный alpha-overlay смешивается с базой.
| Имя | Тип | По умолчанию |
|---|---|---|
material | Material | — |
materialМатериал для назначения; null снимает этот override/overlay. Удерживайте ресурс, пока он используется.
SetMaterialOverridevoid
public void SetMaterialOverride(Material material);Базовый материал всего экземпляра, приоритетнее override отдельных поверхностей и материалов Mesh. Назначение не создаёт отдельную копию ресурса. null возвращает выбор по поверхностям; MaterialOverlay остаётся отдельным проходом.
| Имя | Тип | По умолчанию |
|---|---|---|
material | Material | — |
materialМатериал для назначения; null снимает этот override/overlay. Удерживайте ресурс, пока он используется.
SetTransparencyvoid
public void SetTransparency(float transparency);| Имя | Тип | По умолчанию |
|---|---|---|
transparency | float | — |
SetVisibilityRangeBeginvoid
public void SetVisibilityRangeBegin(float distance);| Имя | Тип | По умолчанию |
|---|---|---|
distance | float | — |
SetVisibilityRangeBeginMarginvoid
public void SetVisibilityRangeBeginMargin(float distance);| Имя | Тип | По умолчанию |
|---|---|---|
distance | float | — |
SetVisibilityRangeEndvoid
public void SetVisibilityRangeEnd(float distance);| Имя | Тип | По умолчанию |
|---|---|---|
distance | float | — |
SetVisibilityRangeEndMarginvoid
public void SetVisibilityRangeEndMargin(float distance);| Имя | Тип | По умолчанию |
|---|---|---|
distance | float | — |
SetVisibilityRangeFadeModevoid
public void SetVisibilityRangeFadeMode(GeometryInstance3D.VisibilityRangeFadeModeEnum mode);| Имя | Тип | По умолчанию |
|---|---|---|
mode | GeometryInstance3D.VisibilityRangeFadeModeEnum | — |
GeometryInstance3D.GIModeEnum
| Значение | Описание |
|---|---|
Disabled = 0 | Отключенный режим глобального освещения. Используйте для динамических объектов, которые не вносят вклад в глобальное освещение (например, персонажей). При использовании |
Dynamic = 2 | Режим динамического глобального освещения. Используется для динамических объектов, которые способствуют глобальному освещению. Этот режим GI эффективен только при использовании |
Static = 1 | Режим запеченного глобального освещения. Используется для статических объектов, которые способствуют глобальному освещению (например, геометрия уровня). Этот режим GI эффективен при использовании |
GeometryInstance3D.LightmapScale
| Значение | Описание |
|---|---|
Max = 4 | Представляет размер перечисления |
Scale1X = 0 | Стандартная плотность текселей для светового отображения с помощью |
Scale2X = 1 | Умножает плотность текселей на 2× для отображения освещения с помощью |
Scale4X = 2 | Умножает плотность текселей на 4× для отображения освещения с помощью |
Scale8X = 3 | Умножает плотность текселей на 8× для отображения освещения с помощью |
GeometryInstance3D.ShadowCastingSetting
| Значение | Описание |
|---|---|
DoubleSided = 2 | Будут отбрасывать тени от всех видимых граней в GeometryInstance3D. Не будут учитываться отбраковки, поэтому при отбрасывании тени будут учитываться все грани. |
Off = 0 | Не будет отбрасывать тени. Используйте это для улучшения производительности для мелкой геометрии, которая вряд ли будет отбрасывать заметные тени (например, мусор). |
On = 1 | Будет отбрасывать тени от всех видимых граней в GeometryInstance3D. Будет учитываться отбраковка, поэтому грани, которые не визуализируются, не будут учитываться при отбрасывании тени. |
ShadowsOnly = 3 | Покажет только тени, отбрасываемые этим объектом. Другими словами, сама сетка не будет видна, будут видны только тени, отбрасываемые сеткой. |
GeometryInstance3D.VisibilityRangeFadeModeEnum
| Значение | Описание |
|---|---|
Dependencies = 2 | иссякнет в его зависимости от видимости (см. |
Disabled = 0 | Вместо этого будет использоваться гистерез. Это самый быстрый подход к ручной работе с LOD, но это может привести к заметным изменениям в LOD в зависимости от того, как написаны LOD meshes. ВИЗИТ ВИДИМОСТЬ |
Self = 1 | Это происходит медленнее, чем в случае, когда он находится в зоне видимости. |