创建没有三角形的网格
Creating a mesh without triangles
我刚刚制作了一个脚本来通过代码创建网格。所以我现在的问题是我只知道如何用三角形创建网格,但应该有一种方法可以使用正方形而不是三角形。上次我处理这个时,我有一个我操纵的预制件……预制件是在 3DSMAX 中制作的,没有三角形,就像我建模它一样。所以,如果有人对此有所了解,我将不胜感激。
这是我的代码:
//MESH-SETUP
MeshFilter vertMeshFilter = vertics.GetComponents<MeshFilter>()[0];
Mesh vertMesh = new Mesh();
vertMeshFilter.mesh = vertMesh;
//VERTS
Vector3[] vertices = new Vector3[4]
{
new Vector3(0f, 0.0f, 0.0f),
new Vector3(width, 0.0f, 0.0f),
new Vector3(0.0f, height, 0.0f),
new Vector3(width, height, 0.0f)
};
//TRIANGLES
int[] tri = new int[6];
tri[0] = 0;
tri[1] = 2;
tri[2] = 1;
tri[3] = 2;
tri[4] = 3;
tri[5] = 1;
//NORMALS
Vector3[] normals = new Vector3[4];
normals[0] = Vector3.forward;
normals[1] = Vector3.forward;
normals[2] = Vector3.forward;
normals[3] = Vector3.forward;
//UV
Vector2[] uvs = new Vector2[4];
uvs[0] = new Vector2(0, 0);
uvs[1] = new Vector2(1, 0);
uvs[2] = new Vector2(0, 1);
uvs[3] = new Vector2(1, 1);
//ASSIGN
vertMesh.vertices = vertices;
vertMesh.triangles = tri;
vertMesh.normals = normals;
vertMesh.uv = uvs;
解决办法是把原来的正方形(你有的)分成两个三角形,用这些三角形构造网格。可能需要注意以两个生成的三角形 "faces" 与起始正方形相同的方式保持顶点顺序。
从上图中,原始正方形为v0,v1,v2,v3,生成的三角形为:
v0,v1,v2
和 v2,v3,v0
我刚刚制作了一个脚本来通过代码创建网格。所以我现在的问题是我只知道如何用三角形创建网格,但应该有一种方法可以使用正方形而不是三角形。上次我处理这个时,我有一个我操纵的预制件……预制件是在 3DSMAX 中制作的,没有三角形,就像我建模它一样。所以,如果有人对此有所了解,我将不胜感激。
这是我的代码:
//MESH-SETUP
MeshFilter vertMeshFilter = vertics.GetComponents<MeshFilter>()[0];
Mesh vertMesh = new Mesh();
vertMeshFilter.mesh = vertMesh;
//VERTS
Vector3[] vertices = new Vector3[4]
{
new Vector3(0f, 0.0f, 0.0f),
new Vector3(width, 0.0f, 0.0f),
new Vector3(0.0f, height, 0.0f),
new Vector3(width, height, 0.0f)
};
//TRIANGLES
int[] tri = new int[6];
tri[0] = 0;
tri[1] = 2;
tri[2] = 1;
tri[3] = 2;
tri[4] = 3;
tri[5] = 1;
//NORMALS
Vector3[] normals = new Vector3[4];
normals[0] = Vector3.forward;
normals[1] = Vector3.forward;
normals[2] = Vector3.forward;
normals[3] = Vector3.forward;
//UV
Vector2[] uvs = new Vector2[4];
uvs[0] = new Vector2(0, 0);
uvs[1] = new Vector2(1, 0);
uvs[2] = new Vector2(0, 1);
uvs[3] = new Vector2(1, 1);
//ASSIGN
vertMesh.vertices = vertices;
vertMesh.triangles = tri;
vertMesh.normals = normals;
vertMesh.uv = uvs;
解决办法是把原来的正方形(你有的)分成两个三角形,用这些三角形构造网格。可能需要注意以两个生成的三角形 "faces" 与起始正方形相同的方式保持顶点顺序。
从上图中,原始正方形为v0,v1,v2,v3,生成的三角形为:
v0,v1,v2
和 v2,v3,v0