找回密码
 立即注册
查看: 9740|回复: 85

[脚本] 实现Unity3d手动UV动画

[复制链接]
发表于 2015-12-1 16:02 | 显示全部楼层 |阅读模式
首先我们来认识下什么是UV,在三维中UV这里是指u,v纹理贴图坐标的简称(它和空间模型 的X, Y, Z轴是类似的). 它定义了图片上每个点的位置的信息. 这些点与3D模型是相互联系的, 以决定表面纹理贴图的位置. UV就是将图像上每一个点精确对应到模型物体的表面. 在点与点之间的间隙位置由软件进行图像光滑插值处理. 这就是所谓的UV贴图。
那么UV坐标又是什么呢,由于所有的图象文件都是二维的一个平面。水平方向是U,垂直方向是V,通过这个平面的,二维的UV坐标系。我们可以定位图象上的任意一个象素。但是一个问题是 如何把这个二维的平面贴到三维的NURBS表面和多边形表面呢? 对于NURBUS表面。
由于他本身具有UV参数,尽管这个UV值是用来定位表面上的点的参数,但由于它也是二维的,所以很容易通过换算把表面上的点和平面 图象上的象素对应起来。所以把图象贴带NURBUS表面上是很直接的一件事。 但是对于多边形模型来讲,贴图就变成一件麻烦的事了。
所以多边形为了贴图就额外引进了一个UV坐标,以便把多边形的顶点和图象文件上的象素对应起来,这样才能在多边形表面上定位纹理贴图。所以说多边形的顶点除了具有三维的空间坐标外。还具有二维的UV坐标。 对于纹理贴图而言,一张贴图的U和V坐标的数值范围都是0到1,而不管他的实际分辨率是多少
了解了上面的基本概念,下面我们来开始我们的正文
在用U3D做特效的时候我们有时候需要用到手K UV动画,当然有些脚本可以实现,但是没有手K的可控性强。今天抽空给大家讲一下怎么实现。
1、我自己制作了一张序列图,有文字1-8的排序,便于观看。贴在模型上是这样的效果。
2、可以看的出来这并不是我们需要的排列,我们需要单个的数字占满整个Plane,而不是现实整张图。所以,我们需要修改贴图的Tiling,让数字1占满Plane。
3、这个时候就可以打开动画编辑器来K序列图的动画了。先让UV走到数字2试试。我们需要Offset的数值,这个是用来控制贴图UV的流动。由于这张序列图是4*2的,所以,横向移动0.25个单位即移动了一格。
4、UV走到数字4和5之间的时候,UV需要纵向移动一格。这个地方也是特别需要注意的。
5、当K完所有的帧之后还不够,此时播放的话我们会发现贴图走动是异常混乱的,这个时候我们需要到曲线里面,把所有关键帧的曲线都打直。到此unity3d手动实现UV动画就完成,是不是很简单。
本篇教程到这里就结束了,希望对大家有帮助!
资源地址: http://cg.silucg.com/dongman/unity3d/7995.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2017-3-24 14:39 | 显示全部楼层
很不错
发表于 2017-3-24 13:55 | 显示全部楼层
楼主是超人
发表于 2017-3-24 14:00 | 显示全部楼层
好帖就是要顶
发表于 2017-3-24 13:49 | 显示全部楼层
真心顶
发表于 2017-3-24 14:22 | 显示全部楼层
说的非常好
发表于 2017-6-12 15:03 | 显示全部楼层
很不错
发表于 2017-6-12 14:53 | 显示全部楼层
好帖就是要顶
发表于 2017-6-12 14:54 | 显示全部楼层
真心顶
发表于 2017-6-12 14:49 | 显示全部楼层
说的非常好
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-4-28 08:26 , Processed in 0.130806 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表