Procedural Mesh

模型基本概念

顶点

三角面

使用代码创建模型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using UnityEngine;

public class ProceduralMesh : MonoBehaviour
{
private Vector3[] _verticals;

private int[] _triangles;

private Mesh _mesh;

// Start is called before the first frame update
void Awake()
{
//获取相应组件
var meshFilter = gameObject.GetComponent<MeshFilter>();
var meshRenderer = gameObject.GetComponent<MeshRenderer>();
_mesh = meshFilter.mesh;
}

private void Start()
{
MakeMeshData();
CreateMesh();
}

private void MakeMeshData()
{
//顶点数据
_verticals = new[]
{
new Vector3(0, 0, 0),
new Vector3(0, 1, 0),
new Vector3(1, 0, 0),
new Vector3(1, 1, 0),
};

//三角面信息
_triangles = new[] {0, 1, 2, 3, 2, 1};
}

//创建Mesh
private void CreateMesh()
{
_mesh.Clear();
_mesh.vertices = _verticals;
_mesh.triangles = _triangles;
_mesh.RecalculateNormals();
}
}

顶点共用

三角面可以共用顶点,但需要注意的是,使用共用顶点组成相邻面时,如果相邻面不在同一平面上,那么会平滑过渡。如果不公用点,则不会由此效果。