reckfellENGINE

GeometryInstance3D

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

На этой странице
class GeometryInstance3DReckfellSharpНаследует VisualInstance3D

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

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

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

GeometryInstance3DКонструктор
# GeometryInstance3D
C#
public GeometryInstance3D();

Свойства16

CastShadowСвойство
# CastShadow
C#
public GeometryInstance3D.ShadowCastingSetting CastShadow { get; set; }

Управляет отбрасыванием тени геометрией, а не её обычной видимостью и не приёмом теней. Off убирает тень объекта; источник также должен иметь ShadowEnabled. В примере проверен DirectionalLight3D в Compatibility.

CustomAabbСвойство
# CustomAabb
C#
public Aabb CustomAabb { get; set; }

Пользовательские локальные границы для отсечения экземпляра рендеринга. Ненулевой Aabb заменяет вычисленные границы; default(Aabb) снимает замену. Затем применяется ExtraCullMargin, и результат трансформируется в мировой базис. Не изменяет вершины, Mesh.GetAabb(), VisualInstance3D.GetAabb() или коллизию. Слишком большой объём ухудшает отсечение и не является общим отключением проверки видимости.

ExtraCullMarginСвойство
# ExtraCullMargin
C#
public float ExtraCullMargin { get; set; }

Дополнительный запас границ для culling геометрии. Полезен, когда vertex shader выводит вершины за исходный AABB. Не меняет CPU-вершины, исходный Mesh.GetAabb или CollisionShape3D. Подбирайте запас по максимально возможному смещению; в примере 2.

GILightmapScaleСвойство · Устарело
# GILightmapScale
C#
public GeometryInstance3D.LightmapScale GILightmapScale { get; set; }

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

GILightmapTexelScaleСвойство
# GILightmapTexelScale
C#
public float GILightmapTexelScale { get; set; }

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

GIModeСвойство
# GIMode
C#
public GeometryInstance3D.GIModeEnum GIMode { get; set; }

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

IgnoreOcclusionCullingСвойство
# IgnoreOcclusionCulling
C#
public bool IgnoreOcclusionCulling { get; set; }

Исключает геометрию из occlusion-отсечения. В примере возвращает скрытую сферу в список отрисовки за стеной; это не делает её видимой сквозь непрозрачную стену и не отменяет все остальные виды culling.

LodBiasСвойство
# LodBias
C#
public float LodBias { get; set; }

Множитель выбора mesh LOD для экземпляра. В проверке увеличение с 1 до 8 сохраняет больше примитивов на дальней дистанции. Не заменяет отсутствующие LOD-данные, не меняет физическую форму и не задаёт фиксированную дистанцию переключения.

MaterialOverlayСвойство
# MaterialOverlay
C#
public Material MaterialOverlay { get; set; }

Дополнительный материал, отрисовываемый поверх основного отдельным проходом. Не заменяет MaterialOverride и не возвращается GetActiveMaterial. Проверен прозрачный Alpha overlay; настройте прозрачность, глубину и стоимость дополнительного прохода отдельно.

MaterialOverrideСвойство
# MaterialOverride
C#
public Material MaterialOverride { get; set; }

Основной материал для всех поверхностей экземпляра с приоритетом над surface override и материалами Mesh. Назначение существующего ресурса не делает его уникальным. null возвращает выбор материалов поверхностей.

TransparencyСвойство
# Transparency
C#
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Свойство
# VisibilityRangeBegin
C#
public float VisibilityRangeBegin { get; set; }

Нижняя граница видимости по дистанции от камеры до преобразованного центра AABB. Ноль отключает нижний предел. Скрытие по диапазону не останавливает _Process, физику и не выгружает ресурсы. При нулевых margin на точной общей границе обе соседние модели могут быть видимы.

VisibilityRangeBeginMarginСвойство
# VisibilityRangeBeginMargin
C#
public float VisibilityRangeBeginMargin { get; set; }

Запас около нижней границы. При отключённом fade используется для гистерезиса переключения с учётом предыдущего состояния. Это не автоматически прозрачный переход. Настраивайте вместе с верхним диапазоном соседней модели.

VisibilityRangeEndСвойство
# VisibilityRangeEnd
C#
public float VisibilityRangeEnd { get; set; }

Верхняя граница дистанционной видимости; ноль отключает верхний предел. Измеряется до преобразованного центра AABB, не обязательно до origin Entity. Это выбор видимой геометрии, не стриминг и не автоматическое упрощение треугольников.

VisibilityRangeEndMarginСвойство
# VisibilityRangeEndMargin
C#
public float VisibilityRangeEndMargin { get; set; }

Запас около верхней границы. При отключённом fade участвует в гистерезисе; в режимах fade задаёт полосу перехода. Само значение не включает прозрачное исчезновение и не выключает обработку Entity.

VisibilityRangeFadeModeСвойство
# VisibilityRangeFadeMode
C#
public GeometryInstance3D.VisibilityRangeFadeModeEnum VisibilityRangeFadeMode { get; set; }

Режим перехода диапазонов. Disabled переключает видимость без прозрачного fade. По исходникам прозрачные Self/Dependencies требуют Forward+; не рассчитывайте на них в Compatibility или Mobile. Нативный пример проверяет только Disabled с нулевыми margin.

Методы34

GetCastShadowsSettingGeometryInstance3D.ShadowCastingSetting
# GetCastShadowsSetting
C#
public GeometryInstance3D.ShadowCastingSetting GetCastShadowsSetting();
Возвращает GeometryInstance3D.ShadowCastingSetting
GetCustomAabbAabb
# GetCustomAabb
C#
public Aabb GetCustomAabb();

Возвращает сохранённое значение CustomAabb, а не окончательные границы серверного отсечения. Прямой вызов RenderingServer.InstanceSetCustomAabb не обновляет это значение обёртки.

Возвращает Aabb

Заданный локальный Aabb; default(Aabb), если пользовательская замена не настроена через обёртку. Это не запрос автоматически вычисленного объёма.

GetExtraCullMarginfloat
# GetExtraCullMargin
C#
public float GetExtraCullMargin();

Возвращает сохранённый дополнительный запас локальных границ. Прямой вызов RenderingServer.InstanceSetExtraVisibilityMargin меняет серверное состояние, но не это значение обёртки.

Возвращает float

Настроенный запас ExtraCullMargin; по умолчанию 0. Это не полный размер границ и не величина в мировых координатах после масштабирования.

GetGIModeGeometryInstance3D.GIModeEnum
# GetGIMode
C#
public GeometryInstance3D.GIModeEnum GetGIMode();
Возвращает GeometryInstance3D.GIModeEnum
GetInstanceShaderParameterVariant
# GetInstanceShaderParameter
C#
public Variant GetInstanceShaderParameter(StringName name);

Читает эффективное значение instance uniform этой геометрии. После снятия override через Nil в проверенном примере возвращается shader-default White. Это отличается от ShaderMaterial.GetShaderParameter, который без сохранённого override возвращает Nil.

Параметры
ИмяТипПо умолчанию
nameStringName—
name

Имя объявленного instance uniform с учётом регистра.

Возвращает Variant

Variant текущего значения параметра. Для surface_tint после сброса проверен Color White; для неизвестных имён не предполагайте такой же default.

GetLightmapScaleGeometryInstance3D.LightmapScale
# GetLightmapScale
C#
public GeometryInstance3D.LightmapScale GetLightmapScale();
Возвращает GeometryInstance3D.LightmapScale
GetLightmapTexelScalefloat
# GetLightmapTexelScale
C#
public float GetLightmapTexelScale();
Возвращает float
GetLodBiasfloat
# GetLodBias
C#
public float GetLodBias();
Возвращает float
GetMaterialOverlayMaterial
# GetMaterialOverlay
C#
public Material GetMaterialOverlay();

Дополнительный материал отдельного прохода. Не заменяет базовый MaterialOverride и не возвращается как GetActiveMaterial. Подчиняется своей очереди, смешиванию и глубине: непрозрачный overlay не гарантирует положение сверху. В проверке прозрачный alpha-overlay смешивается с базой.

Возвращает Material

Назначенный Material или null; без создания копии.

GetMaterialOverrideMaterial
# GetMaterialOverride
C#
public Material GetMaterialOverride();

Базовый материал всего экземпляра, приоритетнее override отдельных поверхностей и материалов Mesh. Назначение не создаёт отдельную копию ресурса. null возвращает выбор по поверхностям; MaterialOverlay остаётся отдельным проходом.

Возвращает Material

Назначенный Material или null; без создания копии.

GetTransparencyfloat
# GetTransparency
C#
public float GetTransparency();
Возвращает float
GetVisibilityRangeBeginfloat
# GetVisibilityRangeBegin
C#
public float GetVisibilityRangeBegin();
Возвращает float
GetVisibilityRangeBeginMarginfloat
# GetVisibilityRangeBeginMargin
C#
public float GetVisibilityRangeBeginMargin();
Возвращает float
GetVisibilityRangeEndfloat
# GetVisibilityRangeEnd
C#
public float GetVisibilityRangeEnd();
Возвращает float
GetVisibilityRangeEndMarginfloat
# GetVisibilityRangeEndMargin
C#
public float GetVisibilityRangeEndMargin();
Возвращает float
GetVisibilityRangeFadeModeGeometryInstance3D.VisibilityRangeFadeModeEnum
# GetVisibilityRangeFadeMode
C#
public GeometryInstance3D.VisibilityRangeFadeModeEnum GetVisibilityRangeFadeMode();
Возвращает GeometryInstance3D.VisibilityRangeFadeModeEnum
IsIgnoringOcclusionCullingbool
# IsIgnoringOcclusionCulling
C#
public bool IsIgnoringOcclusionCulling();
Возвращает bool
SetCastShadowsSettingvoid
# SetCastShadowsSetting
C#
public void SetCastShadowsSetting(GeometryInstance3D.ShadowCastingSetting shadowCastingSetting);
Параметры
ИмяТипПо умолчанию
shadowCastingSettingGeometryInstance3D.ShadowCastingSetting—
SetCustomAabbvoid
# SetCustomAabb
C#
public void SetCustomAabb(Aabb aabb);

Сохраняет CustomAabb и передаёт его экземпляру RenderingServer. Объём задаётся в локальных координатах. Для ветровой или другой GPU-деформации охватите все положения вершин: движок не выводит эти смещения из кода шейдера.

Параметры
ИмяТипПо умолчанию
aabbAabb—
aabb

Локальные пользовательские границы; default(Aabb) возвращает автоматическое определение границ. Это значение не записывается в исходный Mesh.

SetExtraCullMarginvoid
# SetExtraCullMargin
C#
public void SetExtraCullMargin(float margin);

Расширяет локальные границы рендеринга во все стороны до применения трансформации экземпляра. Помогает учитывать смещения вершин в шейдере; при уменьшении масштаба мировой запас тоже уменьшается. Не изменяет исходные вершины, GetAabb() или коллизию. Отрицательное значение отклоняется с ошибкой движка, прежняя настройка сохраняется.

Параметры
ИмяТипПо умолчанию
marginfloat—
margin

Неотрицательный запас в локальных единицах; 0 снимает дополнительное расширение. При мировом смещении учитывайте масштаб и поворот, а не только значение амплитуды.

SetGIModevoid
# SetGIMode
C#
public void SetGIMode(GeometryInstance3D.GIModeEnum mode);
Параметры
ИмяТипПо умолчанию
modeGeometryInstance3D.GIModeEnum—
SetIgnoreOcclusionCullingvoid
# SetIgnoreOcclusionCulling
C#
public void SetIgnoreOcclusionCulling(bool ignoreCulling);
Параметры
ИмяТипПо умолчанию
ignoreCullingbool—
SetInstanceShaderParametervoid
# SetInstanceShaderParameter
C#
public void SetInstanceShaderParameter(StringName name, Variant value);

Задаёт instance uniform для этой геометрии, сохраняя общий ShaderMaterial у других мешей. Параметр должен быть объявлен как instance uniform. Nil снимает override и восстанавливает shader-default этого параметра.

Параметры
ИмяТипПо умолчанию
nameStringName—
valueVariant—
name

Точное имя instance uniform, например surface_tint. Обычный uniform height_scale из примера задаётся на ShaderMaterial.

value

Совместимое значение Variant; пример передаёт Color для vec4 с source_color. default(Variant) снимает индивидуальное значение, не удаляя общий материал.

SetLightmapScalevoid
# SetLightmapScale
C#
public void SetLightmapScale(GeometryInstance3D.LightmapScale scale);
Параметры
ИмяТипПо умолчанию
scaleGeometryInstance3D.LightmapScale—
SetLightmapTexelScalevoid
# SetLightmapTexelScale
C#
public void SetLightmapTexelScale(float scale);
Параметры
ИмяТипПо умолчанию
scalefloat—
SetLodBiasvoid
# SetLodBias
C#
public void SetLodBias(float bias);
Параметры
ИмяТипПо умолчанию
biasfloat—
SetMaterialOverlayvoid
# SetMaterialOverlay
C#
public void SetMaterialOverlay(Material material);

Дополнительный материал отдельного прохода. Не заменяет базовый MaterialOverride и не возвращается как GetActiveMaterial. Подчиняется своей очереди, смешиванию и глубине: непрозрачный overlay не гарантирует положение сверху. В проверке прозрачный alpha-overlay смешивается с базой.

Параметры
ИмяТипПо умолчанию
materialMaterial—
material

Материал для назначения; null снимает этот override/overlay. Удерживайте ресурс, пока он используется.

SetMaterialOverridevoid
# SetMaterialOverride
C#
public void SetMaterialOverride(Material material);

Базовый материал всего экземпляра, приоритетнее override отдельных поверхностей и материалов Mesh. Назначение не создаёт отдельную копию ресурса. null возвращает выбор по поверхностям; MaterialOverlay остаётся отдельным проходом.

Параметры
ИмяТипПо умолчанию
materialMaterial—
material

Материал для назначения; null снимает этот override/overlay. Удерживайте ресурс, пока он используется.

SetTransparencyvoid
# SetTransparency
C#
public void SetTransparency(float transparency);
Параметры
ИмяТипПо умолчанию
transparencyfloat—
SetVisibilityRangeBeginvoid
# SetVisibilityRangeBegin
C#
public void SetVisibilityRangeBegin(float distance);
Параметры
ИмяТипПо умолчанию
distancefloat—
SetVisibilityRangeBeginMarginvoid
# SetVisibilityRangeBeginMargin
C#
public void SetVisibilityRangeBeginMargin(float distance);
Параметры
ИмяТипПо умолчанию
distancefloat—
SetVisibilityRangeEndvoid
# SetVisibilityRangeEnd
C#
public void SetVisibilityRangeEnd(float distance);
Параметры
ИмяТипПо умолчанию
distancefloat—
SetVisibilityRangeEndMarginvoid
# SetVisibilityRangeEndMargin
C#
public void SetVisibilityRangeEndMargin(float distance);
Параметры
ИмяТипПо умолчанию
distancefloat—
SetVisibilityRangeFadeModevoid
# SetVisibilityRangeFadeMode
C#
public void SetVisibilityRangeFadeMode(GeometryInstance3D.VisibilityRangeFadeModeEnum mode);
Параметры
ИмяТипПо умолчанию
modeGeometryInstance3D.VisibilityRangeFadeModeEnum—

GeometryInstance3D.GIModeEnum

ЗначениеОписание
Disabled = 0

Отключенный режим глобального освещения. Используйте для динамических объектов, которые не вносят вклад в глобальное освещение (например, персонажей). При использовании VoxelGI и SDFGI геометрия будет получать непрямое освещение и отражения, но геометрия не будет учитываться при запекании GI.

Dynamic = 2

Режим динамического глобального освещения. Используется для динамических объектов, которые способствуют глобальному освещению. Этот режим GI эффективен только при использовании VoxelGI, но он оказывает большее влияние на производительность, чем GeometryInstance3D.GIModeEnum.Static. При использовании других методов GI это будет действовать так же, как GeometryInstance3D.GIModeEnum.Disabled. При использовании LightmapGI объект будет получать непрямое освещение с помощью зондов карты освещения вместо использования запеченной текстуры карты освещения.

Static = 1

Режим запеченного глобального освещения. Используется для статических объектов, которые способствуют глобальному освещению (например, геометрия уровня). Этот режим GI эффективен при использовании VoxelGI, SDFGI и LightmapGI.

GeometryInstance3D.LightmapScale

ЗначениеОписание
Max = 4

Представляет размер перечисления GeometryInstance3D.LightmapScale.

Scale1X = 0

Стандартная плотность текселей для светового отображения с помощью LightmapGI.

Scale2X = 1

Умножает плотность текселей на 2× для отображения освещения с помощью LightmapGI. Чтобы обеспечить постоянство плотности текселей, используйте это при масштабировании сетки с коэффициентом от 1,5 до 3,0.

Scale4X = 2

Умножает плотность текселей на 4× для отображения освещения с помощью LightmapGI. Чтобы обеспечить постоянство плотности текселей, используйте это при масштабировании сетки с коэффициентом от 3,0 до 6,0.

Scale8X = 3

Умножает плотность текселей на 8× для отображения освещения с помощью LightmapGI. Чтобы обеспечить постоянство плотности текселей, используйте это при масштабировании сетки с коэффициентом больше 6,0.

GeometryInstance3D.ShadowCastingSetting

ЗначениеОписание
DoubleSided = 2

Будут отбрасывать тени от всех видимых граней в GeometryInstance3D. Не будут учитываться отбраковки, поэтому при отбрасывании тени будут учитываться все грани.

Off = 0

Не будет отбрасывать тени. Используйте это для улучшения производительности для мелкой геометрии, которая вряд ли будет отбрасывать заметные тени (например, мусор).

On = 1

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

ShadowsOnly = 3

Покажет только тени, отбрасываемые этим объектом. Другими словами, сама сетка не будет видна, будут видны только тени, отбрасываемые сеткой.

GeometryInstance3D.VisibilityRangeFadeModeEnum

ЗначениеОписание
Dependencies = 2

иссякнет в его зависимости от видимости (см. Entity3D.VisibilityParent) при достижении пределов своего диапазона видимости. GeometryInstance3D.VisibilityRangeFadeModeEnum.Disabled, но он может обеспечивать более плавный переход. Диапазон упадка определяется GeometryInstance3D.VisibilityRangeBeginMargin и GeometryInstance3D.VisibilityRangeEndMargin. Примечание: При использовании метода трансляции " Вперёд+ " этот режим поддерживается только в том случае, если он используется в режиме " вперед+ " . GeometryInstance3D.VisibilityRangeFadeModeEnum.Disabled но с истерезой отключён.

Disabled = 0

Вместо этого будет использоваться гистерез. Это самый быстрый подход к ручной работе с LOD, но это может привести к заметным изменениям в LOD в зависимости от того, как написаны LOD meshes. GeometryInstance3D.VisibilityRangeBegin и Entity3D.VisibilityParent для дополнительной информации.

ВИЗИТ ВИДИМОСТЬ

Self = 1

Это происходит медленнее, чем в случае, когда он находится в зоне видимости. GeometryInstance3D.VisibilityRangeFadeModeEnum.Disabled, но он может обеспечивать более плавный переход. Диапазон упадка определяется GeometryInstance3D.VisibilityRangeBeginMargin и GeometryInstance3D.VisibilityRangeEndMargin. Примечание: При использовании метода трансляции " Вперёд+ " этот режим поддерживается только в том случае, если он используется в режиме " вперед+ " . GeometryInstance3D.VisibilityRangeFadeModeEnum.Disabled но с истерезой отключён.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.