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.

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).

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.

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,

Is it possible to hide those 3 (red,blue and green) rings that appear while rotating bones, so it would be possible to use fast selection without accidentally making unwanted movements of some bones?Can some bones be locked on their positions in space (x,y,z)?- so if we move the whole skeleton few millimeters those bones and its attached parts of the body remain in their locked position in the world while the rest of the body stretches=morphs.

I hope this is the right topic to post this question. Can anybody tell me how to link two bones together, so when I rotate one bone so does the other automatically? I need that for the eyes of the object.

Not really the place to ask. How-to questions belong in the General Anim8or Forum unless it's specific to a new feature in the development release.

However, to answer your question, there's no way to currently do so. Anim8or is too simplistic in its circular dependency restrictions, thus preventing one bone from copying the rotations of another bone in the same figure.

Manually keying the two eye bones is the easiest way, asides from the morph targets approach of creating the eye movement of both eyes as morph targets and animating them that way. A potentially harder way is to have the eyeballs as separate objects in the scene and set them to "face target" a target so that they automatically rotate and follow a target...but then you have to try and keep the eyeballs in the head while you're animating the body.

You can do this with controller scripts where you set the angle of a bone to another animatable property such as a user defined attribute or another element. Here's an example where I use the orientation of a target to controller the orientation of two eyes.

You can also use another elements bone angles, etc. Note: you can't currently use an angle form the same figure since Anim8or thinks that is a circular dependency. I'll refine the dependency testing to allow you to refer to other values in the same figure.

Can anybody tell me how to link two bones together, so when I rotate one bone so does the other automatically? I need that for the eyes of the object.

for eyeballs, my advice on how to do this would be: don't! three-quarters of character animation lives or dies on the eye movement, and one of the easiest ways to get it wrong is to always have the two eyes pointing exactly the same direction. their directions should converge or diverge depending on how close the character is to the thing they're looking at, and that can change dramatically within a fraction of a second (say for example Character A is talking to Character B, who's right next to them, but then their attention is caught by something in the distance behind B), which means you would usually have to animate each eye separately anyway. even when you're looking at something pretty far away, the eyes' directions still won't be absolutely parallel; the difference might go down to a degree or two, but never (or at least nearly never) zero.

Agreed, I posted this as a solution to his question and to problem in general. For eyes, for example, you can use another property for the convergence, or a target as the focal point, etc. Scripts are a very powerful way of specifying behavior.

Thanks mr.Steve for the figure, it's very interesting to explore the script. It was quite a shock when I saw those bones linked to a target because that was the next question that I thought to ask relating to 'eye rotating' issue. I don't want to be rude but scene mode in Anim8or would be greatly improved if that script could be implemented and used on gui in some next development built, so the bone/s could be controlled with the target directly- the same way as the object,camera or light can. Meanwhile, I'll try to replicate and modify the script , it's interesting that the target cannot be manually rotated and changing its position or size doesn't affect the object, it only 'responds' to manual key change