OpenNI to Directx matrices problem

Started by
-1 comments, last by Posedoll 11 years, 5 months ago
Hi,

I'm having serious problems converting the orientation matrix from OpenNi to a Direct3D matrix.

I'm using my own format for the 3D model and the skeleton and I'm also using just a plain box just to see if it woks independently from the character. It does not.

I am as now just rotating shoulder in order to isolate the problem.

Standing in T-Pose works ok.
Putting arms forward works ok.
Moving arms up and down with arms in front of me works ok.
However when I move arms up and down the arms rotate instead.

What could be the problem?

[source lang="cpp"]GetLimbOrientation(&Pos, &Ori, limbid, 0);

D3DXMatrixIdentity(&DxMat);

DxMat._11 = Ori[0];
DxMat._21 = -Ori[3];
DxMat._31 = Ori[6];

DxMat._12 = -Ori[1];
DxMat._22 = Ori[4];
DxMat._32 = -Ori[7];

DxMat._13 = Ori[2];
DxMat._23 = -Ori[5];
DxMat._33 = Ori[8];[/source]

I got the minuses from the "Sinbad" sample that is made for Ogre, It works even worse without them.

As I understand it, the difference between an Ogre-matrix and a D3DXMatrix is that the later one is just a transposed Ogre-matrix but I still can't get it to work.

Can anyone please help me?

This topic is closed to new replies.

Advertisement