@@ -35,25 +35,54 @@ This page will cover how to create and manipulate reality tabs (`xr-iframe`).
3535
3636## Child xr-iframe creation
3737
38+ // Create WebGL renderer and define layers
39+
3840``` js
39- // Create WebGL renderer and define layers
4041 const renderer = new THREE.WebGLRenderer ({
4142 antialias: true ,
4243 });
4344 document .body .appendChild (renderer .domElement );
4445 const layers = [renderer .domElement ];
46+ ```
4547
46- ...
48+ Enter xr
4749
48- // Request WebXR session and assign session layers
50+ ``` js
51+ const _enterXr = async () => {
4952 const session = await navigator .xr .requestSession ({
5053 exclusive: true ,
5154 });
5255 session .layers = layers;
5356
54- ...
57+ session .requestAnimationFrame ((timestamp , frame ) => {
58+ renderer .vr .setSession (session, {
59+ frameOfReferenceType: ' stage' ,
60+ });
61+
62+ const pose = frame .getViewerPose ();
63+ const viewport = session .baseLayer .getViewport (pose .views [0 ]);
64+ const height = viewport .height ;
65+ const fullWidth = (() => {
66+ let result = 0 ;
67+ for (let i = 0 ; i < pose .views .length ; i++ ) {
68+ result += session .baseLayer .getViewport (pose .views [i]).width ;
69+ }
70+ return result;
71+ })();
72+ renderer .setSize (fullWidth, height);
73+ renderer .setPixelRatio (1 );
74+
75+ renderer .setAnimationLoop (null );
5576
56- // Create xr-iframe, define src attribute, and push to layers
77+ renderer .vr .enabled = true ;
78+ renderer .vr .setSession (session);
79+ renderer .vr .setAnimationLoop (animate);
80+ });
81+ };
82+ ```
83+
84+ Create xr-iframe, define src attribute, and push to layers
85+ ``` js
5786 xrIframe = document .createElement (' xr-iframe' );
5887 xrIframe .src = ' childschild.html' ;
5988 layers .push (xrIframe);
0 commit comments