public static void ApplyProjectionMatrix(Camera camera, Matrix4x4 projectionMatrix) { float fov, aspect, zNear, zFar; Matrix4x4Utility.GetProjectionParameters(projectionMatrix, out fov, out aspect, out zNear, out zFar); camera.fieldOfView = fov; camera.aspect = aspect; camera.nearClipPlane = zNear; camera.farClipPlane = zFar; camera.ResetProjectionMatrix(); }
public static void SetLocalToParentMatrix(Transform transform, Matrix4x4 localToParentMatrix) { var pos = Matrix4x4Utility.GetPosition(localToParentMatrix); var rot = Matrix4x4Utility.GetRotation(localToParentMatrix); var scale = new Vector3(); var right = Matrix4x4Utility.GetRight(localToParentMatrix); scale.x = Vector3.Dot(rot * Vector3.right, right); var up = Matrix4x4Utility.GetUp(localToParentMatrix); scale.y = Vector3.Dot(rot * Vector3.up, up); var forward = Matrix4x4Utility.GetForward(localToParentMatrix); scale.z = Vector3.Dot(rot * Vector3.forward, forward); transform.localPosition = pos; transform.localRotation = rot; transform.localScale = scale; }
public static void SetLocalToWorldMatrix(Transform transform, Matrix4x4 localToWorldMatrix) { transform.position = Matrix4x4Utility.GetPosition(localToWorldMatrix); transform.rotation = Matrix4x4Utility.GetRotation(localToWorldMatrix); transform.localScale = Vector3.one; }