xrReferenceSpace_originOffset_viewer.https.html (1828B)
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 let testName = "Creating XRReferenceSpace origin offset off of `viewer` space works."; 10 11 let fakeDeviceInitParams = { 12 supportsImmersive: true, 13 supportedModes: ["inline", "immersive-vr"], 14 viewerOrigin: VALID_POSE_TRANSFORM, 15 views: VALID_VIEWS, 16 supportedFeatures: ALL_FEATURES 17 }; 18 19 let originOffsetPosition = new DOMPointReadOnly(0, 0, 1); 20 21 let testFunction = 22 (session, fakeDeviceController, t) => new Promise((resolve) => { 23 24 session.requestReferenceSpace('local').then( (localSpace) => { 25 session.requestReferenceSpace('viewer').then( (viewerSpace) => { 26 27 let offsetSpace = viewerSpace.getOffsetReferenceSpace( 28 new XRRigidTransform(originOffsetPosition)); 29 30 function OnFrame(time, frame) { 31 let viewerPose = frame.getPose(viewerSpace, localSpace); 32 let offsetPose = frame.getPose(offsetSpace, localSpace); 33 34 let viewerPose2 = frame.getPose(localSpace ,viewerSpace); 35 let offsetPose2 = frame.getPose(localSpace, offsetSpace); 36 37 t.step(() => { 38 assert_point_significantly_not_equals(viewerPose.transform.position, offsetPose.transform.position); 39 assert_point_significantly_not_equals(viewerPose2.transform.position, offsetPose2.transform.position); 40 }); 41 42 resolve(); 43 } 44 45 // Can only request input poses in an xr frame. 46 session.requestAnimationFrame(OnFrame); 47 }); 48 }); 49 }); 50 51 xr_session_promise_test( 52 testName, testFunction, fakeDeviceInitParams, 'immersive-vr'); 53 54 </script>