what is the difference between absolute/hierarchical orientation and how do i successfully change the coordinate system? RRS feed

  • Question

  • Hello Guys, 

    i am currently working on an application(C++) which uses KINECT NUI as input, and i try to move a model based on the COLLADA coordinate system. I have some problems understanding the KINECT API..

    What exactly is the difference between absolute orientation and hierarchical orientation? Is this only the coordinate system, or are the joint orientation already multiplied by each other?

    The COLLADA format uses Z up X to the right and Y in the far. As far is i understand this, when i use absolute orientation the Y is up, X is to the right and Z is towards me, how do i successfully change the input coordinate system to the coordinate system i want?

    Monday, April 22, 2013 12:19 PM

All replies

  • The hierarchical orientation for a joint is expressed relative to the previous joint.. The absolute orientations are all expressed relative to the camera.

    Think of the skeleton as a tree, with the root at the hip center joint. For every given joint, the hierarchical orientation is the orientation relative to the parent joint in the tree. The absolute orientation at the same joint is the result of multiplying the hierarchical orientations of all of the ancestors, all the way back to the root.

    The root (hip center) is a special case. Its hierarchical orientation indicates the orientation of the plane formed by the three hip joints (center, left, right), relative to the camera.

    This article contains helpful diagrams to explain it all.

    John | Kinect for Windows development team

    Monday, April 22, 2013 7:11 PM
  • Thank you for your reply.

    When i get the absolute orientation out of the kinect, is this already the result of the multiplication of the hierarchical rotations?

    So if i have an engine, which already multiplies the bones in the background, i definitely need the hierarchical rotations?

    Tuesday, April 23, 2013 8:21 AM
  • Correct, and correct.

    Depending on the conventions used by your engine, you may need to transform each of the hierarchical orientations, to get them oriented according to your conventions. The article I cited above describes the conventions used by the Kinect for Windows SDK.

    John | Kinect for Windows development team

    Tuesday, April 23, 2013 7:54 PM
  • Thank you again.

    I read this article about a dozen times, but i still dont know how to achieve what i want.. as far as i understand, i need to convert the coordinate system of each quaternion i get, to match my Z UP coordinate system? For example, if i want to rotate the right shoulder of my model, with the quaternion of the right shoulder i get from kinect..everything looks messed up. I dont know if the conversion to another coordinate system is the only thing i need..

    Wednesday, April 24, 2013 9:08 AM