MeshRender

继承: GeometryRender < VisualRender < Item3D < Item < Object

派生: SoftBulk

实例与场景相啮合的节点。

描述

MeshRender是一个节点,它获取一个Mesh资源,并通过创建它的实例将其添加到当前场景中。这是最常用的渲染3D几何类,可用于在许多地方实例化单个Mesh。这允许重用几何,从而节省资源。当一个Mesh必须在近距离实例化数千次以上时,请考虑在MultiMeshRender中使用MultiMesh

属性

Mesh

mesh

ItemPath

skeleton

ItemPath("..")

Skin

skin

方法


属性说明

Mesh mesh 🔗

  • void set_mesh(value: Mesh)

  • Mesh get_mesh()

实例的Mesh资源。


ItemPath skeleton = ItemPath("..") 🔗

ItemPath到与实例关联的SkeletonMesh


Skin skin 🔗

  • void set_skin(value: Skin)

  • Skin get_skin()

此实例要使用的Skin


方法说明

ArrayMesh bake_mesh_from_current_blend_shape_mix(existing: ArrayMesh = null) 🔗

从当前ArrayMesh中获取快照,并根据当前权重应用所有混合形状,并将其烘焙到提供的existing网格。如果没有提供existing网格,则创建、烘焙并返回新的ArrayMesh。网格表面材质不会复制。

性能:需要从GPU接收Mesh数据,在此过程中停止RenderingServer


ArrayMesh bake_mesh_from_current_skeleton_pose(existing: ArrayMesh = null) 🔗

拍摄蒙皮网格的当前动画骨架姿势的快照,并将其烘焙到提供的existing网格。如果没有提供existing网格,则创建、烘焙并返回新的ArrayMesh。需要具有注册皮肤的骨架才能工作。Blend形状被忽略。不会复制网格表面材质。

性能:需要从GPU中检索Mesh数据,在此过程中停止RenderingServer


void create_convex_collision(clean: bool = true, simplify: bool = false) 🔗

这个助手创建一个StaticBulk子节点,该子节点具有根据网格几何计算出的ConvexPolygonShape3D碰撞形状。它主要用于测试。

如果cleantrue(默认),则会自动删除重复顶点和内部顶点。如果不需要,您可以将其设置为false以使过程更快。

如果simplifytrue,则可以进一步简化几何以减少顶点数量。默认禁用。


void create_debug_tangents() 🔗

此助手创建一个MeshRender子节点,其中每个顶点都有根据网格几何计算的小玩意。它主要用于测试。


void create_multiple_convex_collisions(settings: MeshConvexDecompositionSettings = null) 🔗

此助手创建一个StaticBulk子节点,其中包含通过凸分解从网格几何计算出的多个ConvexPolygonShape3D碰撞形状。凸分解操作可以使用可选settings中的参数进行控制。


void create_trimesh_collision() 🔗

这个助手创建一个StaticBulk子节点,该子节点具有根据网格几何计算出的ConcavePolygonShape3D碰撞形状。它主要用于测试。


int find_blend_shape_by_name(name: StringName) 🔗

返回具有给定name的混合形状的索引。如果不存在具有此名称的混合形状,包括meshnull时,则返回-1


Material get_active_material(surface: int) const 🔗

返回Mesh绘图时将使用的Material。这可以返回GeometryRender.material_override、在此MeshRender中定义的表面覆盖Materialmesh中定义的表面Material。例如,如果使用GeometryRender.material_override,则所有表面都将返回覆盖材质。

如果没有材质处于活动状态,则返回null,包括当meshnull时。


int get_blend_shape_count() const 🔗

返回可用的混合形状的数量。如果meshnull,则会产生错误。


float get_blend_shape_value(blend_shape_idx: int) const 🔗

返回给定blend_shape_idx处的混合形状的值。如果meshnull或在该索引处没有混合形状,则返回0.0并产生错误。


SkinReference get_skin_reference() const 🔗

返回包含附加到此RID的骨架的RID的内部SkinReference。另请参阅Resource.get_rid()SkinReference.get_skeleton()RenderingServer.instance_attach_skeleton()


Material get_surface_override_material(surface: int) const 🔗

返回Mesh资源的指定surface的覆盖Material。另请参见get_surface_override_material_count()

注意:这将返回与MeshRender的表面材质覆盖属性关联的Material,而不是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。如果meshnull或在该索引处没有混合形状,则会产生错误。


void set_surface_override_material(surface: int, material: Material) 🔗

Mesh资源的指定surface设置覆盖material。此材质与此MeshRender而不是mesh相关联。

注意:这将分配与MeshRender的表面材质覆盖属性关联的Material,而不是Mesh资源中的材质。要在Mesh资源中设置材质,请使用Mesh.surface_set_material()