The open source OpenXR runtime

xrt: rename offset → initial_offset on xrt_tracking_origin

Part-of: <https://gitlab.freedesktop.org/monado/monado/-/merge_requests/2286>

galister 6f8c0d91 eae4472f

+57 -57
+12 -12
src/xrt/auxiliary/util/u_builders.c
··· 113 struct xrt_tracking_origin *right_origin = right ? right->tracking_origin : NULL; 114 115 if (left_origin != NULL && left_origin->type == XRT_TRACKING_TYPE_NONE) { 116 - left_origin->offset.position.x = -0.2f; 117 - left_origin->offset.position.y = 1.3f; 118 - left_origin->offset.position.z = -0.5f; 119 } 120 121 if (right_origin != NULL && right_origin->type == XRT_TRACKING_TYPE_NONE) { 122 - right_origin->offset.position.x = 0.2f; 123 - right_origin->offset.position.y = 1.3f; 124 - right_origin->offset.position.z = -0.5f; 125 } 126 127 // Head comes last, because left and right may share tracking origin. 128 if (head_origin != NULL && head_origin->type == XRT_TRACKING_TYPE_NONE) { 129 // "nominal height" 1.6m 130 - head_origin->offset.position.x = 0.0f; 131 - head_origin->offset.position.y = 1.6f; 132 - head_origin->offset.position.z = 0.0f; 133 } 134 135 if (head_origin) { 136 - apply_offset(&head_origin->offset.position, global_tracking_origin_offset); 137 } 138 if (left_origin && left_origin != head_origin) { 139 - apply_offset(&left->tracking_origin->offset.position, global_tracking_origin_offset); 140 } 141 if (right_origin && right_origin != head_origin && right_origin != left_origin) { 142 - apply_offset(&right->tracking_origin->offset.position, global_tracking_origin_offset); 143 } 144 } 145
··· 113 struct xrt_tracking_origin *right_origin = right ? right->tracking_origin : NULL; 114 115 if (left_origin != NULL && left_origin->type == XRT_TRACKING_TYPE_NONE) { 116 + left_origin->initial_offset.position.x = -0.2f; 117 + left_origin->initial_offset.position.y = 1.3f; 118 + left_origin->initial_offset.position.z = -0.5f; 119 } 120 121 if (right_origin != NULL && right_origin->type == XRT_TRACKING_TYPE_NONE) { 122 + right_origin->initial_offset.position.x = 0.2f; 123 + right_origin->initial_offset.position.y = 1.3f; 124 + right_origin->initial_offset.position.z = -0.5f; 125 } 126 127 // Head comes last, because left and right may share tracking origin. 128 if (head_origin != NULL && head_origin->type == XRT_TRACKING_TYPE_NONE) { 129 // "nominal height" 1.6m 130 + head_origin->initial_offset.position.x = 0.0f; 131 + head_origin->initial_offset.position.y = 1.6f; 132 + head_origin->initial_offset.position.z = 0.0f; 133 } 134 135 if (head_origin) { 136 + apply_offset(&head_origin->initial_offset.position, global_tracking_origin_offset); 137 } 138 if (left_origin && left_origin != head_origin) { 139 + apply_offset(&left->tracking_origin->initial_offset.position, global_tracking_origin_offset); 140 } 141 if (right_origin && right_origin != head_origin && right_origin != left_origin) { 142 + apply_offset(&right->tracking_origin->initial_offset.position, global_tracking_origin_offset); 143 } 144 } 145
+1 -1
src/xrt/auxiliary/util/u_device.c
··· 316 if (alloc_tracking) { 317 xdev->tracking_origin = (struct xrt_tracking_origin *)(ptr + offset_tracking); 318 xdev->tracking_origin->type = XRT_TRACKING_TYPE_NONE; 319 - xdev->tracking_origin->offset.orientation.w = 1.0f; 320 snprintf(xdev->tracking_origin->name, XRT_TRACKING_NAME_LEN, "%s", "No tracking"); 321 } 322
··· 316 if (alloc_tracking) { 317 xdev->tracking_origin = (struct xrt_tracking_origin *)(ptr + offset_tracking); 318 xdev->tracking_origin->type = XRT_TRACKING_TYPE_NONE; 319 + xdev->tracking_origin->initial_offset.orientation.w = 1.0f; 320 snprintf(xdev->tracking_origin->name, XRT_TRACKING_NAME_LEN, "%s", "No tracking"); 321 } 322
+1 -1
src/xrt/auxiliary/util/u_space_overseer.c
··· 914 if (ptr != NULL) { 915 xs = (struct xrt_space *)ptr; 916 } else { 917 - u_space_overseer_create_offset_space(uso, root, &torig->offset, &xs); 918 u_hashmap_int_insert(torig_map, key, xs); 919 } 920
··· 914 if (ptr != NULL) { 915 xs = (struct xrt_space *)ptr; 916 } else { 917 + u_space_overseer_create_offset_space(uso, root, &torig->initial_offset, &xs); 918 u_hashmap_int_insert(torig_map, key, xs); 919 } 920
+2 -2
src/xrt/drivers/euroc/euroc_device.c
··· 196 197 xd->tracking_origin = &ed->tracking_origin; 198 xd->tracking_origin->type = XRT_TRACKING_TYPE_EXTERNAL_SLAM; 199 - xd->tracking_origin->offset.orientation.w = 1.0f; 200 snprintf(xd->tracking_origin->name, XRT_TRACKING_NAME_LEN, "%s %s", dev_name, "SLAM Tracker"); 201 202 if (is_hmd) { ··· 217 u_var_add_root(ed, dev_name, false); 218 u_var_add_pose(ed, &ed->pose, "pose"); 219 u_var_add_pose(ed, &ed->offset, "offset"); 220 - u_var_add_pose(ed, &ed->tracking_origin.offset, "tracking offset"); 221 222 bool tracked = xp->tracking->create_tracked_slam(xp->tracking, &ed->slam) >= 0; 223 if (!tracked) {
··· 196 197 xd->tracking_origin = &ed->tracking_origin; 198 xd->tracking_origin->type = XRT_TRACKING_TYPE_EXTERNAL_SLAM; 199 + xd->tracking_origin->initial_offset.orientation.w = 1.0f; 200 snprintf(xd->tracking_origin->name, XRT_TRACKING_NAME_LEN, "%s %s", dev_name, "SLAM Tracker"); 201 202 if (is_hmd) { ··· 217 u_var_add_root(ed, dev_name, false); 218 u_var_add_pose(ed, &ed->pose, "pose"); 219 u_var_add_pose(ed, &ed->offset, "offset"); 220 + u_var_add_pose(ed, &ed->tracking_origin.initial_offset, "tracking offset"); 221 222 bool tracked = xp->tracking->create_tracked_slam(xp->tracking, &ed->slam) >= 0; 223 if (!tracked) {
+4 -4
src/xrt/drivers/ht/ht_driver.c
··· 203 } 204 205 htd->base.tracking_origin->type = XRT_TRACKING_TYPE_RGB; 206 - htd->base.tracking_origin->offset.position.x = 0.0f; 207 - htd->base.tracking_origin->offset.position.y = 0.0f; 208 - htd->base.tracking_origin->offset.position.z = 0.0f; 209 - htd->base.tracking_origin->offset.orientation.w = 1.0f; 210 211 htd->base.update_inputs = u_device_noop_update_inputs; 212 htd->base.get_hand_tracking = ht_device_get_hand_tracking;
··· 203 } 204 205 htd->base.tracking_origin->type = XRT_TRACKING_TYPE_RGB; 206 + htd->base.tracking_origin->initial_offset.position.x = 0.0f; 207 + htd->base.tracking_origin->initial_offset.position.y = 0.0f; 208 + htd->base.tracking_origin->initial_offset.position.z = 0.0f; 209 + htd->base.tracking_origin->initial_offset.orientation.w = 1.0f; 210 211 htd->base.update_inputs = u_device_noop_update_inputs; 212 htd->base.get_hand_tracking = ht_device_get_hand_tracking;
+3 -3
src/xrt/drivers/hydra/hydra_driver.c
··· 595 hs->base.type = XRT_TRACKING_TYPE_HYDRA; 596 snprintf(hs->base.name, XRT_TRACKING_NAME_LEN, "%s", "Razer Hydra magnetic tracking"); 597 // Arbitrary static transform from local space to base. 598 - hs->base.offset.position.y = 1.0f; 599 - hs->base.offset.position.z = -0.25f; 600 - hs->base.offset.orientation.w = 1.0f; 601 602 hs->data_hid = data_hid; 603 hs->command_hid = command_hid;
··· 595 hs->base.type = XRT_TRACKING_TYPE_HYDRA; 596 snprintf(hs->base.name, XRT_TRACKING_NAME_LEN, "%s", "Razer Hydra magnetic tracking"); 597 // Arbitrary static transform from local space to base. 598 + hs->base.initial_offset.position.y = 1.0f; 599 + hs->base.initial_offset.position.z = -0.25f; 600 + hs->base.initial_offset.orientation.w = 1.0f; 601 602 hs->data_hid = data_hid; 603 hs->command_hid = command_hid;
+4 -4
src/xrt/drivers/multi_wrapper/multi.c
··· 109 m_space_relation_ident(&in_target_space); 110 in_target_space.relation_flags = tracker_relation.relation_flags; 111 112 - struct xrt_pose *target_offset = &d->tracking_override.target->tracking_origin->offset; 113 - struct xrt_pose *tracker_offset = &d->tracking_override.tracker->tracking_origin->offset; 114 115 attached_override(d, &target_relation, target_offset, &tracker_relation, tracker_offset, 116 &in_target_space, out_relation); ··· 163 m_space_relation_ident(&in_target_space); 164 in_target_space.relation_flags = tracker_relation.relation_flags; 165 166 - struct xrt_pose *target_offset = &d->tracking_override.target->tracking_origin->offset; 167 - struct xrt_pose *tracker_offset = &d->tracking_override.tracker->tracking_origin->offset; 168 169 attached_override(d, &out_value->hand_pose, target_offset, &tracker_relation, tracker_offset, 170 &in_target_space, &out_value->hand_pose);
··· 109 m_space_relation_ident(&in_target_space); 110 in_target_space.relation_flags = tracker_relation.relation_flags; 111 112 + struct xrt_pose *target_offset = &d->tracking_override.target->tracking_origin->initial_offset; 113 + struct xrt_pose *tracker_offset = &d->tracking_override.tracker->tracking_origin->initial_offset; 114 115 attached_override(d, &target_relation, target_offset, &tracker_relation, tracker_offset, 116 &in_target_space, out_relation); ··· 163 m_space_relation_ident(&in_target_space); 164 in_target_space.relation_flags = tracker_relation.relation_flags; 165 166 + struct xrt_pose *target_offset = &d->tracking_override.target->tracking_origin->initial_offset; 167 + struct xrt_pose *tracker_offset = &d->tracking_override.tracker->tracking_origin->initial_offset; 168 169 attached_override(d, &out_value->hand_pose, target_offset, &tracker_relation, tracker_offset, 170 &in_target_space, &out_value->hand_pose);
+1 -1
src/xrt/drivers/ohmd/oh_device.c
··· 1233 //! @todo: support mix of 3dof and 6dof OpenHMD devices 1234 struct oh_system *sys = U_TYPED_CALLOC(struct oh_system); 1235 sys->base.type = XRT_TRACKING_TYPE_NONE; 1236 - sys->base.offset.orientation.w = 1.0f; 1237 1238 u_var_add_root(sys, "OpenHMD Wrapper", false); 1239
··· 1233 //! @todo: support mix of 3dof and 6dof OpenHMD devices 1234 struct oh_system *sys = U_TYPED_CALLOC(struct oh_system); 1235 sys->base.type = XRT_TRACKING_TYPE_NONE; 1236 + sys->base.initial_offset.orientation.w = 1.0f; 1237 1238 u_var_add_root(sys, "OpenHMD Wrapper", false); 1239
+1 -1
src/xrt/drivers/realsense/rs_ddev.c
··· 466 rs->base.destroy = rs_ddev_destroy; 467 rs->base.name = XRT_DEVICE_REALSENSE; 468 rs->base.tracking_origin->type = XRT_TRACKING_TYPE_EXTERNAL_SLAM; 469 - rs->base.tracking_origin->offset = (struct xrt_pose)XRT_POSE_IDENTITY; 470 471 // Print name. 472 snprintf(rs->base.str, XRT_DEVICE_NAME_LEN, "Intel RealSense Device-SLAM");
··· 466 rs->base.destroy = rs_ddev_destroy; 467 rs->base.name = XRT_DEVICE_REALSENSE; 468 rs->base.tracking_origin->type = XRT_TRACKING_TYPE_EXTERNAL_SLAM; 469 + rs->base.tracking_origin->initial_offset = (struct xrt_pose)XRT_POSE_IDENTITY; 470 471 // Print name. 472 snprintf(rs->base.str, XRT_DEVICE_NAME_LEN, "Intel RealSense Device-SLAM");
+2 -2
src/xrt/drivers/remote/r_hub.c
··· 415 r->base.destroy = r_hub_system_devices_destroy; 416 r->base.get_roles = r_hub_system_devices_get_roles; 417 r->origin.type = XRT_TRACKING_TYPE_RGB; 418 - r->origin.offset = (struct xrt_pose)XRT_POSE_IDENTITY; 419 r->reset.head.center = (struct xrt_pose)XRT_POSE_IDENTITY; 420 r->reset.head.center.position.y = 1.6f; 421 r->reset.left.active = true; ··· 487 488 struct xrt_space *root = xso->semantic.root; // Convenience 489 struct xrt_space *offset = NULL; 490 - u_space_overseer_create_offset_space(uso, root, &r->origin.offset, &offset); 491 492 for (uint32_t i = 0; i < r->base.xdev_count; i++) { 493 u_space_overseer_link_space_to_device(uso, offset, r->base.xdevs[i]);
··· 415 r->base.destroy = r_hub_system_devices_destroy; 416 r->base.get_roles = r_hub_system_devices_get_roles; 417 r->origin.type = XRT_TRACKING_TYPE_RGB; 418 + r->origin.initial_offset = (struct xrt_pose)XRT_POSE_IDENTITY; 419 r->reset.head.center = (struct xrt_pose)XRT_POSE_IDENTITY; 420 r->reset.head.center.position.y = 1.6f; 421 r->reset.left.active = true; ··· 487 488 struct xrt_space *root = xso->semantic.root; // Convenience 489 struct xrt_space *offset = NULL; 490 + u_space_overseer_create_offset_space(uso, root, &r->origin.initial_offset, &offset); 491 492 for (uint32_t i = 0; i < r->base.xdev_count; i++) { 493 u_space_overseer_link_space_to_device(uso, offset, r->base.xdevs[i]);
+1 -1
src/xrt/drivers/rift_s/rift_s.c
··· 158 159 struct rift_s_system *sys = U_TYPED_CALLOC(struct rift_s_system); 160 sys->base.type = XRT_TRACKING_TYPE_NONE; 161 - sys->base.offset.orientation.w = 1.0f; 162 163 /* Init refcount */ 164 sys->ref.count = 1;
··· 158 159 struct rift_s_system *sys = U_TYPED_CALLOC(struct rift_s_system); 160 sys->base.type = XRT_TRACKING_TYPE_NONE; 161 + sys->base.initial_offset.orientation.w = 1.0f; 162 163 /* Init refcount */ 164 sys->ref.count = 1;
+1 -1
src/xrt/drivers/steamvr_lh/steamvr_lh.cpp
··· 115 c->providers = std::move(providers); 116 std::strncpy(c->name, "SteamVR Lighthouse Tracking", XRT_TRACKING_NAME_LEN); 117 c->type = XRT_TRACKING_TYPE_LIGHTHOUSE; 118 - c->offset = XRT_POSE_IDENTITY; 119 for (vr::IServerTrackedDeviceProvider *const &driver : c->providers) { 120 vr::EVRInitError err = driver->Init(c.get()); 121 if (err != vr::VRInitError_None) {
··· 115 c->providers = std::move(providers); 116 std::strncpy(c->name, "SteamVR Lighthouse Tracking", XRT_TRACKING_NAME_LEN); 117 c->type = XRT_TRACKING_TYPE_LIGHTHOUSE; 118 + c->initial_offset = XRT_POSE_IDENTITY; 119 for (vr::IServerTrackedDeviceProvider *const &driver : c->providers) { 120 vr::EVRInitError err = driver->Init(c.get()); 121 if (err != vr::VRInitError_None) {
+4 -4
src/xrt/drivers/survive/survive_driver.c
··· 1336 ss->ctx = actx; 1337 ss->base.type = XRT_TRACKING_TYPE_LIGHTHOUSE; 1338 snprintf(ss->base.name, XRT_TRACKING_NAME_LEN, "%s", "Libsurvive Tracking"); 1339 - ss->base.offset.position.x = 0.0f; 1340 - ss->base.offset.position.y = 0.0f; 1341 - ss->base.offset.position.z = 0.0f; 1342 - ss->base.offset.orientation.w = 1.0f; 1343 ss->timecode_offset_ms = (struct u_var_draggable_f32){ 1344 .val = debug_get_float_option_survive_timecode_offset_ms(), 1345 .min = -20.0,
··· 1336 ss->ctx = actx; 1337 ss->base.type = XRT_TRACKING_TYPE_LIGHTHOUSE; 1338 snprintf(ss->base.name, XRT_TRACKING_NAME_LEN, "%s", "Libsurvive Tracking"); 1339 + ss->base.initial_offset.position.x = 0.0f; 1340 + ss->base.initial_offset.position.y = 0.0f; 1341 + ss->base.initial_offset.position.z = 0.0f; 1342 + ss->base.initial_offset.orientation.w = 1.0f; 1343 ss->timecode_offset_ms = (struct u_var_draggable_f32){ 1344 .val = debug_get_float_option_survive_timecode_offset_ms(), 1345 .min = -20.0,
+1 -1
src/xrt/drivers/twrap/twrap_slam.c
··· 176 dx->base.destroy = twrap_slam_destroy; 177 dx->base.name = name; 178 dx->base.tracking_origin->type = XRT_TRACKING_TYPE_OTHER; 179 - dx->base.tracking_origin->offset = (struct xrt_pose)XRT_POSE_IDENTITY; 180 dx->base.inputs[0].name = XRT_INPUT_GENERIC_TRACKER_POSE; 181 dx->base.orientation_tracking_supported = true; 182 dx->base.position_tracking_supported = true;
··· 176 dx->base.destroy = twrap_slam_destroy; 177 dx->base.name = name; 178 dx->base.tracking_origin->type = XRT_TRACKING_TYPE_OTHER; 179 + dx->base.tracking_origin->initial_offset = (struct xrt_pose)XRT_POSE_IDENTITY; 180 dx->base.inputs[0].name = XRT_INPUT_GENERIC_TRACKER_POSE; 181 dx->base.orientation_tracking_supported = true; 182 dx->base.position_tracking_supported = true;
+1 -1
src/xrt/drivers/ultraleap_v2/ulv2_driver.cpp
··· 387 ulv2d->base.tracking_origin = &ulv2d->tracking_origin; 388 ulv2d->base.tracking_origin->type = XRT_TRACKING_TYPE_OTHER; 389 390 - math_pose_identity(&ulv2d->base.tracking_origin->offset); 391 392 ulv2d->log_level = debug_get_log_option_ulv2_log(); 393
··· 387 ulv2d->base.tracking_origin = &ulv2d->tracking_origin; 388 ulv2d->base.tracking_origin->type = XRT_TRACKING_TYPE_OTHER; 389 390 + math_pose_identity(&ulv2d->base.tracking_origin->initial_offset); 391 392 ulv2d->log_level = debug_get_log_option_ulv2_log(); 393
+1 -1
src/xrt/drivers/ultraleap_v5/ulv5_driver.cpp
··· 310 ulv5d->base.tracking_origin = &ulv5d->tracking_origin; 311 ulv5d->base.tracking_origin->type = XRT_TRACKING_TYPE_OTHER; 312 313 - math_pose_identity(&ulv5d->base.tracking_origin->offset); 314 315 ulv5d->log_level = debug_get_log_option_ulv5_log(); 316
··· 310 ulv5d->base.tracking_origin = &ulv5d->tracking_origin; 311 ulv5d->base.tracking_origin->type = XRT_TRACKING_TYPE_OTHER; 312 313 + math_pose_identity(&ulv5d->base.tracking_origin->initial_offset); 314 315 ulv5d->log_level = debug_get_log_option_ulv5_log(); 316
+3 -3
src/xrt/include/xrt/xrt_tracking.h
··· 76 enum xrt_tracking_type type; 77 78 /*! 79 - * Read and written to by the state-tracker using the device(s) 80 - * this tracking system is tracking. 81 */ 82 - struct xrt_pose offset; 83 }; 84 85 /*!
··· 76 enum xrt_tracking_type type; 77 78 /*! 79 + * Read-only. Set once by the builder, or in some cases, the driver. 80 + * With some systems, the offset may be changed at runtime using the space overseer. 81 */ 82 + struct xrt_pose initial_offset; 83 }; 84 85 /*!
+2 -2
src/xrt/ipc/client/ipc_client_instance.c
··· 283 memcpy(xtrack->name, ism->itracks[i].name, sizeof(xtrack->name)); 284 285 xtrack->type = ism->itracks[i].type; 286 - xtrack->offset = ism->itracks[i].offset; 287 ii->xtracks[count++] = xtrack; 288 289 u_var_add_root(xtrack, "Tracking origin", true); 290 u_var_add_ro_text(xtrack, xtrack->name, "name"); 291 - u_var_add_pose(xtrack, &xtrack->offset, "offset"); 292 } 293 294 ii->xtrack_count = count;
··· 283 memcpy(xtrack->name, ism->itracks[i].name, sizeof(xtrack->name)); 284 285 xtrack->type = ism->itracks[i].type; 286 + xtrack->initial_offset = ism->itracks[i].offset; 287 ii->xtracks[count++] = xtrack; 288 289 u_var_add_root(xtrack, "Tracking origin", true); 290 u_var_add_ro_text(xtrack, xtrack->name, "name"); 291 + u_var_add_pose(xtrack, &xtrack->initial_offset, "offset"); 292 } 293 294 ii->xtrack_count = count;
+1 -1
src/xrt/ipc/server/ipc_server_process.c
··· 322 struct ipc_shared_tracking_origin *itrack = &ism->itracks[count++]; 323 memcpy(itrack->name, xtrack->name, sizeof(itrack->name)); 324 itrack->type = xtrack->type; 325 - itrack->offset = xtrack->offset; 326 } 327 328 ism->itrack_count = count;
··· 322 struct ipc_shared_tracking_origin *itrack = &ism->itracks[count++]; 323 memcpy(itrack->name, xtrack->name, sizeof(itrack->name)); 324 itrack->type = xtrack->type; 325 + itrack->offset = xtrack->initial_offset; 326 } 327 328 ism->itrack_count = count;
+1 -1
src/xrt/state_trackers/oxr/oxr_session_frame_end.c
··· 1789 do_synchronize_state_change(log, sess); 1790 1791 struct xrt_pose inv_offset = {0}; 1792 - math_pose_invert(&xdev->tracking_origin->offset, &inv_offset); 1793 1794 struct xrt_layer_frame_data data = { 1795 .frame_id = sess->frame_id.begun,
··· 1789 do_synchronize_state_change(log, sess); 1790 1791 struct xrt_pose inv_offset = {0}; 1792 + math_pose_invert(&xdev->tracking_origin->initial_offset, &inv_offset); 1793 1794 struct xrt_layer_frame_data data = { 1795 .frame_id = sess->frame_id.begun,
+4 -4
src/xrt/state_trackers/prober/p_tracking.c
··· 421 fact->base.create_tracked_psvr = p_factory_create_tracked_psvr; 422 fact->base.create_tracked_slam = p_factory_create_tracked_slam; 423 fact->origin.type = XRT_TRACKING_TYPE_RGB; 424 - fact->origin.offset.orientation.y = 1.0f; 425 - fact->origin.offset.position.z = -2.0f; 426 - fact->origin.offset.position.y = 1.0f; 427 fact->p = p; 428 429 snprintf(fact->origin.name, sizeof(fact->origin.name), "PSVR & PSMV tracking"); 430 431 u_var_add_root(fact, "Tracking Factory", false); 432 - u_var_add_pose(fact, &fact->origin.offset, "offset"); 433 434 // Finally set us as the tracking factory. 435 p->base.tracking = &fact->base;
··· 421 fact->base.create_tracked_psvr = p_factory_create_tracked_psvr; 422 fact->base.create_tracked_slam = p_factory_create_tracked_slam; 423 fact->origin.type = XRT_TRACKING_TYPE_RGB; 424 + fact->origin.initial_offset.orientation.y = 1.0f; 425 + fact->origin.initial_offset.position.z = -2.0f; 426 + fact->origin.initial_offset.position.y = 1.0f; 427 fact->p = p; 428 429 snprintf(fact->origin.name, sizeof(fact->origin.name), "PSVR & PSMV tracking"); 430 431 u_var_add_root(fact, "Tracking Factory", false); 432 + u_var_add_pose(fact, &fact->origin.initial_offset, "offset"); 433 434 // Finally set us as the tracking factory. 435 p->base.tracking = &fact->base;
+2 -2
src/xrt/state_trackers/steamvr_drv/ovrd_driver.cpp
··· 881 struct xrt_space_relation rel; 882 xrt_device_get_tracked_pose(m_xdev, grip_name, now_ns, &rel); 883 884 - struct xrt_pose *offset = &m_xdev->tracking_origin->offset; 885 886 struct xrt_relation_chain chain = {}; 887 m_relation_chain_push_relation(&chain, &rel); ··· 1268 struct xrt_space_relation rel; 1269 xrt_device_get_tracked_pose(m_xdev, XRT_INPUT_GENERIC_HEAD_POSE, now_ns, &rel); 1270 1271 - struct xrt_pose *offset = &m_xdev->tracking_origin->offset; 1272 1273 struct xrt_relation_chain chain = {}; 1274 m_relation_chain_push_relation(&chain, &rel);
··· 881 struct xrt_space_relation rel; 882 xrt_device_get_tracked_pose(m_xdev, grip_name, now_ns, &rel); 883 884 + struct xrt_pose *offset = &m_xdev->tracking_origin->initial_offset; 885 886 struct xrt_relation_chain chain = {}; 887 m_relation_chain_push_relation(&chain, &rel); ··· 1268 struct xrt_space_relation rel; 1269 xrt_device_get_tracked_pose(m_xdev, XRT_INPUT_GENERIC_HEAD_POSE, now_ns, &rel); 1270 1271 + struct xrt_pose *offset = &m_xdev->tracking_origin->initial_offset; 1272 1273 struct xrt_relation_chain chain = {}; 1274 m_relation_chain_push_relation(&chain, &rel);
+3 -3
src/xrt/targets/common/target_builder_rgb_tracking.c
··· 301 build.xfctx = xfctx; 302 build.origin = origin; 303 build.origin->type = XRT_TRACKING_TYPE_RGB; 304 - build.origin->offset.orientation.y = 1.0f; 305 - build.origin->offset.position.z = -2.0f; 306 - build.origin->offset.position.y = 1.0f; 307 308 setup_pipeline(xp, &build); 309 #else
··· 301 build.xfctx = xfctx; 302 build.origin = origin; 303 build.origin->type = XRT_TRACKING_TYPE_RGB; 304 + build.origin->initial_offset.orientation.y = 1.0f; 305 + build.origin->initial_offset.position.z = -2.0f; 306 + build.origin->initial_offset.position.y = 1.0f; 307 308 setup_pipeline(xp, &build); 309 #else
+1 -1
src/xrt/targets/sdl_test/sdl_device.c
··· 120 u_distortion_mesh_set_none(xdev); 121 122 // Tracking origin. 123 - xdev->tracking_origin->offset = (struct xrt_pose)XRT_POSE_IDENTITY; 124 xdev->tracking_origin->type = XRT_TRACKING_TYPE_OTHER; 125 snprintf(xdev->tracking_origin->name, XRT_TRACKING_NAME_LEN, "SDL Tracking"); 126 }
··· 120 u_distortion_mesh_set_none(xdev); 121 122 // Tracking origin. 123 + xdev->tracking_origin->initial_offset = (struct xrt_pose)XRT_POSE_IDENTITY; 124 xdev->tracking_origin->type = XRT_TRACKING_TYPE_OTHER; 125 snprintf(xdev->tracking_origin->name, XRT_TRACKING_NAME_LEN, "SDL Tracking"); 126 }