一个 Mesh 主要由三个部分即可构成,以 Cube 为例
vertices:
顶点数组,一个 Cube 由 6 个面构成,每个面 4 个顶点,一共 24 个顶点,现实中一个 Cube 应该只有 8 个顶点,在 3D 模型中,多余的顶点对确定三角形与法线是必要的
triangles:
三角形顶点索引,每三个顶点构成一个三角形,两个三角形构成一个面,所以一个 Cube 包含 12 个三角形,构成三角形索引有顺时针与逆时针两种方式,将确定哪个面在渲染是可见
uv:
顶点的贴图坐标,范围是 0 - 1 的 2D 坐标系
void Start() {
Mesh mesh = GetComponent<MeshFilter>().mesh;
// 顶点
Vector3[] verts = mesh.vertices;
Debug.Log("vertices count is : " + verts.Length);
foreach (var vert in verts) {
Debug.Log(vert);
}
// 三角形数组
int[] triangles = mesh.triangles;
Debug.Log("triangles count is : " + triangles.Length);
foreach (var triangle in triangles) {
Debug.Log(triangle);
}
// UV
Vector2[] uv = mesh.uv;
Debug.Log("UV count is : " + uv.Length);
foreach (var u in uv) {
Debug.Log(u);
}
}
通过以上代码可以还原出 Cube 的 vertices、vertices、vertices