开头
最近发现有很多人不知道在unity中可以创建和修改mesh,以为mesh只能从3dmax等软件中导入,所以这篇就相当于科普了。
正文
首先介绍如何创建mesh。
先创建一个空物体,名为test。
然后为这个物体增加 meshrender 和 meshfilter 两个组件
下面就要写将要赋给它的脚本了,先贴上代码,解释在下面。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
要创建一个mesh必须要准备好三个数组分别是顶点数组,三角形数组,uv数组。
也可以用下面的代码赋值
int[] p = new int[10];
for (int i = 0; i <= 9; i++)
{
Console.Write("请输入第{0}个值:",i+1);
p[i] = int.Parse(Console.ReadLine());
}
- 顶点数组 包括这个mesh中所有的顶点,如 Vector3[] newVertices = { new Vector3(0, 0, 0), new Vector3(0, 1, 0), new Vector3(1, 1, 0), new Vector3(1, 0, 0) }; 其中有四个顶点,分别为正方形四个角。
- 三角形数组 指定如何构成每个三角形,同时也确定了三角形的个数,如 int[] newTriangles = {0,2,1,0,3,2}; 这行代码表示0,2,1(对应着newVertices[0],newVertices [2],newVertices [1]),构成第一个三角形的三个角,数字的顺序表示顺逆时针,同时确定了三角形的正反面,后面的0,3,2同理,这就代表此mesh有两个三角形。
- uv数组 这是一个vector2数组,用来确定顶点数组中每个顶点的uv坐标,这在下面将演示给大家看。
代码写好之后,把脚本贴到Test物体上,然后设置一个material,如下图:
下面是运行后的图片:
至于为什么uv数组是什么,你可以认为这张图片的四个角的uv坐标分别为(0,0),(1,0),(1,1),(1,0),如果我把上面代码中的uv数组改成 Vector2[] newUV = { new Vector2(0, 0), new Vector2(0, 1), new Vector2(0.5f, 1), new Vector2(0.5f, 0) }; 那就会变成下面这个样子:
有一点要注意的是,顶点数组中的顶点坐标都是在模型坐标系中的,就是以刚开始创建的Test空物体的坐标为原点。
以上只是简单创建了一个平面mesh,至于如何创建3d mesh和修改mesh,相信聪明的你一定会啦。