瀏覽代碼

Merge pull request #1344 from RaananW/vr-arcrotate-fix

Fixing the vr arc rotate camera (which doesn't have quaternions)
David Rousset 9 年之前
父節點
當前提交
6c2771d394
共有 2 個文件被更改,包括 10 次插入6 次删除
  1. 3 4
      src/Cameras/VR/babylon.vrDeviceOrientationCamera.ts
  2. 7 2
      src/Cameras/babylon.targetCamera.ts

+ 3 - 4
src/Cameras/VR/babylon.vrDeviceOrientationCamera.ts

@@ -16,12 +16,11 @@ module BABYLON {
 
     export class VRDeviceOrientationArcRotateCamera extends ArcRotateCamera {
 
-        constructor(name: string, alpha: number, beta: number, radius: number, target: Vector3, scene: Scene, compensateDistortion = true) {
+        constructor(name: string, alpha: number, beta: number, radius: number, target: Vector3, scene: Scene, compensateDistortion = true, vrCameraMetrics: VRCameraMetrics = VRCameraMetrics.GetDefault()) {
             super(name, alpha, beta, radius, target, scene);
 
-            var metrics = VRCameraMetrics.GetDefault();
-            metrics.compensateDistortion = compensateDistortion;
-            this.setCameraRigMode(Camera.RIG_MODE_VR, { vrCameraMetrics: metrics });
+            vrCameraMetrics.compensateDistortion = compensateDistortion;
+            this.setCameraRigMode(Camera.RIG_MODE_VR, { vrCameraMetrics: vrCameraMetrics });
 
             this.inputs.addVRDeviceOrientation();
         }

+ 7 - 2
src/Cameras/babylon.targetCamera.ts

@@ -275,8 +275,13 @@
 
                 case Camera.RIG_MODE_VR:
                 case Camera.RIG_MODE_WEBVR:
-                    camLeft.rotationQuaternion.copyFrom(this.rotationQuaternion);
-                    camRight.rotationQuaternion.copyFrom(this.rotationQuaternion);
+                    if (camLeft.rotationQuaternion) {
+                        camLeft.rotationQuaternion.copyFrom(this.rotationQuaternion);
+                        camRight.rotationQuaternion.copyFrom(this.rotationQuaternion);
+                    } else {
+                        camLeft.rotation.copyFrom(this.rotation);
+                        camRight.rotation.copyFrom(this.rotation);
+                    }
                     camLeft.position.copyFrom(this.position);
                     camRight.position.copyFrom(this.position);