How can I do the same operation in local transforms instead of global transforms?

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By Ricard Rovira

I’ve got a function working fine, using global transforms:

var T = base.get_global_transform()
var p1 = T.origin
var p2 = p1 + T.basis.x
var p3 = p1 - T.basis.z
var plane = Plane(p1, p2, p3)
var look_at = plane.project(globalTarget)
var z = -(look_at - p1)
var y = T.basis.y
var x = y.cross(z)
var finalTransform = Transform(Basis(x, y, z), p1).orthonormalized()
base.set_global_transform(finalTransform)

I’m now trying to work in local transforms, to handle limits on movement. But it does not work at all:

var T = base.get_transform()
var p1 = T.origin
var p2 = p1 + T.basis.x
var p3 = p1 - T.basis.z
var plane = Plane(p1, p2, p3)
var look_at = plane.project(base.to_local(globalTarget))
var z = -(look_at - p1)
var y = T.basis.y
var x = y.cross(z)
var finalTransform = Transform(Basis(x, y, z), p1).orthonormalized()
base.set_transform(finalTransform)

Is there anything else I should be doing to use local transforms instead of global transforms?