小白求教,想要自定义mesh绘制正十二面体,网上查到了大佬绘制20面体的代码如下,请问正十二面体的三角面是怎么分的?如何设置顶点ID计算法线?麻烦各位解答一下,谢谢!
// 根据面的顺序,重新创建新的顶点数组,用于计算顶点法线
Vector3[] newVs = new Vector3[Ts.Length];
for (int i = 0; i < newVs.Length; i++)
{
Debug.Log(Vs[Ts[i]]);
newVs[i] = Vs[Ts[i]];
}
Vs = newVs;
UVs = new Vector2[Vs.Length];
normals = new Vector3[Vs.Length];
tangents = new Vector4[Vs.Length];
// 根据新的点,设置三角面的顶点ID并计算点法线
for (int i = 0; i < Ts.Length - 2; i += 5)
{
Vector3 normal = Vector3.Cross(Vs[i + 1] - Vs[i], Vs[i + 2] - Vs[i]); // 计算点的法线
for (int j = 0; j < 5; j++)
{
Ts[i + j] = i + j; // 重新设置面的顶点ID
normals[i + j] = normal; // 点的法线赋值
}
}
// 设置每个点的切线和UV
for (int i = 0; i < Vs.Length; i++)
{
tangents[i] = new Vector4(-1, 0, 0, -1); // 切线
UVs[i] = new Vector2(Vs[i].x, Vs[i].y); // UV坐标
}
// 调用创建对象函数
CreateObjectByMesh("Icosahedron");
}
```