How to cancel out 3D Rotation

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

Im getting rotation data every frame from a server, the data is a Quat.

I need to cancel out the the rotation data from the server so that it starts in the correct position. Ive managed to do this using Euler rotations but I think it starts to suffer from gimbal lock pretty much right away. How can I do this using either a Basis or a quat.

Here is the euler code:

    var tr = Transform(rot_data)
    var euler = tr.basis.get_euler()
	var init_euler = inital_rotation.basis.get_euler()
	euler = init_euler - euler
	tr.basis = Basis(euler).orthonormalized()