Forum Discussion
ssjg
11 years agoHonored Guest
Position tracking - where is the target point?
A quick question about the position value reported by: ovrTrackingState ts = ovrHmd_GetTrackingState(hmd, 0.0); ovrVector3f p = ts.HeadPose.ThePose.Position; Where is p located in real space. I...
bluenote
11 years agoExplorer
One should also mention: Without calling ovrHmd_RecenterPose(), the Rift always initializes with the origin of the tracking coordinate system exactly 1 meter in front of the camera. As soon as you call ovrHmd_RecenterPose(), the current tracking position will become the new origin and the viewing direction will by the new y-axis.
@cyber: By the way, I wanted to suggest the following for a while. Imho it would be much better to add another version of ovrHmd_RecenterPose(), which allows to specify an arbitrary origin and yaw manually. In many applications (*) it would be preferable to store the last known "recenter pose", and re-load it on start up. Currently it is not possible to use ovrHmd_RecenterPose(), since it only allows to set the origin to the _current_ position, and not any other stored position.
As far as I can see, the only possibility to persist the tracking orientation with the current design is to never use ovrHmd_RecenterPose() at all. What I do instead is to always stick with the initial tracking coordinate system and subtract the "recenter position" manually.
(*) Use case: In a simulator cockpit, a user may spend a lot of time recentering the Rift so that the phyiscal and virtual input devices line up perfectly. Currently this has to be done again every time, since most applications do not care about persisting the tracking origin. If this would be implemented in the SDK, we would probably see this feature much more often.
@cyber: By the way, I wanted to suggest the following for a while. Imho it would be much better to add another version of ovrHmd_RecenterPose(), which allows to specify an arbitrary origin and yaw manually. In many applications (*) it would be preferable to store the last known "recenter pose", and re-load it on start up. Currently it is not possible to use ovrHmd_RecenterPose(), since it only allows to set the origin to the _current_ position, and not any other stored position.
As far as I can see, the only possibility to persist the tracking orientation with the current design is to never use ovrHmd_RecenterPose() at all. What I do instead is to always stick with the initial tracking coordinate system and subtract the "recenter position" manually.
(*) Use case: In a simulator cockpit, a user may spend a lot of time recentering the Rift so that the phyiscal and virtual input devices line up perfectly. Currently this has to be done again every time, since most applications do not care about persisting the tracking origin. If this would be implemented in the SDK, we would probably see this feature much more often.
Quick Links
- Horizon Developer Support
- Quest User Forums
- Troubleshooting Forum for problems with a game or app
- Quest Support for problems with your device
Other Meta Support
Related Content
- 2 years ago
- 12 days ago