+/*
+ * Copyright (C) Mount0 Software, Harry Godden - All Rights Reserved
+ */
+
#ifndef ANIM_TEST_H
#define ANIM_TEST_H
static struct
{
struct skeleton skele;
- struct skeleton_anim *yay;
+ struct skeleton_anim *anim_stand, *anim_highg;
glmesh mesh;
}
{
mdl_header *johannes = mdl_load( "models/ch_new.mdl" );
skeleton_setup( &animtest.skele, johannes );
- animtest.yay = skeleton_get_anim( &animtest.skele, "pose_stand" );
+ animtest.anim_stand = skeleton_get_anim( &animtest.skele, "pose_stand" );
+ animtest.anim_highg = skeleton_get_anim( &animtest.skele, "pose_highg" );
mdl_unpack_glmesh( johannes, &animtest.mesh );
free( johannes );
q_axis_angle( qt, (v3f){0.0f,1.0f,0.0f}, vg_time*1.2f );
q_m3x3( qt, transform );
- skeleton_apply_frame( transform, &animtest.skele, animtest.yay, vg_time );
- skeleton_apply_ik_pass( &animtest.skele );
+ mdl_keyframe apose[32],
+ bpose[32];
+
+ float a = sinf(vg_time)*0.5f+0.5f,
+ b = (sinf(vg_time*2.0f)*0.5f+0.5f)*(15.0f/30.0f);
+
+ skeleton_sample_anim( &animtest.skele, animtest.anim_stand, b, apose );
+ skeleton_sample_anim( &animtest.skele, animtest.anim_highg, b, bpose );
+
+ skeleton_lerp_pose( &animtest.skele, apose, bpose, a, apose );
+ skeleton_apply_standard( &animtest.skele, apose, transform );
skeleton_debug( &animtest.skele );
}
vg_tex2d_bind( tex, 0 );
shader_viewchar_uTexMain( 0 );
shader_viewchar_uPv( vg_pv );
+
+ shader_link_standard_ub( _shader_viewchar.id, 2 );
+
glUniformMatrix4x3fv( _uniform_viewchar_uTransforms,
animtest.skele.bone_count,
0,
- (float *)animtest.skele.final_transforms );
+ (float *)animtest.skele.final_mtx );
mesh_bind( &animtest.mesh );
mesh_draw( &animtest.mesh );