Open
Description
Description
I am attempting to setup a createEquirectLayer media layer after XR session creation for Quest headsets. However I am seeing two faults and don't know where to report.
The first the browser is complaining makeXRCompatible
isn't set even when called a second time. And then I get context loss which stops the session. On my integration it will stop the session automatically. On the test a timeout may prevent context loss.
Reproduction steps
- Start XR Session
Code
renderer.xr.addEventListener("sessionstart", async () => {
const session = renderer.xr.getSession();
if (XRMediaBinding !== undefined) {
await renderer.backend.makeXRCompatible();
mesh1.layers.disableAll();
mesh2.layers.disableAll();
setTimeout(() => {
//180
let angle = Math.PI;
//360
angle = Math.PI*2;
const mediaBinding = new XRMediaBinding( session );
const equirectLayer = mediaBinding.createEquirectLayer(
video,
{
space: renderer.xr.getReferenceSpace(),
layout: 'stereo-left-right',
centralHorizontalAngle: angle,
//layout: 'stereo-top-bottom',
// Rotate by 45 deg to avoid stereo conflict with the 3D geometry.
transform: new XRRigidTransform(
{},
{ x: 0, y: .28, z: 0, w: .96 }
)
}
);
session.updateRenderState( {
layers: [
equirectLayer,
...session.renderState.layers
]
});
}, 500);
}
if (session.supportedFrameRates) {
console.log("supported framerates ", session.supportedFrameRates);
session.addEventListener('frameratechange', (event) => {
console.log("XRFrame rate is now " + session.frameRate)
});
session.updateTargetFrameRate(session.supportedFrameRates[session.supportedFrameRates.length - 1]).then((() => {
})).catch(console.warn)
}
});
Live example
Screenshots
Version
r176
Device
Headset
Browser
Chrome
OS
No response
Metadata
Metadata
Assignees
Labels
No labels