inverse
is an inferior version of affine_inverse
In Godot 4.2.2, the implementation of inverse
in Transform3D
reads as follows:
Transform3D Transform3D::inverse() const {
// FIXME: this function assumes the basis is a rotation matrix, with no scaling.
// Transform3D::affine_inverse can handle matrices with scaling, so GDScript should eventually use that.
Transform3D ret = *this;
ret.invert();
return ret;
}
See: https://github.com/godotengine/godot/blob/4.2.2-stable/core/math/transform_3d.cpp#L52-L58
Instead of using inverse
, you should always use affine_inverse
instead.
I consider this issue to be a Godot crime.