MeshRender¶
继承: GeometryRender < VisualRender < Item3D < Item < Object
派生: SoftBulk
实例与场景相啮合的节点。
描述¶
MeshRender是一个节点,它获取一个Mesh资源,并通过创建它的实例将其添加到当前场景中。这是最常用的渲染3D几何类,可用于在许多地方实例化单个Mesh。这允许重用几何,从而节省资源。当一个Mesh必须在近距离实例化数千次以上时,请考虑在MultiMeshRender中使用MultiMesh。
属性¶
方法¶
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资源。
ItemPath skeleton = ItemPath("..") 🔗
ItemPath到与实例关联的SkeletonMesh。
此实例要使用的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碰撞形状。它主要用于测试。
如果clean为true(默认),则会自动删除重复顶点和内部顶点。如果不需要,您可以将其设置为false以使过程更快。
如果simplify为true,则可以进一步简化几何以减少顶点数量。默认禁用。
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的混合形状的索引。如果不存在具有此名称的混合形状,包括mesh为null时,则返回-1。
Material get_active_material(surface: int) const 🔗
返回Mesh绘图时将使用的Material。这可以返回GeometryRender.material_override、在此MeshRender中定义的表面覆盖Material或mesh中定义的表面Material。例如,如果使用GeometryRender.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处的混合形状的值。如果mesh为null或在该索引处没有混合形状,则返回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。如果mesh为null或在该索引处没有混合形状,则会产生错误。
void set_surface_override_material(surface: int, material: Material) 🔗
为Mesh资源的指定surface设置覆盖material。此材质与此MeshRender而不是mesh相关联。
注意:这将分配与MeshRender的表面材质覆盖属性关联的Material,而不是Mesh资源中的材质。要在Mesh资源中设置材质,请使用Mesh.surface_set_material()。