我通过three.js在移动设备上创建了webvr,但是我使用了DeviceOrientationControls,但是它不起作用,DeviceOrientationControls在一年前进行了最后一次修改,我不知道它仍然可以与最新版本的Three.js一起使用吗?可以告诉我它是否还在工作?
演示:https://demoviss.herokuapp.com/
代码:
sceneSetup = () => {
this.scene = new THREE.Scene();
this.camera = new THREE.PerspectiveCamera(
80,
window.innerWidth / window.innerHeight,
0.1,
1000
);
this.raycaster = new THREE.Raycaster();
this.raycaster.setFromCamera({ x: 0, y: 0 }, this.camera);
this.camera.position.y = 1.6;
this.camera.position.x = 0;
this.camera.position.z = -0.001;
this.controls = new DeviceOrientationControls(this.camera);
this.renderer = new THREE.WebGLRenderer({ antialias: true });
this.renderer.setPixelRatio(window.devicePixelRatio);
this.renderer.vr.enabled = true;
this.renderer.setSize(window.innerWidth, window.innerHeight);
this.mount.appendChild(this.renderer.domElement);
document.body.appendChild(WEBVR.createButton(this.renderer));
this.renderer.setAnimationLoop(() => {
this.renderer.render(this.scene, this.camera);
});
};
答案 0 :(得分:1)
调试应用程序后,似乎addCustomSceneObjects()
中的以下行会导致运行时错误:
this.scene.add(this.controls);
THREE.DeviceOrientationControls
不是从Object3D
派生的,因此将实例添加到场景图是无效的。创建控件后,您只需在动画循环中调用THREE.DeviceOrientationControls.update()
,类似于official example。这是您必须添加到animate()
函数中的内容。
three.js R104