X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=anim_test.h;h=054e95563787395d22bfd55f5e0e1be86cb0f97c;hb=b4c9550f206c476bb38b0bb2855d35e6b31bee83;hp=c2f3eaea6ccfcfbb2fe1cad5ca9227f77e43b8e0;hpb=3d5597be2fd4b5d9ea3bf8863e15cc9bc8123755;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/anim_test.h b/anim_test.h index c2f3eae..054e955 100644 --- a/anim_test.h +++ b/anim_test.h @@ -1,3 +1,7 @@ +/* + * Copyright (C) Mount0 Software, Harry Godden - All Rights Reserved + */ + #ifndef ANIM_TEST_H #define ANIM_TEST_H @@ -8,7 +12,7 @@ static struct { struct skeleton skele; - struct skeleton_anim *yay; + struct skeleton_anim *anim_stand, *anim_highg; glmesh mesh; } @@ -18,7 +22,8 @@ static void anim_test_start(void) { 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 ); @@ -36,8 +41,17 @@ static void anim_test_update(void) 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 ); } @@ -59,10 +73,13 @@ static void anim_test_render( vg_tex2d *tex ) 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 );