Jump to content

Positions and orientations of HMD/Tracker and world coordinate system


Recommended Posts


I hope that the right sub area. I am using the HTC Vive with the OpenVR SDK to get orientations and positions of devices. 

Could someone tell me where I can find the exact position and orientation of the coordinate system of the HMD? When I search I find different information. Is the Z axis positive or negative in the user's direction of view? Is the CS centered on the surface of the HMD or inside the device?

How is the orientation of the world coordinate system?


Thanks so much for your help!

@Jad @Dario

Link to comment
Share on other sites

@muella91, We've never released official guidelines for the HMDs as there's a number of HMDs each of which have several production revisions so it gets tricky quickly. Generally speaking, the origin is directly in the mid-line of the shell, a few mm behind the dead centerpoint of the display array. I'm talking to R&D to get a more official response - which HMD are you developing with?

Here's the guidelines for Vive Tracker:




Link to comment
Share on other sites

Thank you for your quick response.

I am developing with the HTC VIVE (basic edition).

I have found a CAD model of the HMD (I don't think an official one), is the position of the coordinate system shown correctly here? The first picture is the view from the bottom, the second the side view. 

.Is the orientation of the coordinate system correct?  I have also found pictures where the positive z-axis points to the back (to the user). 


I also develop with the Leap Motion. Is the information that the offset of the origin from the Leap Motion device to the HMD origin in z-direction is 9.5 cm correct?



Link to comment
Share on other sites

  • 2 weeks later...


So ultimately there is some variation on the answer here - depending on how you're developing your project, there could be some variations on the answers:

  • If you're developing in Unity, the SteamVR plugin automatically adjusts for the position so the developer doesn't have to retrieve the data. If you need to retrieve the data manually, you can do so via a camera object or via API.
  • The Z-Axis direction depends on your pipeline. If using Unity, +Z is forward facing (away from the user) and is left handed coordinate system.
    • In OpenVR's, the forward facing direction is (away from the user)  is -Z because it's based on a right handed system.
  • The X axis origin is direct between the center of the two lenses.
  • The Y axis origin also passes through the center points of the two lenses.
  • The Z axis is offset from a plane along the center axis' of the lenses. The offset is towards the the user and has a specific value for each HMD:
    • The offset is 16mm towards the user for Vive
    • The offset is 14mm towards the user for Vive Pro

So overall, the image you posted turns out to actually be somewhat in the right location if you're querying via OpenVR.

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...

This is very helpful and matches what actually comes out of OpenVR. Can you please add the Vive Tracker to the diagrams in the pdf above? The image in the developers guide has a "dancing ballerina" optical illusion that can happy, causing ambiguous interpretations of the axes. Also, it doesn't represent what OpenVR spits out.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...