#include "player.h"
#include "skeleton.h"
+#include "shaders/viewchar.h"
static struct
{
struct skeleton skele;
struct skeleton_anim *yay;
+
+ glmesh mesh;
}
animtest;
{
mdl_header *johannes = mdl_load( "models/ch_new.mdl" );
skeleton_setup( &animtest.skele, johannes );
- animtest.yay = skeleton_get_anim( &animtest.skele, "yay" );
+ animtest.yay = skeleton_get_anim( &animtest.skele, "pose_stand" );
+ mdl_unpack_glmesh( johannes, &animtest.mesh );
free( johannes );
}
m4x3f transform;
m4x3_identity( transform );
+
+ v4f qt;
+ 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 );
skeleton_debug( &animtest.skele );
}
-static void anim_test_render(void)
+static void anim_test_render( vg_tex2d *tex )
{
m4x4f world_4x4;
m4x3_expand( player.camera_inverse, world_4x4 );
m4x4_mul( vg_pv, world_4x4, vg_pv );
glEnable( GL_DEPTH_TEST );
+ shader_viewchar_use();
+ vg_tex2d_bind( tex, 0 );
+ shader_viewchar_uTexMain( 0 );
+ shader_viewchar_uPv( vg_pv );
+ glUniformMatrix4x3fv( _uniform_viewchar_uTransforms,
+ animtest.skele.bone_count,
+ 0,
+ (float *)animtest.skele.final_transforms );
+
+ mesh_bind( &animtest.mesh );
+ mesh_draw( &animtest.mesh );
+
glDisable( GL_DEPTH_TEST );
vg_lines_drawall( (float *)vg_pv );
}