Unity3D中Blendshapes之间的过渡方式

来源:互联网 发布:易名域名 编辑:程序博客网 时间:2024/06/07 01:27

环境Unity3D 4.6.2f1 Win7 64bit
同事从Maya中用blendshape方式做了一个动画,一个球匀速向前移动一段距离。但导出fbx放进Unity3D后,感觉球是在一颤一颤地移动,而不是匀速移动。
效果是这样子:http://v.youku.com/v_show/id_XMTMyMjQyNTE2NA==.html
同事解释了下:
假设那个动画是24帧,每一帧中球的位置都已经确定好了。但假设Unity3D运行时是48帧,第1帧时取的是动画的第1帧,第2帧的时候,它取的是动画的第1帧呢,还是第2帧,还是第1帧和第2帧的平均,还是其它值,所以这个地方的相关设置如果没有顺利从Maya里导到Unity3D,就会出现问题。我这次就是Maya里的相关设置信息没有顺利地导到Unity3D。
相关源码在:http://vdisk.weibo.com/s/dSGcg5j06Dgy
或 http://download.csdn.net/detail/a117653909/9062143
在Unity3D中打开Animation窗口,选中Hierarchy中的test3,Animation窗口中会显示test3相关的blendshapes,点击Animation窗口中的curve,可以看到如下图:
这里写图片描述
Blendshapes的序列没有按顺序排,你按10,20,30……230,240这样一个个点过去,就可以看到值是在一直向右边在移的。
这个动画的帧率是24,可以看到上图是不同的曲线经过关键点,所以这里是用曲线来插值相邻关键点之间的值。如果要取两个关键点之间的值,就是取这此曲线上的值了。这就导致球是一颤一颤地移动。
解决办法是:
修改Blendshapes之间值的过渡方式。
由于这个Animation是Read Only,所以我们把Take001动画Duplicate一个出来,命名为aaa,将aaa拖给Hierarchy中的test3的Animation,然后在Animation窗口中左上角,切换为aaa,全选,在某个关键点上右键,选择Both Tangents,Constant。这样问题就解决了。
这里写图片描述

0 0