|
|
发表于 2009-3-7 10:04:00
|
显示全部楼层
Re:关键帧插值的问题
位置用vector3记录
旋转用quaternion,如果有旋转的再用额外的变量来记录
.x文件的思路也是这样的,把关键帧分为4类:
rotation,只有旋转,用quaternion保存,大部分人物骨骼动画都只有渲染
scale,只有缩放,用vector3保存
translation, 只有位置,用vector3保存
transormation matrix,可以包含缩放,旋转和位移
因为matrix对旋转的插值不正确,所以对最后一种关键帧,我也把matrix decompose成了单独的旋转,缩放和位移,分别插值。
quaternion插值要比matrix计算量小,特别是对于多次旋转的情况,先用quaternion计算,最后再转为matrix是最高效的
另外分开保存比matrix还节约储存空间,对于均匀缩放来说(大部分引擎都只允许均匀缩放),只要8个float,非均匀缩放10个float,而4×4的matrix需要16个 |
|