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

在日常工作中用到了Mesh组件,但是对其中的uv不是很了解,网上查了一番虽然有一些收货,但是使用方法都不是很详细,于是在自己的摸索下算是有了一些小的心得。
此处拿四边形举例:
绘制一个四边形可以由两个三角面片组成,需要四个点,绘图相关的知识可以参考我的另一篇文章如何用Mesh画图,四个点存放在Mesh的Vector3数组vertices中。Mesh中的uv点需要与Mesh中的Vertices中的四个点顺序一一对应,与你构成三角面片的Triangles数组无关
现在有一张图片
在这里插入图片描述
想让他正常显示,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);

效果如下:
在这里插入图片描述
那如果此时希望图片向右到左渲染,那么该怎么改呢?
此时UV点的顺序不变,和第一张图一样,从左下=》左上=》右上=》右下,但是坐标需要改变,变为原图沿着Y轴旋转180°,就是图片翻过来
在这里插入图片描述
此处我直接用的画图水平旋转,有点捡漏请见谅。
此时 左下角点是(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);

在这里插入图片描述
那么此时如果我希望图片垂直渲染该怎么改呢,很简单,只需要把图片旋转成垂直的样式,然后把旋转后的坐标给到UV即可。
在这里插入图片描述
左下(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);

效果如下:
在这里插入图片描述

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值