A 帧退出 vr 模式功能

A-frame exit vr mode on function

我想知道如何使用 A 帧 (https://aframe.io) 让用户退出 vr 模式 如果他们在调用函数时处于 vr 模式myFunction() 发生。只是为了澄清。当调用 myFunction() 的函数发生时,如果用户不在 vr 模式,我们不会有任何效果,但如果用户在 vr 模式,他们将从 vr 模式退出。如何做到这一点?

假设您有对渲染器的引用,您应该能够执行以下操作:

async function exitXR( renderer ) {

  const session = renderer.xr.getSession();

  if ( session !== null ) {
    
    await session.end();

    // execute optional code after WebXR shutdown
  
  }

}

这段代码对我有用,

import {useThree} from "@react-three/fiber";

const ABC = ({ x, y, x}) => {

    const { gl } = useThree();

    const exitXR = async (gl) => {
        const session = gl.xr.getSession();
        if ( session !== null ) {
            await session.end();
        }
    }
    
return (
        <group>
            <Html>
                <div onClick={()=>exitXR(gl)}> EXIT </div>
            </Html>
        </group>
    )
}

在 A-Frame 中,您可以检测用户是否在虚拟现实中:

sceneEl.is('vr-mode')

https://aframe.io/docs/1.3.0/core/scene.html#states

然后使用 exitVR() 方法退出 vr :

sceneEl.exitVR()

https://aframe.io/docs/1.3.0/core/scene.html#methods

您可以通过以下方式获取 sceneEl:

const sceneEl = document.querySelector('a-scene');

总之,只要做:

const sceneEl = document.querySelector('a-scene');
if (sceneEl.is('vr-mode')) sceneEl.exitVR();