Jump to content
  • Advertisement

Archived

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

coollofty

CS skeleton animation problem.

This topic is 5298 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

I have some problem when I process CS anmation data. I get the animation data like this: for(int iBone = 0; iBone < iTotalBones; ++ iBone) { INode* pBoneNode = pBoneList->Get(iBone)->GetMaxNode(); //get the 0-time matrix, and invert it Matrix3 initMat = pBoneNode->GetNodeTM(0); initMat.Invert(); //save it. pBoneList->Get(iBone)->SetInitMat(initMat); } for(int iTime = 0; iTime < iTotalTimes; ++ iTime) { for(iBone = 0; iBone < iTotalBones; ++ iBOne) { //A BoneInfo struct contain the INode ptr and influence vertex count, and child bone list. BoneInfo* pBoneInfo = pBoneList->Get(iBone); //use inverted 0-time matrix to transforming the i-Time matrix to get the final matrix. Matrix3 finalMat = pBoneInfo->GetInitMat() * pBoneInfo->GetMaxNode()->GetNodeTM(iTime); //convert finalMat to D3DXMATRIX Matrix3 rotateMat(TRUE); Point3 offset = finalMat.GetTrans(); Quat rotateQuat(finalMat); rotateQuat.MakeMatrix(rotateMat, FALSE); D3DXMATRIX d3dMat; D3DXMatrixIdentity(&d3dMat); d3dMat._11 = rotateMat.m[0][1]; d3dMat._12 = rotateMat.m[0][2]; d3dMat._13 = rotateMat.m[0][3]; d3dMat._21 = rotateMat.m[1][1]; d3dMat._22 = rotateMat.m[1][2]; d3dMat._33 = rotateMat.m[1][3]; d3dMat._31 = rotateMat.m[2][1]; d3dMat._32 = rotateMat.m[3][2]; d3dMat._33 = rotateMat.m[3][3]; d3dMat._41 = offset.x; d3dMat._42 = offset.y; d3dMat._43 = offset.z; } } //------------------------------------------------------------ And I render my animation like this: if (pAnimation->IsFrameUpdated()) { int iTotalBones = 0; //pMatrices is the matrix array that in now frame used to transforming corresponding vertex D3DXMATRIX* pMatrices = pAnimation->GetCurFrameMatrices(&iTotalBones); //use BLENDWEIGHT,BLENDINDICES and TESSFACTOR source stream to transform each vertex. //TESSFACTOR is the number of bones assigned to each vertex. Because I use VS to render //skeleton animation. } I think that every thing is finined, but the render result is not correct! And I don''t know, what''s error I maked?

Share this post


Link to post
Share on other sites
Advertisement

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!