| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- /**
- *** :: Skeleton ::
- ***
- ***
- **/
- #ifndef skeleton_h
- #define skeleton_h
- #include "cengine.h"
- typedef struct {
- int joint_count;
- int* joint_parents;
- vec3* joint_positions;
- quat* joint_rotations;
- mat4* transforms;
- mat4* transforms_inv;
- } frame;
- frame* frame_new();
- frame* frame_copy(frame* f);
- frame* frame_interpolate(frame* f0, frame* f1, float amount);
- void frame_copy_to(frame* f, frame* out);
- void frame_interpolate_to(frame* f0, frame* f1, float amount, frame* out);
- void frame_decendants_to(frame* f0, frame* f1, float amount, int joint, frame* out);
- void frame_delete(frame* f);
- mat4 frame_joint_transform(frame* f, int i);
- void frame_joint_add(frame* f, int parent, vec3 position, quat rotation);
- void frame_gen_transforms(frame* f);
- void frame_gen_inv_transforms(frame* f);
- typedef struct {
- int joint_count;
- char** joint_names;
- frame* rest_pose;
- } skeleton;
- skeleton* skeleton_new();
- void skeleton_delete(skeleton* s);
- void skeleton_joint_add(skeleton* s, char* name, int parent);
- int skeleton_joint_id(skeleton* s, char* name);
- skeleton* skl_load_file(char* filename);
- #endif
|