DeviceOrientationControls все еще работает с three.js r104? - PullRequest
0 голосов
/ 09 мая 2019

Я создаю webvr на мобильном телефоне three.js и использую 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 Ответ

1 голос
/ 09 мая 2019

После отладки приложения кажется, что следующая строка в addCustomSceneObjects() вызывает ошибку времени выполнения:

this.scene.add(this.controls);

THREE.DeviceOrientationControls не является производным от Object3D, поэтому добавление экземпляра в граф сцены недопустимо. После создания элементов управления вам просто нужно вызвать THREE.DeviceOrientationControls.update() в цикле анимации, как в официальном примере . Это то, что вы должны добавить к своей функции animate().

three.js R104

...