Unity3D如何使用Mesh生成自定义多边形
众所周知U3D中任何图形都是有N个三角面构成
所以我们生成多边形也就是生成N个三角面连接而成的
首先我们有N个点这N个点按顺序连接而成为一个多边形
而Mesh中有两个API主要用来绘制三角面
mesh.vertices即图形的各个顶点
他是一个Vector3数组用来表示各个顶点的位置
mf.mesh.triangles即三角面的连接方式
他是一个List<int>
我觉得主要的难点在于N个点如何保证绘制的三角面最少且完整的绘制出了图形这个目前我暂时并没有想到更好的算法如果有人写出了更好的算法希望能@我一下
// An highlighted block
MeshFilter mf = obj.AddComponent<MeshFilter>();
MeshRenderer mr = obj.AddComponent<MeshRenderer>();
Mesh mesh = new Mesh();
mf.mesh = mesh;
obj.transform.localPosition = new Vector3(0, 0, -1);
//data即顶点数组
Vector3[] point = data;
List<int> iss = new List<int>();
for (int j = 0; j < point.Length - 1; j++)
{
iss.Add(j);
iss.Add(j+1);
iss.Add(point.Length - 1-j);
}
mr.material.color = Color.black;
mf.mesh.vertices = point;
mf.mesh.triangles = iss.ToArray();