unity3d 动作会产生抖动的问题
2016-05-24 20:28
295 查看
把外部软件制作的动画文件,导入到untiy3d里面的时候,你会发现很多动画文件会一抖一抖的,特别是动画比较精细的部分,诸如腿部,手部末端。
这个问题困扰了很久,然后某天把动作文件在Animation中打开,一帧一帧的观看,一个骨骼一个骨骼的看位移和旋转,发现抖动的时候,这个骨骼的数字都非常的小,很多时候都到了小数点后面很多位。这个时候,我把动画文件拷出来,通过修改帧里数值到一个比较大的数值后,发现不抖动了。此时,想到了一个问题,那就是精度丢失。
unity3d里将导入的动画文件,每帧数的位移,旋转和缩放都存放为一个个的浮点型的数据。然后在播放的时候,是基于世界缩放的,也就是把这些数值,都会乘以上层的缩放,然后改变骨骼的数据信息,赋予数值上去,如果要乘以的缩放比较小,就会导致小数位占比较多,浮点型的精度是有限的,就会导致动画的一些精度丢失。这个时候,将上层缩放乘以10倍,就好了很多,基本上抖动幅度非常小了,如果乘以100,那就不会有任何的抖动了。
这个只是在unity3d里做文章,会有一个坏处就是,模型的比例和场景的比例对不上,还要调整场景的缩放。所以比较好一些的做法,应该是美术那边,调动作的时候,尽量保证精度,避免出现这个问题
这个问题困扰了很久,然后某天把动作文件在Animation中打开,一帧一帧的观看,一个骨骼一个骨骼的看位移和旋转,发现抖动的时候,这个骨骼的数字都非常的小,很多时候都到了小数点后面很多位。这个时候,我把动画文件拷出来,通过修改帧里数值到一个比较大的数值后,发现不抖动了。此时,想到了一个问题,那就是精度丢失。
unity3d里将导入的动画文件,每帧数的位移,旋转和缩放都存放为一个个的浮点型的数据。然后在播放的时候,是基于世界缩放的,也就是把这些数值,都会乘以上层的缩放,然后改变骨骼的数据信息,赋予数值上去,如果要乘以的缩放比较小,就会导致小数位占比较多,浮点型的精度是有限的,就会导致动画的一些精度丢失。这个时候,将上层缩放乘以10倍,就好了很多,基本上抖动幅度非常小了,如果乘以100,那就不会有任何的抖动了。
这个只是在unity3d里做文章,会有一个坏处就是,模型的比例和场景的比例对不上,还要调整场景的缩放。所以比较好一些的做法,应该是美术那边,调动作的时候,尽量保证精度,避免出现这个问题
相关文章推荐
- Unity SteamVR插件集成
- unity里pbr技术及材质流程与材质制作实践
- HoloLens开发手记 - Unity之语音输入
- Unity 5 中的全局光照技术详解
- unity 使用UGUI创建图集
- Unity手动控制动画播放
- Unity 图标字体
- unity中顶点片段shader环境反射
- Unity3D中的Update, FixedUpdate, LateUpdate的区别
- Unity3D 新版动画状态机Animator中的动画速度控制
- UNITY3D自学(四)--创建预制体Prefab--第一集
- Unity3D发布WebPlayer时Failed to download data file解决方案
- autofac与unity注册类型的几个小区别
- Unity动画事件
- unity3d 新UI系统UGUI点击与3D场景点击分离
- Unity3D开发敌人自动攻击和自动寻路
- unity 3种message消息管理使用
- [UnityShader3]2D描边效果
- (转) unity 在移动平台中,文件操作路径详解
- Unity游戏画面品质增强,shader和贴图