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

void

request_update()


属性说明

bool add_uv2 = false 🔗

  • void set_add_uv2(value: bool)

  • bool get_add_uv2()

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


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

  • void set_custom_aabb(value: AABB)

  • AABB get_custom_aabb()

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


bool flip_faces = false 🔗

  • void set_flip_faces(value: bool)

  • bool get_flip_faces()

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

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


Material material 🔗

该图元网格的当前 Material


float uv2_padding = 2.0 🔗

  • void set_uv2_padding(value: float)

  • 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 创建新的表面。例如:

GDScriptC#

  1. var c = CylinderMesh.new()
  2. var arr_mesh = ArrayMesh.new()
  3. arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, c.get_mesh_arrays())
  1. var c = new CylinderMesh();
  2. var arrMesh = new ArrayMesh();
  3. arrMesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, c.GetMeshArrays());

void request_update() 🔗

请求根据其属性更新该基本网格。