tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

xrFrame_getViewerPose_getPose.https.html (2435B)


      1 <!DOCTYPE html>
      2 <body>
      3  <script src=/resources/testharness.js></script>
      4  <script src=/resources/testharnessreport.js></script>
      5  <script src="resources/webxr_util.js"></script>
      6  <script src="resources/webxr_test_constants.js"></script>
      7  <script src="resources/webxr_test_asserts.js"></script>
      8 
      9  <script>
     10 
     11    let testName = "XRFrame getViewerPose(refSpace) matches getPose(viewer, refSpace).";
     12 
     13    // Used for viewer origin, the actual values should not matter for the test.
     14    const poseTransform = {
     15        position: [1, 2, 3],
     16        orientation: [0.5, 0.5, 0.5, 0.5] // 120 degrees around [1, 1, 1] axis
     17    };
     18 
     19    // Use the same device as tracked immersive device, but modify the viewer origin.
     20    const deviceInitParams = Object.assign({}, TRACKED_IMMERSIVE_DEVICE, {viewerOrigin: poseTransform});
     21 
     22    // Used when creating a reference space that is offset from local space.
     23    // Actual values should not matter for the test.
     24    const offsetSpaceTransform = new XRRigidTransform(
     25      { x: 1.00, y: -1.50, z: 10.00, w: 1.0 },
     26      { x: 0.27, y:  0.00, z:  0.27, w: 0.92},  // 45 degrees around [1, 0, 1] axis
     27    );
     28 
     29    const testFunction = function(session, fakeDeviceController, t) {
     30      return Promise.all([
     31        session.requestReferenceSpace('local'),
     32        session.requestReferenceSpace('viewer'),
     33      ]).then(([referenceSpace, viewerRefSpace]) => new Promise((resolve, reject) => {
     34        const offsetRefSpace = referenceSpace.getOffsetReferenceSpace(offsetSpaceTransform);
     35 
     36        function onFrame(time, frame){
     37          t.step(() => {
     38            const pose1 = frame.getViewerPose(referenceSpace);
     39            const pose2 = frame.getPose(viewerRefSpace, referenceSpace);
     40            assert_not_equals(pose1, null);
     41            assert_not_equals(pose2, null);
     42            assert_matrix_approx_equals(pose1.transform.matrix, pose2.transform.matrix);
     43 
     44            const pose3 = frame.getViewerPose(offsetRefSpace);
     45            const pose4 = frame.getPose(viewerRefSpace, offsetRefSpace);
     46            assert_not_equals(pose3, null);
     47            assert_not_equals(pose4, null);
     48            assert_matrix_approx_equals(pose3.transform.matrix, pose4.transform.matrix);
     49          });
     50 
     51          resolve();
     52        }
     53 
     54        session.requestAnimationFrame(onFrame);
     55      }));
     56    };
     57 
     58    xr_session_promise_test(testName, testFunction,
     59      deviceInitParams, 'immersive-vr');
     60 
     61  </script>
     62 </body>