General Category > Ongoing Anim8or Development

Trackball Rotation in the Sequence Editor

(1/6) > >>

Steve:
I just posted build 1194 that uses trackball controls for rotating bones. There are several issues that have cropped up in the interaction between using a trackball and joint limits.

First some background:

Most people think of rotations as independently applied in the X, Y and Z axes, known as Euler angles. However this is not the case when using a trackball.

Anim8or's first rotates a bone in the X-axis (pitch), then the Z-axis (roll) relative to the bone's local coordinate system after the X rotation.  Finally the Y-axis (yaw) is applied.  Since the X rotation is made first, the "X-axis" is not changed by subsequent Z and Y rotations. In fact it is possible to align two axes, resulting in the well-known state of "Gimbal Lock". If you enable "Show Axis" (hot key X) in the sequence editor you can see this happening. For this, and other reasons, Anim8or uses quaternions, which do not have this problem, to interpolate rotation.

When displaying rotations Anim8or converts the quaternion into separate X, Y and Z rotations. This is ambiguous at best for several reasons. First there are 6 different orders in which the rotations can be applied. Second even for a given order, there can be multiple individual rotations that produce the same orientation.

The problems:

1) How should the trackball be oriented? The 3 axes of a trackball are always at right angles while the three axes of the Euler representation are not. I have chosen to use the final orientation, that is after the rotations have been applied. Thus the Y axis of the trackball will always be aligned with the Euler Y axis (since it is the final rotation applied as view by Euler). But the X and X axes will not always be aligned with the Euler X and Z axes.

So rotating a trackball around the X or Z axis will generally change the values of multiple Euler angles.

I don't believe that this will be a problem if you simply work on the screen and ignore the numeric values for X, Y and Z.  They aren't that useful anyway.  Let me know what you think after you've used the trackball for a while.

2) Joint limits: If you are using joint limits, or have one or more axes locked, you might see some strange behavior.  I have been able to limit the weirdness when only one axis is free and will be improving it further in the near future, but I don't know exactly what to do for 2 and 3 free axes.

Maybe joint limits aren't such a good idea...

cooldude234:
rotation with the track ball is great. There's only two things I wish were added/fixed.
1 being that when I zoom out the track ball doesn't really match the size of the bone relevant to the screen size (basically the minimum size of the track ball needs to be smaller).
2 I cannot rotate on the z axis that is always relevant to the camera's direction (the circle that always is on the outside of the track ball should allow me to rotate the bone that direction).
Other than that it's pretty darn awesome!

(PS. joint limits are really useful for a rudimentary self collision system. Ie like when a leg comes in to contact with it's self. Although I've used them more in other applications than anim8or, I still think they have significant value here. (also I plan on adding them to my engine, reading the values from a .an8 bone properties) just thought I'd let you know).

Water Music:
I use joint limits so I can make sure that the bones move in the correct direction.  I don't mind getting rid of them so long as there is an easy way to select which route a bone takes to get from keyframe 1 to keyframe 2.  Could be a tie-in to have a window for more advanced speed controls (graphing the acceleration/deceleration between keys, etc.).  The trick, of course, is getting all of that in an unobtrusive top-level interface.

johnar:
loving the trackball, the interface changes, and the color scheme.
All working fine so far. Massively impressed. Falling in love with the new Anim8or, all over again.
Awesome Steve.

johnar:
A note, rather than just a 'wow this is cool' post.
I'm seeing now the wierdness that can occur with joint limits.
I've got a forearm bone, with joint limits set at -90 and 90 on all 3 axis. (not anatomically correct i know)
I move the bone along the x axis, with left MB, and when it reaches 90 degrees it starts to rotate on the y axis.
I realise this is still on the 'to do' list, and just wanted to put in my 2 cents.
I also do use bone limits, and feel that to do away with them would be unfortunate.
Good luck with this one steve, and, oh yeah,
--- Quote ---wow this is cool
--- End quote ---
.