您的位置:首页 > 移动开发 > Unity3D

unity3d 动作会产生抖动的问题

2016-05-24 20:28 295 查看
把外部软件制作的动画文件,导入到untiy3d里面的时候,你会发现很多动画文件会一抖一抖的,特别是动画比较精细的部分,诸如腿部,手部末端。

这个问题困扰了很久,然后某天把动作文件在Animation中打开,一帧一帧的观看,一个骨骼一个骨骼的看位移和旋转,发现抖动的时候,这个骨骼的数字都非常的小,很多时候都到了小数点后面很多位。这个时候,我把动画文件拷出来,通过修改帧里数值到一个比较大的数值后,发现不抖动了。此时,想到了一个问题,那就是精度丢失。

unity3d里将导入的动画文件,每帧数的位移,旋转和缩放都存放为一个个的浮点型的数据。然后在播放的时候,是基于世界缩放的,也就是把这些数值,都会乘以上层的缩放,然后改变骨骼的数据信息,赋予数值上去,如果要乘以的缩放比较小,就会导致小数位占比较多,浮点型的精度是有限的,就会导致动画的一些精度丢失。这个时候,将上层缩放乘以10倍,就好了很多,基本上抖动幅度非常小了,如果乘以100,那就不会有任何的抖动了。

这个只是在unity3d里做文章,会有一个坏处就是,模型的比例和场景的比例对不上,还要调整场景的缩放。所以比较好一些的做法,应该是美术那边,调动作的时候,尽量保证精度,避免出现这个问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: