public void refreshCamera(ProgramLimits bbox) { double zpos = Math.Max(bbox.SizeX, bbox.SizeY) / Math.Tan(60 * Math.PI / 360d); // TODO: set a sensible viewing distance dynamically var position = new Point3D(Math.Max(10d, bbox.SizeX) / 2d, Math.Max(10d, bbox.SizeY) / 2d, zpos); viewport.Camera.Position = position; viewport.DefaultCamera.Position = position; // viewport.CameraController.AddRotateForce(0.001, 0.001); // emulate move camera }
public void refreshCamera(ProgramLimits bbox) { double zpos = Math.Max(5d, Math.Max(bbox.SizeX, bbox.SizeY) / Math.Tan(60 * Math.PI / 360d)); // TODO: set a sensible viewing distance dynamically viewport.Camera.Position = new Point3D((bbox.MaxX + bbox.MinX) / 2d, (bbox.MaxY + bbox.MinY) / 2d, zpos); viewport.Camera.LookDirection = new Vector3D(0, 0, -100); viewport.Camera.UpDirection = new Vector3D(0, 1, 0.5); // viewport.CameraController.AddRotateForce(0.001, 0.001); // emulate move camera }
public void refreshCamera(ProgramLimits bbox) { if (model.LatheMode == LatheMode.Disabled) { double zpos = Math.Max(5d, Math.Max(bbox.SizeX, bbox.SizeY) / Math.Tan(camera.FieldOfView * Math.PI / 360d)); // TODO: set a sensible viewing distance dynamically viewport.Camera.Position = new Point3D((bbox.MaxX + bbox.MinX) / 2d, (bbox.MaxY + bbox.MinY) / 2d, zpos); viewport.Camera.LookDirection = new Vector3D(0d, 0d, -100d); viewport.Camera.UpDirection = new Vector3D(0d, 1d, 0.5d); } else { double ypos = Math.Max(5d, Math.Max(bbox.SizeX, bbox.SizeZ) / Math.Tan(camera.FieldOfView * Math.PI / 360d)); // TODO: set a sensible viewing distance dynamically viewport.Camera.Position = new Point3D((bbox.MaxX + bbox.MinX) / 2d, -ypos, (bbox.MaxZ + bbox.MinZ) / 2d); viewport.Camera.LookDirection = new Vector3D(0d, 100d, 0d); viewport.Camera.UpDirection = new Vector3D(-1d, 0d, 0d); } // viewport.CameraController.AddRotateForce(0.001, 0.001); // emulate move camera }