Archived

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

move vertex during animation

This topic is 5089 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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
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.


edit:
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