q_normalize( kf->q );
}
+static void keyframe_lerp( mdl_keyframe *kfa, mdl_keyframe *kfb, f32 t,
+ mdl_keyframe *kfd ){
+ v3_lerp( kfa->co, kfb->co, t, kfd->co );
+ q_nlerp( kfa->q, kfb->q, t, kfd->q );
+ v3_lerp( kfa->s, kfb->s, t, kfd->s );
+}
+
/*
* Lerp between two sets of keyframes and store in dest. Rotations use Nlerp.
*/
static void keyframe_lerp_pose( mdl_keyframe *kfa, mdl_keyframe *kfb,
- float t, mdl_keyframe *kfd, int count )
-{
+ float t, mdl_keyframe *kfd, int count ){
if( t <= 0.0001f ){
keyframe_copy_pose( kfa, kfd, count );
return;
return;
}
- for( int i=0; i<count; i++ ){
- v3_lerp( kfa[i].co, kfb[i].co, t, kfd[i].co );
- q_nlerp( kfa[i].q, kfb[i].q, t, kfd[i].q );
- v3_lerp( kfa[i].s, kfb[i].s, t, kfd[i].s );
- }
+ for( int i=0; i<count; i++ )
+ keyframe_lerp( kfa+i, kfb+i, t, kfd+i );
}
static