6 #include "shaders/viewchar.h"
10 struct skeleton skele
;
11 struct skeleton_anim
*anim_stand
, *anim_highg
;
17 static void anim_test_start(void)
19 mdl_header
*johannes
= mdl_load( "models/ch_new.mdl" );
20 skeleton_setup( &animtest
.skele
, johannes
);
21 animtest
.anim_stand
= skeleton_get_anim( &animtest
.skele
, "pose_stand" );
22 animtest
.anim_highg
= skeleton_get_anim( &animtest
.skele
, "pose_highg" );
23 mdl_unpack_glmesh( johannes
, &animtest
.mesh
);
28 static void anim_test_update(void)
31 player_camera_update();
34 m4x3_identity( transform
);
37 q_axis_angle( qt
, (v3f
){0.0f
,1.0f
,0.0f
}, vg_time
*1.2f
);
38 q_m3x3( qt
, transform
);
40 mdl_keyframe apose
[32],
43 float a
= sinf(vg_time
)*0.5f
+0.5f
,
44 b
= (sinf(vg_time
*2.0f
)*0.5f
+0.5f
)*(15.0f
/30.0f
);
46 skeleton_sample_anim( &animtest
.skele
, animtest
.anim_stand
, b
, apose
);
47 skeleton_sample_anim( &animtest
.skele
, animtest
.anim_highg
, b
, bpose
);
49 skeleton_lerp_pose( &animtest
.skele
, apose
, bpose
, a
, apose
);
50 skeleton_apply_pose( &animtest
.skele
, apose
, k_anim_apply_defer_ik
);
51 skeleton_apply_ik_pass( &animtest
.skele
);
52 skeleton_apply_pose( &animtest
.skele
, apose
, k_anim_apply_deffered_only
);
53 skeleton_apply_inverses( &animtest
.skele
);
54 skeleton_apply_transform( &animtest
.skele
, transform
);
56 skeleton_debug( &animtest
.skele
);
59 static void anim_test_render( vg_tex2d
*tex
)
62 m4x3_expand( player
.camera_inverse
, world_4x4
);
64 gpipeline
.fov
= 60.0f
;
65 m4x4_projection( vg_pv
, gpipeline
.fov
,
66 (float)vg_window_x
/ (float)vg_window_y
,
69 m4x4_mul( vg_pv
, world_4x4
, vg_pv
);
70 glEnable( GL_DEPTH_TEST
);
72 shader_viewchar_use();
73 vg_tex2d_bind( tex
, 0 );
74 shader_viewchar_uTexMain( 0 );
75 shader_viewchar_uPv( vg_pv
);
76 glUniformMatrix4x3fv( _uniform_viewchar_uTransforms
,
77 animtest
.skele
.bone_count
,
79 (float *)animtest
.skele
.final_mtx
);
81 mesh_bind( &animtest
.mesh
);
82 mesh_draw( &animtest
.mesh
);
84 glDisable( GL_DEPTH_TEST
);
85 vg_lines_drawall( (float *)vg_pv
);
88 #endif /* ANIM_TEST_H */