Jump to content

  • Log In with Google      Sign In   
  • Create Account


PowerVR POD files data conversion problem


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
No replies to this topic

#1 wtherapy   Members   -  Reputation: 117

Like
0Likes
Like

Posted 19 November 2012 - 10:20 AM

Hello,

I am importing various animations from PowerVR POD files. I need conversions from matrices to quaternions & stuff, as I want to implement animation blending and inter-frame interpolation.

My problem is that, when reading data exported from powervr as quaternions, translations and rotations, matrices converted from those TRS does not equal ( even by far ) the matrices read if I export the models with matrices.
Also, if I try to decompose the matrix into TRS, after extracting the scaling component, the resulting matrix is not a rotation matrix: columns are unit length, but rows aren't ( I have removed the translation component ).

For example, when I export as matrices ( model has about 100 bones, with about 250 frames ), the 11174 matrix is, COLUMN ORDERED:

-0.209940,
-0.409073,
-0.000002,
0.000000,
0.960153,
-0.089445,
-0.000002,
0.000000,
0.000003,
-0.000001,
0.725079,
0.000000,
-0.116999,
-0.340356,
-0.732254,
1.000000

but, when I export as TRS, the 11174 set of parameters are:

Trans = (-0.116999, -0.340356, -0.732254)
Scale = (0.418738, 0.982837, 0.725079)
Quat = (0.000000, -0.000002, 0.778976, 0.627054)

I have checked and by no means the TRS could be converted to a matrix that comes even close to the one read from powervr.

Objects are read from the POD file as follow:

translation: Vector3(&(node->pfAnimPosition[j * 3]));
rotation: Quaternion(
node->pfAnimRotation[j * 4 + 0],
node->pfAnimRotation[j * 4 + 1],
node->pfAnimRotation[j * 4 + 2],
node->pfAnimRotation[j * 4 + 3]
);
scale: Vector3(&(node->pfAnimScale[j * 7]))

Perhaps there is some bug in my conversion code although I have checked 1000 times, also I have created random translation, rotations and scaling and converted to matrices and then converted back to TRS and got the same values. That's why I have put here the parameters read from POD file.
From imgtec site I received no answer.
Or perhaps the frame matrices does not come from a simple T*R*S transform and there is something more.
Animations are done in 3dmax.

Any solution or explanation for this is welcome.
Useless to say, the model, when used with matrices that come from TRS read from the POD file, deforms horribly. The first frame looks good, but the following not.

Sponsor:



Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS