DeviceOrientationControls仍可与three.js r104一起使用吗?

时间:2019-05-09 09:54:48

标签: three.js webvr

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

1 个答案:

答案 0 :(得分:1)

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

this.scene.add(this.controls);

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

three.js R104