xrInputSource_getPose_targetRay_grip.https.html (1925B)
1 <!DOCTYPE html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <script src="resources/webxr_util.js"></script> 5 <script src="resources/webxr_test_constants.js"></script> 6 <script src="resources/webxr_test_asserts.js"></script> 7 8 <script> 9 10 const testName = "Poses between targetRaySpace and gripSpace can be obtained and behave correctly"; 11 12 const fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE; 13 14 const testFunction = 15 (session, fakeDeviceController, t) => new Promise((resolve) => { 16 const input_source = fakeDeviceController.simulateInputSourceConnection({ 17 handedness: "right", 18 targetRayMode: "tracked-pointer", 19 pointerOrigin: IDENTITY_TRANSFORM, // basespace_from_target_ray_space 20 gripOrigin: VALID_GRIP_TRANSFORM, // basespace_from_grip_space 21 profiles: [] 22 }); 23 24 function CheckPoseBetweenTargetRayAndGripSpaces(time, xrFrame) { 25 let source = session.inputSources[0]; 26 let target_ray_space_from_grip_space = xrFrame.getPose(source.gripSpace, source.targetRaySpace); 27 // target_ray_space_from_grip_space 28 // = (basespace_from_target_ray_space)^-1 * basespace_from_grip_space 29 // 30 // substituting identity for basespace_from_target_ray_space: 31 // = (identity)^-1 * basespace_from_grip_space 32 // = basespace_from_grip_space 33 // = VALID_GRIP_TRANSFORM, whose matrix is equal to VALID_GRIP 34 35 t.step(() => { 36 assert_not_equals(target_ray_space_from_grip_space, null); 37 assert_matrix_approx_equals(target_ray_space_from_grip_space.transform.matrix, VALID_GRIP); 38 }); 39 40 resolve(); 41 } 42 43 // Can only request input poses in an xr frame. 44 requestSkipAnimationFrame(session, CheckPoseBetweenTargetRayAndGripSpaces); 45 }); // new Promise((resolve) => { 46 47 xr_session_promise_test( 48 testName, testFunction, fakeDeviceInitParams, 'immersive-vr'); 49 50 </script>