THREEJS,获取VR耳机的位置和用户高度

时间:2019-10-26 01:23:51

标签: three.js virtual-reality webvr oculus

我需要获取VR(耳机,oculus quest)用户的位置和高度。

我有相机装备(相机容器)。

我需要将vr位置与偏移位置(控制器驱动)结合起来。

我尝试使用navigator.getVRDisplays()(设置),然后使用VrDisplay.getPose()。position(在渲染方法中)。

但这会产生奇怪的渲染伪像/闪烁。 THREEJS WebGLRenderer.vr.getController()位置错误。

    this._vrController1.addEventListener('axischanged', event => {
        const axes = event.axes;
        var y = Math.round(axes[1]);

        if (y > 0) {
            v.copy(direction)
                .applyQuaternion(this.camera.quaternion);

            this._vrPositionOffset.add(v.multiplyScalar(distance));

        } else if (y < 0) {
            v.copy(direction)
                .applyQuaternion(this.camera.quaternion)
                .negate();

            this._vrPositionOffset.add(v.multiplyScalar(distance));
        }           
    });

... 渲染:

    const renderer = this.renderers.WebGL.vr;
    if (renderer.isPresenting() && this._vrDisplay) {           
        const pose = this._vrDisplay.getPose();
        const p = pose.position.slice();

        this.playerRig.position
            .set(p[0], p[1], p[2])
            .add(this._vrPositionOffset)
            ;

    }

不使用这个pose.position,运动不是“自然的”。 我还需要用户身高来调整用户身体模型(比例)。我在VrDisplay和WebGLRenderer.vr对象中都找不到此信息(VrDisplay.stageParameters.sittingToStandingTransform看起来很有趣)。

0 个答案:

没有答案