MeshInstance3D
Entity Это приводит к сценарию.
Entity Это приводит к сценарию.
MeshInstance3D — это узел, который берет ресурс Mesh и добавляет его в текущий сценарий, создавая его экземпляр. Это класс, который чаще всего используется для рендеринга 3D-геометрии и может использоваться для создания экземпляра одной Mesh во многих местах. Это позволяет повторно использовать геометрию, что может сэкономить ресурсы. Когда необходимо создать экземпляр Mesh более тысячи раз в непосредственной близости, рассмотрите возможность использования MultiMesh в MultiMeshInstance3D.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
MeshInstance3DКонструктор
public MeshInstance3D();Свойства3
SkeletonСвойство
public EntityPath Skeleton { get; set; }EntityPath к связанному с экземпляром Skeleton3D.
Примечание: Значение по умолчанию для этого свойства изменилось в Reckfell. Включите ProjectSettings.animation/compatibility/default_parent_skeleton_in_mesh_instance_3d, если для совместимости необходимо старое поведение.
Методы22
BakeMeshFromCurrentBlendShapeMixArrayMesh
public ArrayMesh BakeMeshFromCurrentBlendShapeMix(ArrayMesh existing = null);Снимок с настоящего времени ArrayMesh при использовании всех форм смеси в соответствии с их текущими весами и выпечке их с учетом предусмотренного existing Если нет existing Mesh предоставляет новый ArrayMesh Он создан, выпечен и возвращен. Mesh Не копируются поверхностные материалы.
Performance: Mesh данные должны быть получены от ГПУ, что задерживает RenderingServer в процессе.
| Имя | Тип | По умолчанию |
|---|---|---|
existing | ArrayMesh | null |
ArrayMeshBakeMeshFromCurrentSkeletonPoseArrayMesh
public ArrayMesh BakeMeshFromCurrentSkeletonPose(ArrayMesh existing = null);Снимок текущей анимированной скелетной позы кожаной сетки и испечь ее для предоставленного existing Если нет existing Mesh предоставляет новый ArrayMesh Создается, печется и возвращается. Требует скелета с зарегистрированной кожей для работы. Блендшэйпы игнорируются. Mesh Не копируются поверхностные материалы.
Performance: Mesh данные должны быть извлечены из ГПУ, что задерживает RenderingServer в процессе.
| Имя | Тип | По умолчанию |
|---|---|---|
existing | ArrayMesh | null |
ArrayMeshCreateConvexCollisionvoid
public void CreateConvexCollision(bool clean = true, bool simplify = false);Этот помощник создает дочерний узел StaticBody3D с формой столкновения ConvexPolygonShape3D, рассчитанной из геометрии сетки. В основном он используется для тестирования.
Если clean равен true (по умолчанию), дублирующиеся и внутренние вершины удаляются автоматически. Вы можете установить его на false, чтобы ускорить процесс, если он не нужен.
Если simplify равен true, геометрию можно дополнительно упростить, чтобы уменьшить количество вершин. По умолчанию отключено.
| Имя | Тип | По умолчанию |
|---|---|---|
clean | bool | true |
simplify | bool | false |
CreateDebugTangentsvoid
public void CreateDebugTangents();Этот помощник создает дочерний узел MeshInstance3D с гизмо в каждой вершине, рассчитанной из геометрии сетки. Он в основном используется для тестирования.
CreateMultipleConvexCollisions2 перегрузки
public void CreateMultipleConvexCollisions();Этот помощник создает дочерний узел StaticBody3D с несколькими формами столкновений ConvexPolygonShape3D, рассчитанными из геометрии сетки с помощью выпуклой декомпозиции. Операция выпуклой декомпозиции может управляться параметрами из дополнительных settings.
public void CreateMultipleConvexCollisions(MeshConvexDecompositionSettings settings = null);Этот помощник создает дочерний узел StaticBody3D с несколькими формами столкновений ConvexPolygonShape3D, рассчитанными из геометрии сетки с помощью выпуклой декомпозиции. Операция выпуклой декомпозиции может управляться параметрами из дополнительных settings.
| Имя | Тип | По умолчанию |
|---|---|---|
settings | MeshConvexDecompositionSettings | null |
CreateTrimeshCollisionvoid
public void CreateTrimeshCollision();Этот помощник создает дочерний узел StaticBody3D с формой столкновения ConcavePolygonShape3D, рассчитанной из геометрии сетки. В основном он используется для тестирования.
FindBlendShapeByNameint
public int FindBlendShapeByName(StringName name);Возвращает индекс формы смешивания с заданным name. Возвращает -1, если формы смешивания с таким именем не существует, включая случай, когда MeshInstance3D.Mesh равен null.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | — |
intGetActiveMaterialMaterial
public Material GetActiveMaterial(int surface);Выбирает основной материал поверхности по приоритету: MaterialOverride экземпляра, surface override, материал ресурса Mesh. MaterialOverlay — дополнительный проход и не входит в возвращаемый основной материал.
| Имя | Тип | По умолчанию |
|---|---|---|
surface | int | — |
surfaceИндекс существующей поверхности меша, начиная с 0. Это не номер Entity или элемента GridMap.
MaterialВыбранный Material либо null при отсутствии подходящего ресурса. Это ссылка на ресурс: несколько экземпляров могут разделять один материал.
GetBlendShapeCountint
public int GetBlendShapeCount();Возвращает количество доступных форм смешивания. Выдает ошибку, если MeshInstance3D.Mesh равен null.
intGetBlendShapeValuefloat
public float GetBlendShapeValue(int blendShapeIdx);Возвращает значение формы смешивания по указанному blend_shape_idx. Возвращает 0.0 и выдает ошибку, если MeshInstance3D.Mesh равен null или не имеет формы смешивания по этому индексу.
| Имя | Тип | По умолчанию |
|---|---|---|
blendShapeIdx | int | — |
floatGetMeshMesh
public Mesh GetMesh();MeshGetSkeletonPathEntityPath
public EntityPath GetSkeletonPath();EntityPathGetSkinSkin
public Skin GetSkin();SkinGetSkinReferenceSkinReference
public SkinReference GetSkinReference();Возвращает внутренний SkinReference, содержащий Rid скелета, прикрепленный к этому RID. См. также Resource.GetRid, SkinReference.GetSkeleton и RenderingServer.InstanceAttachSkeleton.
SkinReferenceGetSurfaceOverrideMaterialMaterial
public Material GetSurfaceOverrideMaterial(int surface);Возвращает сохранённый override поверхности этого экземпляра, не материал Mesh и не обязательно активный базовый материал. MaterialOverride объекта имеет более высокий приоритет; для выбора с учётом приоритета используйте GetActiveMaterial.
| Имя | Тип | По умолчанию |
|---|---|---|
surface | int | — |
surfaceИндекс существующего слота поверхности, начиная с 0.
MaterialНазначенный override Material либо null, даже если материал есть у ресурса Mesh.
GetSurfaceOverrideMaterialCountint
public int GetSurfaceOverrideMaterialCount();Число слотов override, соответствующих поверхностям Mesh. Это не число назначенных материалов: при одной поверхности и null override результат остаётся 1.
intКоличество доступных слотов поверхностей для override.
SetBlendShapeValuevoid
public void SetBlendShapeValue(int blendShapeIdx, float value);Устанавливает значение формы смешивания в blend_shape_idx на value. Выдает ошибку, если MeshInstance3D.Mesh равен null или не имеет формы смешивания в этом индексе.
| Имя | Тип | По умолчанию |
|---|---|---|
blendShapeIdx | int | — |
value | float | — |
SetMeshvoid
public void SetMesh(Mesh mesh);| Имя | Тип | По умолчанию |
|---|---|---|
mesh | Mesh | — |
SetSkeletonPathvoid
public void SetSkeletonPath(EntityPath skeletonPath);| Имя | Тип | По умолчанию |
|---|---|---|
skeletonPath | EntityPath | — |
SetSkinvoid
public void SetSkin(Skin skin);| Имя | Тип | По умолчанию |
|---|---|---|
skin | Skin | — |
SetSurfaceOverrideMaterialvoid
public void SetSurfaceOverrideMaterial(int surface, Material material);Переопределяет материал одной поверхности этого экземпляра. Не изменяет исходный Mesh. Если MaterialOverride экземпляра задан, он имеет больший приоритет. Передайте null для снятия surface override.
| Имя | Тип | По умолчанию |
|---|---|---|
surface | int | — |
material | Material | — |
surfaceИндекс существующей поверхности, начиная с 0.
materialРесурс материала либо null. Назначение не создаёт уникальную копию: для независимой правки сначала продублируйте материал.