Skip to content

Commit 166558b

Browse files
adjust xr-iframe api formatting and add THREE animation loop
1 parent 6d14725 commit 166558b

File tree

1 file changed

+34
-5
lines changed

1 file changed

+34
-5
lines changed

_posts/development-guide/2019-09-05-xr-iframe-api.md

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)