static Matrix4x4 LookAtMatrix(Vector3 up_vector, Vector3 localPosition) { var z_axis = localPosition.normalized; var x_axis = Vector3.Cross(up_vector, z_axis).normalized; var y_axis = Vector3.Cross(z_axis, x_axis).normalized; return(UnityExtensions.Matrix4x4FromColumns(x_axis, y_axis, z_axis, new Vector4(0, 0, 0, 1))); }
public static Matrix4x4 RotationToWorldAxis(this Matrix4x4 m) { return(UnityExtensions.Matrix4x4FromColumns( m.MultiplyVector(Vector3.right), m.MultiplyVector(Vector3.up), m.MultiplyVector(Vector3.forward), new Vector4(0, 0, 0, 1) )); }
static Matrix4x4 LookAtMatrixFromWorld(Vector3 from, Vector3 target) { var pos = new Vector4(from.x, from.y, from.z, 1); return(LookAtMatrix(UnityExtensions.Matrix4x4FromColumns(Vector3.right, Vector3.up, Vector3.forward, pos), target)); }