DeviceOrientationControls 是否仍适用于 three.js r104?

Do DeviceOrientationControls still work with three.js r104?

我通过 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);
   });
 };

调试您的应用程序后,addCustomSceneObjects() 中的以下行似乎导致了运行时错误:

this.scene.add(this.controls);

THREE.DeviceOrientationControls 不是从 Object3D 派生的,因此向场景图添加实例是无效的。创建控件后,您只需在动画循环中调用 THREE.DeviceOrientationControls.update(),类似于 official example。这是您必须添加到 animate() 函数中的内容。

three.js R104