BabylonExporter.Camera.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using System;
  2. using BabylonExport.Entities;
  3. using MaxSharp;
  4. namespace Max2Babylon
  5. {
  6. partial class BabylonExporter
  7. {
  8. private BabylonCamera ExportCamera(Node cameraNode, BabylonScene babylonScene)
  9. {
  10. var maxCamera = (cameraNode.Object as Camera)._Camera;
  11. var babylonCamera = new BabylonCamera();
  12. RaiseMessage(cameraNode.Name, true);
  13. babylonCamera.name = cameraNode.Name;
  14. babylonCamera.id = cameraNode.GetGuid().ToString();
  15. if (cameraNode.HasParent())
  16. {
  17. babylonCamera.parentId = cameraNode.Parent.GetGuid().ToString();
  18. }
  19. babylonCamera.fov = Tools.ConvertFov(maxCamera.GetFOV(0, Interval.Forever._IInterval));
  20. babylonCamera.minZ = maxCamera.GetEnvRange(0, 0, Interval.Forever._IInterval);
  21. babylonCamera.maxZ = maxCamera.GetEnvRange(0, 1, Interval.Forever._IInterval);
  22. if (babylonCamera.minZ == 0.0f)
  23. {
  24. babylonCamera.minZ = 0.1f;
  25. }
  26. // Control
  27. babylonCamera.speed = cameraNode._Node.GetFloatProperty("babylonjs_speed");
  28. babylonCamera.inertia = cameraNode._Node.GetFloatProperty("babylonjs_inertia");
  29. // Collisions
  30. babylonCamera.checkCollisions = cameraNode._Node.GetBoolProperty("babylonjs_checkcollisions");
  31. babylonCamera.applyGravity = cameraNode._Node.GetBoolProperty("babylonjs_applygravity");
  32. babylonCamera.ellipsoid = cameraNode._Node.GetVector3Property("babylonjs_ellipsoid");
  33. // Position
  34. var wm = cameraNode.GetWorldMatrix(0, cameraNode.HasParent());
  35. var position = wm.Trans;
  36. babylonCamera.position = position.ToArraySwitched();
  37. // Target
  38. var target = cameraNode._Node.Target;
  39. if (target != null)
  40. {
  41. babylonCamera.lockedTargetId = target.GetGuid().ToString();
  42. }
  43. else
  44. {
  45. var dir = wm.GetRow(2).MultiplyBy(-1);
  46. babylonCamera.target = dir.ToArraySwitched();
  47. }
  48. babylonScene.CamerasList.Add(babylonCamera);
  49. return babylonCamera;
  50. }
  51. }
  52. }