MeshInstance3D
Наследует: GeometryInstance3D < VisualInstance3D < Node3D < Node < Object
Наследуется от: SoftBody3D
Узел, экземпляры которого встраиваются в сценарий.
Описание
MeshInstance3D — это узел, который берет ресурс Mesh и добавляет его в текущий сценарий, создавая его экземпляр. Это класс, который чаще всего используется для рендеринга 3D-геометрии и может использоваться для создания экземпляра одной Mesh во многих местах. Это позволяет повторно использовать геометрию, что может сэкономить ресурсы. Когда необходимо создать экземпляр Mesh более тысячи раз в непосредственной близости, рассмотрите возможность использования MultiMesh в MultiMeshInstance3D.
Обучающие материалы
Свойства
|
||
Методы
bake_mesh_from_current_blend_shape_mix(existing: ArrayMesh = null) |
|
bake_mesh_from_current_skeleton_pose(existing: ArrayMesh = null) |
|
void |
create_convex_collision(clean: bool = true, simplify: bool = false) |
void |
|
void |
create_multiple_convex_collisions(settings: MeshConvexDecompositionSettings = null) |
void |
|
get_active_material(surface: int) const |
|
get_blend_shape_count() const |
|
get_blend_shape_value(blend_shape_idx: int) const |
|
get_skin_reference() const |
|
get_surface_override_material(surface: int) const |
|
void |
set_blend_shape_value(blend_shape_idx: int, value: float) |
void |
set_surface_override_material(surface: int, material: Material) |
Описания свойств
Ресурс Mesh для экземпляра.
NodePath skeleton = NodePath("") 🔗
NodePath к связанному с экземпляром Skeleton3D.
Примечание: Значение по умолчанию для этого свойства изменилось в Godot 4.6. Включите ProjectSettings.animation/compatibility/default_parent_skeleton_in_mesh_instance_3d, если для совместимости необходимо старое поведение.
Skin, который будет использоваться этим экземпляром.
Описания метода
ArrayMesh bake_mesh_from_current_blend_shape_mix(existing: ArrayMesh = null) 🔗
Делает снимок текущего ArrayMesh со всеми примененными формами смешивания в соответствии с их текущими весами и запекает его в предоставленной existing сетке. Если existing сетка не указана, создается, запекается и возвращается новая ArrayMesh. Материалы поверхности сетки не копируются.
Производительность: Данные Mesh необходимо получать от GPU, что останавливает RenderingServer в процессе.
ArrayMesh bake_mesh_from_current_skeleton_pose(existing: ArrayMesh = null) 🔗
Делает снимок текущей анимированной позы скелета скинированной сетки и запекает ее в предоставленной existing сетке. Если existing сетка не предоставлена, создается, запекается и возвращается новая ArrayMesh. Для работы требуется скелет с зарегистрированным скином. Blendshapes игнорируются. Материалы поверхности сетки не копируются.
Производительность: Данные Mesh необходимо извлекать из графического процессора, что останавливает RenderingServer в процессе.
void create_convex_collision(clean: bool = true, simplify: bool = false) 🔗
Этот помощник создает дочерний узел StaticBody3D с формой столкновения ConvexPolygonShape3D, рассчитанной из геометрии сетки. В основном он используется для тестирования.
Если clean равен true (по умолчанию), дублирующиеся и внутренние вершины удаляются автоматически. Вы можете установить его на false, чтобы ускорить процесс, если он не нужен.
Если simplify равен true, геометрию можно дополнительно упростить, чтобы уменьшить количество вершин. По умолчанию отключено.
void create_debug_tangents() 🔗
Этот помощник создает дочерний узел MeshInstance3D с гизмо в каждой вершине, рассчитанной из геометрии сетки. Он в основном используется для тестирования.
void create_multiple_convex_collisions(settings: MeshConvexDecompositionSettings = null) 🔗
Этот помощник создает дочерний узел StaticBody3D с несколькими формами столкновений ConvexPolygonShape3D, рассчитанными из геометрии сетки с помощью выпуклой декомпозиции. Операция выпуклой декомпозиции может управляться параметрами из дополнительных settings.
void create_trimesh_collision() 🔗
Этот помощник создает дочерний узел StaticBody3D с формой столкновения ConcavePolygonShape3D, рассчитанной из геометрии сетки. В основном он используется для тестирования.
int find_blend_shape_by_name(name: StringName) 🔗
Возвращает индекс формы смешивания с заданным name. Возвращает -1, если формы смешивания с таким именем не существует, включая случай, когда mesh равен null.
Material get_active_material(surface: int) const 🔗
Возвращает Material, который будет использоваться Mesh при рисовании. Это может вернуть GeometryInstance3D.material_override, переопределение поверхности Material, определенное в этом MeshInstance3D, или поверхность Material, определенное в mesh. Например, если используется GeometryInstance3D.material_override, все поверхности вернут переопределенный материал.
Возвращает null, если ни один материал не активен, включая случай, когда mesh равен null.
int get_blend_shape_count() const 🔗
Возвращает количество доступных форм смешивания. Выдает ошибку, если mesh равен null.
float get_blend_shape_value(blend_shape_idx: int) const 🔗
Возвращает значение формы смешивания по указанному blend_shape_idx. Возвращает 0.0 и выдает ошибку, если mesh равен null или не имеет формы смешивания по этому индексу.
SkinReference get_skin_reference() const 🔗
Возвращает внутренний SkinReference, содержащий RID скелета, прикрепленный к этому RID. См. также Resource.get_rid(), SkinReference.get_skeleton() и RenderingServer.instance_attach_skeleton().
Material get_surface_override_material(surface: int) const 🔗
Возвращает переопределение Material для указанного surface ресурса Mesh. См. также get_surface_override_material_count().
Примечание: Это возвращает Material, связанный со свойствами переопределения материала поверхности MeshInstance3D, а не материал внутри ресурса Mesh. Чтобы получить материал внутри ресурса Mesh, используйте вместо этого Mesh.surface_get_material().
int get_surface_override_material_count() const 🔗
Возвращает количество материалов переопределения поверхности. Это эквивалентно Mesh.get_surface_count(). См. также get_surface_override_material().
void set_blend_shape_value(blend_shape_idx: int, value: float) 🔗
Устанавливает значение формы смешивания в blend_shape_idx на value. Выдает ошибку, если mesh равен null или не имеет формы смешивания в этом индексе.
void set_surface_override_material(surface: int, material: Material) 🔗
Устанавливает переопределение material для указанного surface ресурса Mesh. Этот материал связан с этим MeshInstance3D, а не с mesh.
Примечание: Это назначает Material, связанный со свойствами Surface Material Override MeshInstance3D, а не материал внутри ресурса Mesh. Чтобы задать материал внутри ресурса Mesh, используйте вместо этого Mesh.surface_set_material().