Animation 加性骨架动画
我很难编写附加骨骼动画 如果我分别播放每个动画,一切都会正常工作,这样我就知道每个动画的姿势都是正确的。。。我搞不懂的是如何将它们混合在一起 我得到以下信息:Animation 加性骨架动画,animation,Animation,我很难编写附加骨骼动画 如果我分别播放每个动画,一切都会正常工作,这样我就知道每个动画的姿势都是正确的。。。我搞不懂的是如何将它们混合在一起 我得到以下信息: void MD5ANIM_additive_blending( MD5MD5ANIM *md5, MD5MD5ANIMJOINT *dst, MD5MD5ANIMJOINT *pose0, MD5MD5ANIMJOINT *pose1 ) { unsigned int i = 0; while( i != md5->n_joint
void MD5ANIM_additive_blending( MD5MD5ANIM *md5, MD5MD5ANIMJOINT *dst, MD5MD5ANIMJOINT *pose0, MD5MD5ANIMJOINT *pose1 )
{
unsigned int i = 0;
while( i != md5->n_joint )
{
vec3 location;
quat4 quaternion;
// The joints location difference
vec3_subtract( &location, &pose1[ i ].location, &pose0[ i ].location );
// Add the joint location difference to the first pose to create additive new pose.
vec3_add( &dst[ i ].location, &pose0[ i ].location, &location );
// The quaternion difference
quat4_subtract( &quaternion, &pose0[ i ].quaternion, &pose1[ i ].quaternion );
// Add the joint quaternion difference to the first pose to create additive new pose.
quat4_add( &dst[ i ].quaternion, &pose0[ i ].quaternion, &quaternion );
quat4_normalize( &dst[ i ].quaternion,
&dst[ i ].quaternion );
++i;
}
}
任何人都可以指出我哪里弄错了。据我所知,添加到骨骼姿势的混合非常简单:
附加姿态=位置0+(位置0-位置1)
我做错了什么
假设您有一个行走动画,另一个手悬空。所以基本上步行+手=手在空中行走 有两种可能性:
你发布的代码乱七八糟。通常,如果您有两个方向四元数,并且认为添加/减去它们是一个好主意,那么您要么正在进行一些复杂的优化(在这种情况下,您知道自己在做什么),要么正在做一些非常错误的事情。将一帧动画与另一帧动画进行添加混合意味着什么?你想达到什么样的视觉效果?假设你有一个行走动画,另一个手悬空。所以基本上走路+手=手在地上走路air@datenwolf:你能用代码详细说明一下吗?tks@麦克鲍伯:看尼科尔·博拉斯的答案。一般来说,如果你有两个方向四元数,你不应该像矢量一样加上或减去它们,而应该使用插值法在它们之间进行插值。