Mesh

Inherits: Resource < Reference < Object

Inherited By: ArrayMesh, PrimitiveMesh

一种包含基于顶点数组的几何资源。

描述

网格是一种包含了基于顶点数组的几何资源。网格被分为各种平面,每一个平面包含了一个完整的、单独的顶点数组和材质用来绘制它。通过明智的设计,一个由多个面组成的网格胜过单个面的,这是因为在3D编辑软件中,一个物体通常包含多种材质。

教程

属性

Vector2

lightmap_size_hint

Vector2( 0, 0 )

方法

Shape

create_convex_shape ( bool clean=true, bool simplify=false ) const

Mesh

create_outline ( float margin ) const

Shape

create_trimesh_shape ( ) const

TriangleMesh

generate_triangle_mesh ( ) const

AABB

get_aabb ( ) const

PoolVector3Array

get_faces ( ) const

int

get_surface_count ( ) const

Array

surface_get_arrays ( int surf_idx ) const

Array

surface_get_blend_shape_arrays ( int surf_idx ) const

Material

surface_get_material ( int surf_idx ) const

void

surface_set_material ( int surf_idx, Material material )

枚举

enum PrimitiveType:

  • PRIMITIVE_POINTS = 0 —- 将顶点数组渲染为点阵(一个顶点对应一个点阵中的点)。

  • PRIMITIVE_LINES = 1 —- 将顶点组渲染为线条(每两个顶点之间创建一条连线)。

  • PRIMITIVE_LINE_STRIP = 2 —- 将顶点组渲染为线条。

  • PRIMITIVE_LINE_LOOP = 3 —- 将数组渲染成线状环(像线条,但是封闭的)。

  • PRIMITIVE_TRIANGLES = 4 —- 将顶点组渲染为三角形(每三个相邻顶点创建一个三角形)。

  • PRIMITIVE_TRIANGLE_STRIP = 5 —- 将顶点组渲染为三角形线框。

  • PRIMITIVE_TRIANGLE_FAN = 6 —- 将数组渲染成三角形扇形。


enum BlendShapeMode:

  • BLEND_SHAPE_MODE_NORMALIZED = 0 —- 混合形状是被归一化了的。

  • BLEND_SHAPE_MODE_RELATIVE = 1 —- 混合形状相对于基础的权重。


enum ArrayFormat:

  • ARRAY_FORMAT_VERTEX = 1 —- 网格组包含许多顶点。每一个网格都需要一个顶点数组,所以这应该持久化储存。

  • ARRAY_FORMAT_NORMAL = 2 —- 网格组包含法线。

  • ARRAY_FORMAT_TANGENT = 4 —- 网格组包含切向。

  • ARRAY_FORMAT_COLOR = 8 —- 网格组包含颜色。

  • ARRAY_FORMAT_TEX_UV = 16 —- 网格组包含UV。

  • ARRAY_FORMAT_TEX_UV2 = 32 —- 网格组包含第二套UV。

  • ARRAY_FORMAT_BONES = 64 —- 网格组包含骨骼。

  • ARRAY_FORMAT_WEIGHTS = 128 —- 网格组包含骨骼权重。

  • ARRAY_FORMAT_INDEX = 256 —- 网格组使用索引。

  • ARRAY_COMPRESS_BASE = 9 —- 内部用于计算其他ARRAY_COMPRESS_*枚举值。不要使用。

  • ARRAY_COMPRESS_VERTEX = 512 —- 用于标记压缩(半精度浮点)顶点数组的标志。

  • ARRAY_COMPRESS_NORMAL = 1024 —- 曾经用于标记压缩(半精度浮点)法向数组的 Flag。

  • ARRAY_COMPRESS_TANGENT = 2048 —- 曾经用于标记压缩(半精度浮点)切向数组的Flag。

  • ARRAY_COMPRESS_COLOR = 4096 —- 曾用于标记压缩(半精度浮点)颜色数组的Flag。

  • ARRAY_COMPRESS_TEX_UV = 8192 —- 曾用于标记压缩(半精度浮点)UV 坐标数组的 Flag。

  • ARRAY_COMPRESS_TEX_UV2 = 16384 —- 曾用于标记第二套UV坐标的压缩(半精度浮点)UV坐标数组的Flag。

  • ARRAY_COMPRESS_BONES = 32768 —- 用于标记压缩骨骼数组的标志。

  • ARRAY_COMPRESS_WEIGHTS = 65536 —- 用于标记压缩(半精度浮点)权重数组的标志。

  • ARRAY_COMPRESS_INDEX = 131072 —- 曾用于标记压缩索引数组的Flag。

  • ARRAY_FLAG_USE_2D_VERTICES = 262144 —- 曾用于标记包含2D顶点的数组的Flag。

  • ARRAY_FLAG_USE_16_BIT_BONES = 524288 —- 用于标记数组使用16位骨骼而不是8位的标志。

  • ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION = 2097152 —- 标志用于标记数组使用法线和切线向量的八面表示法,而不是笛卡尔式。

  • ARRAY_COMPRESS_DEFAULT = 2194432 —- 用于快速设置标志ARRAY_COMPRESS_VERTEX, ARRAY_COMPRESS_NORMAL, ARRAY_COMPRESS_TANGENT, ARRAY_COMPRESS_COLOR, ARRAY_COMPRESS_TEX_UV, ARRAY_COMPRESS_TEX_UV2 , ARRAY_COMPRESS_WEIGHTS, 和ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION


enum ArrayType:

  • ARRAY_VERTEX = 0 —- 顶点数组。

  • ARRAY_NORMAL = 1 —- 法线数组。

  • ARRAY_TANGENT = 2 —- 切向数组。每一个切向数据由四个float变量描述。

  • ARRAY_COLOR = 3 —- 颜色数组。

  • ARRAY_TEX_UV = 4 —- UV 坐标数组。

  • ARRAY_TEX_UV2 = 5 —- 第二套UV坐标数组。

  • ARRAY_BONES = 6 —- 骨骼数据的数组。

  • ARRAY_WEIGHTS = 7 —- 权重数组。

  • ARRAY_INDEX = 8 —- 索引数组。

  • ARRAY_MAX = 9 —- 表示ArrayType枚举的大小。

属性说明

Default

Vector2( 0, 0 )

Setter

set_lightmap_size_hint(value)

Getter

get_lightmap_size_hint()

设置提示,用于BakedLightmap中的光照贴图分辨率。重写BakedLightmap.default_texels_per_unit

方法说明

  • Shape create_convex_shape ( bool clean=true, bool simplify=false ) const

从网格中计算出 ConvexPolygonShape

如果 cleantrue (默认),重复的和内部的顶点会被自动移除。你可以把它设为 false 来使这个过程更快,如果不需要的话。

如果simplifytrue,可以进一步简化几何体以减少顶点的数量。默认情况下是禁用的。


以一定的offset(边距),计算出该网格的外轮廓。

Note: 这个方法实际上反序返回顶点(例如输入顺时针,返回逆时针)。


  • Shape create_trimesh_shape ( ) const

从网格中计算出ConcavePolygonShape


从网格生成TriangleMesh


  • AABB get_aabb ( ) const

返回局部空间中包围这个网格的最小的AABB。不受custom_aabb的影响。参阅 VisualInstance.get_transformed_aabb

注意:这只对ArrayMeshPrimitiveMesh实现。


返回所有在这个网格中,构成面的顶点。每三个顶点代表一个三角形。


  • int get_surface_count ( ) const

返回该网格的面数。


  • Array surface_get_arrays ( int surf_idx ) const

返回所有组成面所需的东西构成的数组的数组,例如顶点,法向,UV等。(参阅ArrayMesh.add_surface_from_arrays)。


  • Array surface_get_blend_shape_arrays ( int surf_idx ) const

返回所需面的混合形状数组。


返回给定面的Material材质。面将由该材质来渲染。


  • void surface_set_material ( int surf_idx, Material material )

设置给定面的Material材质。该面将会使用此材质渲染。