The open source OpenXR runtime
at main 70 lines 2.1 kB view raw
1// Copyright 2019-2021, Collabora, Ltd. 2// SPDX-License-Identifier: BSL-1.0 3/*! 4 * @file 5 * @brief Documentation-only header. 6 * @author Pete Black <pblack@collabora.com> 7 * @author Jakob Bornecrantz <jakob@collabora.com> 8 * @author Rylie Pavlik <rylie.pavlik@collabora.com> 9 * @ingroup aux_tracking 10 */ 11 12#pragma once 13 14#ifdef __cplusplus 15extern "C" { 16#endif 17 18 19/*! 20 * @defgroup aux_tracking Tracking 21 * @ingroup aux 22 * @brief Trackers, filters and associated helper code. 23 * 24 * 25 * ### Coordinate system 26 * 27 * Right now there is no specific convention on where a tracking systems 28 * coordinate system is centered, and is something we probably need to figure 29 * out. Right now the stereo based tracking system used by the PSVR and PSMV 30 * tracking system is centered on the camera that OpenCV decided is origin. 31 * 32 * To go a bit further on the PSVR/PSMV case. Think about a idealized start up 33 * case, the user is wearing the HMD headset and holding two PSMV controllers. 34 * The HMD's coordinate system axis are perfectly parallel with the user 35 * coordinate with the user's coordinate system. Where -Z is forward. The user 36 * holds the controllers with the ball pointing up and the buttons on the back 37 * pointing forward. Which if you read the documentation of @ref psmv_device 38 * will that the axis of the PSMV are also perfectly aligned with the users 39 * coordinate system. So everything "attached" to the user has its coordinate 40 * system parallel to the user's. 41 * 42 * The camera on the other hand is looking directly at the user, its Z-axis and 43 * X-axis is flipped in relation to the user's. So to compare what is sees to 44 * what the user sees, everything is rotated 180° around the Y-axis. 45 */ 46 47/*! 48 * @dir auxiliary/tracking 49 * @ingroup aux 50 * 51 * @brief Trackers, filters and associated helper code. 52 */ 53 54 55#ifdef __cplusplus 56 57namespace xrt::auxiliary { 58 /*! 59 * @brief Namespace used by C++ interfaces in the auxiliary tracking library code. 60 */ 61 namespace tracking { 62 // Empty 63 } // namespace tracking 64} // namespace xrt::auxiliary 65#endif 66 67 68#ifdef __cplusplus 69} 70#endif