我需要获取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看起来很有趣)。