VisualInstance3D
Родительский элемент всех визуальных 3D-узлов.
Родительский элемент всех визуальных 3D-узлов.
VisualInstance3D используется для подключения ресурса к визуальному представлению. Все визуальные 3D-узлы наследуются от VisualInstance3D. В общем случае не следует обращаться к свойствам VisualInstance3D напрямую, поскольку к ним обращаются и управляют узлы, наследующие от VisualInstance3D. VisualInstance3D — это представление узла экземпляра RenderingServer.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
VisualInstance3DКонструктор
public VisualInstance3D();Свойства3
LayersСвойство
public uint Layers { get; set; }Слои рендеринга, на которых нарисован этот VisualInstance3D.
Этот объект будет виден только для Camera3D, чья маска отбраковки включает любой из слоев рендеринга, на который установлен этот VisualInstance3D.
Для Light3D это можно использовать для управления тем, на какие VisualInstance3D влияет определенный свет. Для GpuParticles3D это можно использовать для управления тем, на какие частицы влияет определенный аттрактор. Для Decal это можно использовать для управления тем, на какие VisualInstance3D влияет определенный декаль.
Чтобы упростить настройку VisualInstance3D.Layers с помощью скрипта, используйте VisualInstance3D.GetLayerMaskValue и VisualInstance3D.SetLayerMaskValue.
Примечание: VoxelGI, SDFGI и LightmapGI всегда будут учитывать все слои, чтобы определить, что влияет на глобальное освещение. Если это проблема, установите GeometryInstance3D.GIMode на GeometryInstance3D.GIModeEnum.Disabled для сеток и Light3D.LightBakeMode на Light3D.BakeMode.Disabled для источников света, чтобы исключить их из глобального освещения.
SortingOffsetСвойство
public float SortingOffset { get; set; }Величина, на которую будет скорректирована глубина этого VisualInstance3D при сортировке по глубине. Использует те же единицы, что и движок (обычно это метры). Если настроить его на большее значение, VisualInstance3D будет надежно рисовать поверх других VisualInstance3D, которые в противном случае расположены в том же месте. Чтобы гарантировать, что он всегда рисует поверх других объектов вокруг него (не расположенных в том же месте), установите значение больше расстояния между этим VisualInstance3D и другими близлежащими VisualInstance3D.
SortingUseAabbCenterСвойство
public bool SortingUseAabbCenter { get; set; }Если true, объект сортируется на основе центра Aabb. В противном случае объект будет сортироваться на основе глобальной позиции.
Сортировка на основе центра Aabb обычно более точна для 3D-моделей. Сортировка на основе позиции вместо этого позволяет лучше контролировать порядок рисования при работе с GpuParticles3D и CpuParticles3D.
Методы13
GetAabbAabb
public Aabb GetAabb();Возвращает локальные геометрические границы конкретного типа VisualInstance3D. Для MeshInstance3D это Mesh.GetAabb(), либо пустой Aabb без Mesh. Трансформация Entity, CustomAabb, ExtraCullMargin и GPU-деформация в результат не включаются. Базовая реализация VisualInstance3D обращается к _GetAabb; нативные производные типы могут реализовать собственный GetAabb.
AabbЛокальный Aabb геометрии согласно реализации типа, а не мировой или окончательный серверный объём отсечения.
GetBaseRid
public Rid GetBase();Возвращает RID ресурса, связанного с этим VisualInstance3D. Например, если Entity — это MeshInstance3D, это вернет RID связанного Mesh.
RidGetInstanceRid
public Rid GetInstance();Возвращает RID этого экземпляра. Этот RID совпадает с RID, возвращаемым RenderingServer.InstanceCreate. Этот RID необходим, если вы хотите вызывать функции RenderingServer непосредственно на этом VisualInstance3D.
RidGetLayerMaskuint
public uint GetLayerMask();uintGetLayerMaskValuebool
public bool GetLayerMaskValue(int layerNumber);Возвращает, включен ли указанный слой из VisualInstance3D.Layers, учитывая layer_number от 1 до 20.
| Имя | Тип | По умолчанию |
|---|---|---|
layerNumber | int | — |
boolGetSortingOffsetfloat
public float GetSortingOffset();floatIsSortingUseAabbCenterbool
public bool IsSortingUseAabbCenter();boolSetBasevoid
public void SetBase(Rid @base);Устанавливает ресурс, который инстанцируется этим VisualInstance3D, что изменяет то, как движок обрабатывает VisualInstance3D под капотом. Эквивалентно RenderingServer.InstanceSetBase.
| Имя | Тип | По умолчанию |
|---|---|---|
base | Rid | — |
SetLayerMaskvoid
public void SetLayerMask(uint mask);| Имя | Тип | По умолчанию |
|---|---|---|
mask | uint | — |
SetLayerMaskValuevoid
public void SetLayerMaskValue(int layerNumber, bool value);На основе value включает или отключает указанный слой в VisualInstance3D.Layers при заданном layer_number от 1 до 20.
| Имя | Тип | По умолчанию |
|---|---|---|
layerNumber | int | — |
value | bool | — |
SetSortingOffsetvoid
public void SetSortingOffset(float offset);| Имя | Тип | По умолчанию |
|---|---|---|
offset | float | — |
SetSortingUseAabbCentervoid
public void SetSortingUseAabbCenter(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
_GetAabbAabb
public virtual Aabb _GetAabb();Виртуальный обратный вызов локальных границ для пользовательского типа на базе VisualInstance3D. Базовая реализация GetAabb вызывает этот метод. Нативный производный тип с собственной реализацией GetAabb может обходить этот обратный вызов; для настройки отсечения MeshInstance3D используйте CustomAabb или ExtraCullMargin.
AabbГраницы пользовательской геометрии в локальных координатах. Это отдельный контракт от настройки CustomAabb на экземпляре рендеринга.