Hi Vincent,

thanks for the bug report.

When typing in values for localRotation in the Rotation Tool, UMotion is changing the values from the desired values.

For example, I want to rotate the y-axis 90-degrees. I type in 90, but when I hit enter UMotion changes the value for all 3 axes to strange non-90 numbers.

That is by design and is related to the math of quaternions and eulers.

When I implemented the Rotation Tool Assistant I thought of 2 possible ways how to implement the euler input values:

- It would be possible to map the euler values directly to the rotation of the bone (that's how Unity does it in the Inspector). That method heavily suffers from Gimbal Lock effects: That means that it can happen that you enter a euler rotation, but the 3D bone is rotated in a different way then you would expect.

This video shows this effect in action (make sure to read the subtitles): https://youtu.be/T9Ib7tCawMQ

And this video explains what Gimbal Lock is: https://youtu.be/zc8b2Jo7mno - So I decided to go a different way on how to implement the rotation tool assistant:

The values you enter are treated as a delta. Let's say your x rotation is currently 20 degrees and you enter 90. Then UMotion treats that change as: "The user wants to apply a rotation 60 degrees around the x axis."

So instead of just doing "transform.localEulerAngles = newAbsoluteEulerAngel;" I do "transform.Rotate(eulerAngleDelta);".

The cool benefit is that in the 3D view, your bone will always rotate EXACTLY the number of degrees you wanted it to rotate. The euler angles are now recalculated to match the rotation in the 3D view. This can lead to completely different numbers than the one you had before.

I know that both methods are far from being perfect. The real issue here is the euler angles in general. They simply are not perfect for describing rotations in 3D space.

On occasion, the Channels panel allows me to type in rotation values - which stay as inputted - but often that ability to type in rotation values is disabled in the Channels panel.

Rotation properties can only be manipulated directly if they use euler curves. When using quaternions, you have 4 channels (x, y, z, w) and changing those values directly requires some deep knowledge about how quaternions work. Thus those channels are set to read only.

Anyway there is still a way to deal with euler rotations the way you want to: Switching to euler curves and manipulate the euler values directly in the channels view. That's the same as if you would change euler values in Unity's Inspector. But be careful, this can lead to gimbal lock.

I hope this sheds some light into this topic. It's a complicated mathematical problem so I hope I was able to explain this in such a way that it makes sense. Let me know if I should explain anything in more detail or if you have any suggestions on how I can improve UMotion regarding to this topic in the future.

Best regards,

Peter