The open source OpenXR runtime
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

d/{rift_s,vive,ns}: Share hand bounding box with head tracker

authored by

Mateo de Mayo and committed by
Simon Zeni
6afed4dc eadc592c

+21 -16
+4 -3
src/xrt/drivers/rift_s/rift_s_tracker.c
··· 232 232 static int 233 233 rift_s_create_hand_tracker(struct rift_s_tracker *t, 234 234 struct xrt_frame_context *xfctx, 235 + struct xrt_hand_masks_sink *masks_sink, 235 236 struct xrt_slam_sinks **out_sinks, 236 237 struct xrt_device **out_device) 237 238 { ··· 252 253 extra_camera_info.views[0].camera_orientation = CAMERA_ORIENTATION_90; 253 254 extra_camera_info.views[1].camera_orientation = CAMERA_ORIENTATION_90; 254 255 255 - // TODO@mateosss: Use proper masks_sink in all drivers and not null 256 - struct t_hand_tracking_create_info create_info = {.cams_info = extra_camera_info, .masks_sink = NULL}; 256 + struct t_hand_tracking_create_info create_info = {.cams_info = extra_camera_info, .masks_sink = masks_sink}; 257 257 258 258 int create_status = ht_device_create(xfctx, // 259 259 t->stereo_calib, // ··· 404 404 // Initialize hand tracker 405 405 struct xrt_slam_sinks *hand_sinks = NULL; 406 406 struct xrt_device *hand_device = NULL; 407 + struct xrt_hand_masks_sink *masks_sink = slam_sinks->hand_masks; 407 408 if (t->tracking.hand_enabled) { 408 - int hand_status = rift_s_create_hand_tracker(t, xfctx, &hand_sinks, &hand_device); 409 + int hand_status = rift_s_create_hand_tracker(t, xfctx, masks_sink, &hand_sinks, &hand_device); 409 410 if (hand_status != 0 || hand_sinks == NULL || hand_device == NULL) { 410 411 RIFT_S_WARN("Unable to setup the hand tracker"); 411 412 rift_s_tracker_destroy(t);
+4 -1
src/xrt/targets/common/target_builder_lighthouse.c
··· 201 201 struct xrt_frame_context *xfctx, 202 202 struct xrt_pose head_in_left_cam, 203 203 struct t_stereo_camera_calibration *stereo_calib, 204 + struct xrt_hand_masks_sink *masks_sink, 204 205 struct xrt_slam_sinks **out_sinks, 205 206 struct xrt_device **out_devices) 206 207 { ··· 233 234 info.views[0].boundary.circle.normalized_radius = 0.55; 234 235 info.views[1].boundary.circle.normalized_radius = 0.55; 235 236 236 - struct t_hand_tracking_create_info create_info = {.cams_info = info, .masks_sink = NULL}; 237 + struct t_hand_tracking_create_info create_info = {.cams_info = info, .masks_sink = masks_sink}; 237 238 238 239 struct xrt_device *ht_device = NULL; 239 240 int create_status = ht_device_create( // ··· 384 385 // Initialize hand tracker 385 386 struct xrt_slam_sinks *hand_sinks = NULL; 386 387 struct xrt_device *hand_devices[2] = {NULL}; 388 + struct xrt_hand_masks_sink *masks_sink = slam_sinks->hand_masks; 387 389 if (hand_enabled) { 388 390 bool success = valve_index_hand_track( // 389 391 lhs, // ··· 391 393 xfctx, // 392 394 head_in_left_cam, // 393 395 stereo_calib, // 396 + masks_sink, // 394 397 &hand_sinks, // 395 398 hand_devices); // 396 399 if (!success) {
+13 -12
src/xrt/targets/common/target_builder_north_star.c
··· 295 295 depthai_fs_get_stereo_calibration(the_fs, &calib); 296 296 297 297 298 + struct xrt_slam_sinks *slam_sinks = NULL; 299 + xret = twrap_slam_create_device(xfctx, XRT_DEVICE_DEPTHAI, &slam_sinks, out_head_device); 300 + if (xret != XRT_SUCCESS) { 301 + U_LOG_E("twrap_slam_create_device: %u", xret); 302 + return xret; 303 + } 304 + if (slam_sinks == NULL) { 305 + U_LOG_E("twrap_slam_create_device: Returned NULL slam_sinks!"); 306 + return XRT_ERROR_DEVICE_CREATION_FAILED; 307 + } 308 + 298 309 #ifdef XRT_BUILD_DRIVER_HANDTRACKING 299 310 struct xrt_slam_sinks *hand_sinks = NULL; 311 + struct xrt_hand_masks_sink *masks_sink = slam_sinks->hand_masks; 300 312 301 313 struct t_camera_extra_info extra_camera_info = {0}; 302 314 ··· 311 323 extra_camera_info.views[0].boundary_type = HT_IMAGE_BOUNDARY_NONE; 312 324 extra_camera_info.views[1].boundary_type = HT_IMAGE_BOUNDARY_NONE; 313 325 314 - struct t_hand_tracking_create_info create_info = {.cams_info = extra_camera_info, .masks_sink = NULL}; 326 + struct t_hand_tracking_create_info create_info = {.cams_info = extra_camera_info, .masks_sink = masks_sink}; 315 327 316 328 int create_status = ht_device_create( // 317 329 xfctx, // ··· 324 336 return XRT_ERROR_DEVICE_CREATION_FAILED; 325 337 } 326 338 #endif 327 - 328 - struct xrt_slam_sinks *slam_sinks = NULL; 329 - xret = twrap_slam_create_device(xfctx, XRT_DEVICE_DEPTHAI, &slam_sinks, out_head_device); 330 - if (xret != XRT_SUCCESS) { 331 - U_LOG_E("twrap_slam_create_device: %u", xret); 332 - return xret; 333 - } 334 - if (slam_sinks == NULL) { 335 - U_LOG_E("twrap_slam_create_device: Returned NULL slam_sinks!"); 336 - return XRT_ERROR_DEVICE_CREATION_FAILED; 337 - } 338 339 339 340 struct xrt_slam_sinks entry_sinks = {0}; 340 341 struct xrt_frame_sink *entry_left_sink = NULL;