Unity中Mesh的uv坐标讨论与使用方法

在日常工作中用到了Mesh组件,但是对其中的uv不是很了解,网上查了一番虽然有一些收货,但是使用方法都不是很详细,于是在自己的摸索下算是有了一些小的心得。
此处拿四边形举例:
绘制一个四边形可以由两个三角面片组成,需要四个点,绘图相关的知识可以参考我的另一篇文章如何用Mesh画图,四个点存放在Mesh的Vector3数组vertices中。Mesh中的uv点需要与Mesh中的Vertices中的四个点顺序一一对应,与你构成三角面片的Triangles数组无关
现在有一张图片
Unity中Mesh的uv坐标讨论与使用方法_第1张图片
想让他正常显示,UV的点顺序应该和上图的定点顺序一致,应该为(0,0),(0,1),(1,1),(1,0)

        //正常顺序
        uvs[0] = new Vector2(0, 0);
        uvs[1] = new Vector2(0, 1);
        uvs[2] = new Vector2(1, 1);
        uvs[3] = new Vector2(1, 0);

效果如下:
Unity中Mesh的uv坐标讨论与使用方法_第2张图片
那如果此时希望图片向右到左渲染,那么该怎么改呢?
此时UV点的顺序不变,和第一张图一样,从左下=》左上=》右上=》右下,但是坐标需要改变,变为原图沿着Y轴旋转180°,就是图片翻过来
Unity中Mesh的uv坐标讨论与使用方法_第3张图片
此处我直接用的画图水平旋转,有点捡漏请见谅。
此时 左下角点是(1,0),左上角(1,1),右上角(0,1),右下角(0,0),然后赋值给UV,效果如下

        //从右向左顺序
        uvs[0] = new Vector2(1, 0);
        uvs[1] = new Vector2(1, 1);
        uvs[2] = new Vector2(0, 1);
        uvs[3] = new Vector2(0, 0);

Unity中Mesh的uv坐标讨论与使用方法_第4张图片
那么此时如果我希望图片垂直渲染该怎么改呢,很简单,只需要把图片旋转成垂直的样式,然后把旋转后的坐标给到UV即可。
Unity中Mesh的uv坐标讨论与使用方法_第5张图片
左下(0,1),左上(1,1),右上(1,0),右下(0,0)。

        //垂直渲染
        uvs[0] = new Vector2(0, 1);
        uvs[1] = new Vector2(1, 1);
        uvs[2] = new Vector2(1, 0);
        uvs[3] = new Vector2(0, 0);

效果如下:
Unity中Mesh的uv坐标讨论与使用方法_第6张图片

总结:先确定正常顺序,此处是顺时针从左下角开始,记住四个点的顺序,将目标图片按照要求旋转,将旋转后的点的坐标填入原来顺序(可能有点绕)即可
至此对UV坐标的使用方法讲解完啦。Demo案例
ps:这里是刚入坑的U3D萌新一只,日常分享在工作中遇到的问题。

你可能感兴趣的:(Mesh,uv坐标)