Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

PrimitiveMesh

继承: Mesh < Resource < RefCounted < Object

派生: BoxMesh, CapsuleMesh, CylinderMesh, PlaneMesh, PointMesh, PrismMesh, RibbonTrailMesh, SphereMesh, TextMesh, TorusMesh, TubeTrailMesh

所有图元网格的基类。处理将 Material 应用到图元网格的问题。

描述

所有基本网格的基类,能够处理将 Material 应用到基本网格的操作。有 BoxMeshCapsuleMeshCylinderMeshPlaneMeshPrismMeshSphereMesh 等基本网格。

属性

bool

add_uv2

false

AABB

custom_aabb

AABB(0, 0, 0, 0, 0, 0)

bool

flip_faces

false

Material

material

float

uv2_padding

2.0

方法

Array

_create_mesh_array ( ) virtual const

Array

get_mesh_arrays ( ) const


属性说明

bool add_uv2 = false

  • void set_add_uv2 ( bool value )

  • bool get_add_uv2 ( )

打开后将生成 UV2 UV 坐标,使用 uv2_padding 设置的间距。光照映射需要 UV2。


AABB custom_aabb = AABB(0, 0, 0, 0, 0, 0)

  • void set_custom_aabb ( AABB value )

  • AABB get_custom_aabb ( )

用用户定义的用于使用视锥剔除的一种替代 AABB。在使用着色器偏移顶点时,避免非预期的剔除特别有用。


bool flip_faces = false

  • void set_flip_faces ( bool value )

  • bool get_flip_faces ( )

打开后会颠倒各个三角形中顶点的顺序,导致绘制网格的背面。

和在 BaseMaterial3D.cull_mode 中使用 BaseMaterial3D.CULL_FRONT 的效果一致。


Material material

该图元网格的当前 Material


float uv2_padding = 2.0

  • void set_uv2_padding ( float value )

  • float get_uv2_padding ( )

如果设置了 add_uv2,则指定沿网格接缝被应用的以像素为单位的填充。较低的填充值允许更好地利用光照贴图纹理(导致更高的纹素密度),但可能会沿边缘引入可见的光照贴图渗色。

如果在生成网格时无法确定光照贴图纹理的大小,则计算 UV2 时假定纹理大小为 1024x1024。


方法说明

Array _create_mesh_array ( ) virtual const

重写该方法以自定义应如何生成该基本网格。应该返回一个 Array,其中每个元素都是该网格所需的另一个值数组(请参阅 ArrayType 常量)。


Array get_mesh_arrays ( ) const

返回用于构成 Mesh 表面的网格数组。结果可以传递给 ArrayMesh.add_surface_from_arrays 创建新的表面。例如:

var c = CylinderMesh.new()
var arr_mesh = ArrayMesh.new()
arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, c.get_mesh_arrays())