source: OGRE/trunk/ogrenew/Tools/MayaExport/include/skeleton.h @ 692

Revision 692, 2.1 KB checked in by mattausch, 18 years ago (diff)

adding ogre 1.2 and dependencies

Line 
1#ifndef _SKELETON_H
2#define _SKELETON_H
3
4#include "mayaExportLayer.h"
5#include "paramList.h"
6
7namespace OgreMayaExporter
8{
9        /***** structure to hold joint info *****/
10        typedef struct jointTag
11        {
12                MString name;
13                int id;
14                MMatrix localMatrix;
15                MMatrix worldMatrix;
16                int parentIndex;
17                double posx,posy,posz;
18                double angle;
19                double axisx,axisy,axisz;
20                MDagPath jointDag;
21        } joint;
22
23        /***** structure to hold keyframes *****/
24        typedef struct keyframeTag
25        {
26                double time;                                                    //time of keyframe
27                double tx,ty,tz;                                                //translation
28                double angle,axis_x,axis_y,axis_z;              //rotation
29                double sx,sy,sz;                                                //scale
30        } keyframe;
31
32        /***** structure to hold an animation track *****/
33        typedef struct trackTag
34        {
35                MString bone;
36                std::vector<keyframe> keyframes;
37        } track;
38
39        /***** structure to hold an animation *****/
40        typedef struct animationTag
41        {
42                MString name;
43                double length;
44                std::vector<track> tracks;
45        } animation;
46
47        /*********** Class Skeleton **********************/
48        class Skeleton
49        {
50        public:
51                //constructor
52                Skeleton();
53                //destructor
54                ~Skeleton();
55                //clear skeleton data
56                void clear();
57                //load skeleton data
58                MStatus load(MFnSkinCluster* pSkinCluster,ParamList& params);
59                //load skeletal animations
60                MStatus loadAnims(MDagPath& jointDag,int jointId,ParamList& params);
61                MStatus loadAnims(ParamList& params);
62                //load a clip
63                MStatus loadClip(MString clipName,double start,double stop,double rate,ParamList& params);
64                MStatus loadClip(MDagPath& jointDag,int jointId,MString clipName,double start,
65                        double stop,double rate,ParamList& params);
66                //load a keyframe for a particular joint at current time
67                keyframe loadKeyframe(joint& j,double time,ParamList& params);
68                //get joints
69                std::vector<joint>& getJoints();
70                //get animations
71                std::vector<animation>& getAnimations();
72                //write skeleton data to Ogre XML
73                MStatus writeXML(ParamList &params);
74
75        protected:
76                MStatus loadJoint(MDagPath& jointDag, joint* parent, ParamList& params);
77
78                std::vector<joint> m_joints;
79                std::vector<animation> m_animations;
80        };
81
82}       //end namespace
83
84#endif
Note: See TracBrowser for help on using the repository browser.