This topic is now archived and is closed to further replies.


move vertex during animation

Recommended Posts

kevlur    124
Hi, in milkshape is there a way to change the position of the vertex(and then to change the shape) of a model, in animation mode, during the setting of the key frame, from one frame to another? In other words, it''s possible to change the shape of the model(other than the joints) from one frame to another? Thanks Kev

Share this post

Link to post
Share on other sites
bzroom    647
No, I only know this because i'm writing my own plugin and i've seen the data structures. The mesh is stored once for each object in the scene, bones are attached to the scene not individual objects, the verticies are attached to the bones, the bones contain the animation data and only include rotation and position data.

here they are (please if this illegal of me warn me before i get in trouble)

typedef float msVec4[4];
typedef float msVec3[3];
typedef float msVec2[2];

/* msFlag */
typedef enum {
eSelected = 1, eSelected2 = 2, eHidden = 4, eDirty = 8, eAveraged = 16, eUnused = 32
} msFlag;

/* msVertex */
typedef struct msVertex
byte nFlags;
msVec3 Vertex;
float u, v;
char nBoneIndex;
} msVertex;

/* msTriangle */
typedef struct
word nFlags;
word nVertexIndices[3];
word nNormalIndices[3];
msVec3 Normal;
byte nSmoothingGroup;
} msTriangle;

/* msMesh */
typedef struct msMesh
byte nFlags;
char szName[MS_MAX_NAME];
char nMaterialIndex;

word nNumVertices;
word nNumAllocedVertices;
msVertex* pVertices;

word nNumNormals;
word nNumAllocedNormals;
msVec3* pNormals;

word nNumTriangles;
word nNumAllocedTriangles;
msTriangle* pTriangles;
} msMesh;

/* msMaterial */
typedef struct msMaterial
int nFlags;
char szName[MS_MAX_NAME];
msVec4 Ambient;
msVec4 Diffuse;
msVec4 Specular;
msVec4 Emissive;
float fShininess;
float fTransparency;
char szDiffuseTexture[MS_MAX_PATH];
char szAlphaTexture[MS_MAX_PATH];
int nName;
} msMaterial;

/* msPositionKey */
typedef struct msPositionKey
float fTime;
msVec3 Position;
} msPositionKey;

/* msRotationKey */
typedef struct msRotationKey
float fTime;
msVec3 Rotation;
} msRotationKey;

/* msBone */
typedef struct msBone
int nFlags;
char szName[MS_MAX_NAME];
char szParentName[MS_MAX_NAME];
msVec3 Position;
msVec3 Rotation;

int nNumPositionKeys;
int nNumAllocedPositionKeys;
msPositionKey* pPositionKeys;

int nNumRotationKeys;
int nNumAllocedRotationKeys;
msRotationKey* pRotationKeys;
} msBone;

/* msModel */
typedef struct msModel
int nNumMeshes;
int nNumAllocedMeshes;
msMesh* pMeshes;

int nNumMaterials;
int nNumAllocedMaterials;
msMaterial* pMaterials;

int nNumBones;
int nNumAllocedBones;
msBone* pBones;

int nFrame;
int nTotalFrames;

msVec3 Position;
msVec3 Rotation;
} msModel;

[edited by - honayboyz on January 6, 2004 4:14:07 PM]

Share this post

Link to post
Share on other sites