vrDeviceOrientationArcRotateCamera.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { Camera } from "../../Cameras/camera";
  2. import { ArcRotateCamera } from "../../Cameras/arcRotateCamera";
  3. import { VRCameraMetrics } from "./vrCameraMetrics";
  4. import { Scene } from "../../scene";
  5. import { Vector3 } from "../../Maths/math.vector";
  6. import { Node } from "../../node";
  7. import "../Inputs/arcRotateCameraVRDeviceOrientationInput";
  8. // Side effect import to define the stereoscopic mode.
  9. import "../RigModes/vrRigMode";
  10. Node.AddNodeConstructor("VRDeviceOrientationFreeCamera", (name, scene) => {
  11. return () => new VRDeviceOrientationArcRotateCamera(name, 0, 0, 1.0, Vector3.Zero(), scene);
  12. });
  13. /**
  14. * Camera used to simulate VR rendering (based on ArcRotateCamera)
  15. * @see http://doc.babylonjs.com/babylon101/cameras#vr-device-orientation-cameras
  16. */
  17. export class VRDeviceOrientationArcRotateCamera extends ArcRotateCamera {
  18. /**
  19. * Creates a new VRDeviceOrientationArcRotateCamera
  20. * @param name defines camera name
  21. * @param alpha defines the camera rotation along the logitudinal axis
  22. * @param beta defines the camera rotation along the latitudinal axis
  23. * @param radius defines the camera distance from its target
  24. * @param target defines the camera target
  25. * @param scene defines the scene the camera belongs to
  26. * @param compensateDistortion defines if the camera needs to compensate the lens distorsion
  27. * @param vrCameraMetrics defines the vr metrics associated to the camera
  28. */
  29. constructor(name: string, alpha: number, beta: number, radius: number, target: Vector3, scene: Scene, compensateDistortion = true, vrCameraMetrics: VRCameraMetrics = VRCameraMetrics.GetDefault()) {
  30. super(name, alpha, beta, radius, target, scene);
  31. vrCameraMetrics.compensateDistortion = compensateDistortion;
  32. this.setCameraRigMode(Camera.RIG_MODE_VR, { vrCameraMetrics: vrCameraMetrics });
  33. this.inputs.addVRDeviceOrientation();
  34. }
  35. /**
  36. * Gets camera class name
  37. * @returns VRDeviceOrientationArcRotateCamera
  38. */
  39. public getClassName(): string {
  40. return "VRDeviceOrientationArcRotateCamera";
  41. }
  42. }