public void LookAt(Vector3 location) { RotationMatrix = Matrix4.CreateFromQuaternion(Matrix4.LookAt(Vector3.Zero, -(location - Transformation.GetPosition()).Normalized(), new Vector3(0, 1, 0)).ExtractRotation()); ViewMatrix = RotationMatrix * Matrix4.CreateTranslation(-Transformation.GetPosition()); Transformation.SetOrientation(RotationMatrix.ExtractRotation()); Transformation.ClearModifiedFlag(); VPMatrix = Matrix4.Mult(ViewMatrix, ProjectionMatrix); }
public Camera(Vector3 position, Vector3 lookAt, Vector3 up, float aspectRatio, float fov, float near, float far) { Transformation = new TransformationManager(position, Quaternion.Identity, 1.0f); Matrix4.CreatePerspectiveFieldOfView(fov, aspectRatio, near, far, out ProjectionMatrix); Far = far; Pitch = 0.0f; Roll = 0.0f; Transformation.SetOrientation(Matrix4.LookAt(Vector3.Zero, lookAt, up).ExtractRotation().Inverted()); Update(); }
public Camera(Vector3 position, Vector3 lookAt, Vector3 up, float aspectRatio, float fov, float near, float far) { Transformation = new TransformationManager(position, Quaternion.Identity, 1.0f); Matrix4.CreatePerspectiveFieldOfView(fov, aspectRatio, near, far, out ProjectionMatrix); Far = far; if(Current == null) Current = this; if(MainDisplayCamera == null) MainDisplayCamera = this; Pitch = 0.0f; Roll = 0.0f; Transformation.SetOrientation(Matrix4.LookAt(Vector3.Zero, lookAt, up).ExtractRotation().Inverted()); Update(); }
public void ApplyChanges() { Transformation.SetPosition(Body.CenterOfMassPosition); Transformation.SetOrientation(Body.Orientation); }