Some feedback for the the axis choosing methods :
The most i use the new axis constraining methods the less i like them. Here is my proposals.
Choosing the right axis when grabbing an object
The current systems doesn't work well for several reasons :
*First, the system is using interaction between two uninteresting items: the cusor, and the objects center, those items aren't the interest of the user when he is moving his object. He doesn't want to look at the center or at the cursor, he wants to see where is the object moving, the interest of the user is the direction. So the axis choosing method should use that information.
* Second : Selecting an axis with the cursor doesn't move the object in the direction that the user wants. This is confusing. You want to constrain the move the one axis, and you must move your object in another way....
if the current methods are elegant on paper they are quite unintuitive. I personally don't want to look carefully where is my cursor, where are the axis...
First easy solution :
Don't move the object at all when choosing the axis, so the user isn't disturbed by the object motion.
My proposal :
* first the user press MMB
then when you move or scale an object, the vector determined by the first position of the cursor, and the second position of the cursor is translated to the center of the mesh. then, the angle between this vector and the axis is compared. The angles computed are the angles 'on screen' Then the closest axis is highlighted.
when the users have found the right axis, he press MMB
- the constraint is active.
- pressing again MMB cancels all the constraints and return to free scale/ grab / rotation.
this method would work well for grab, scale, skew, to sphere, etc... These methods uses the "direction" so uses this axis selection methods.
You can see on the mockup that with the current system, the user would have picked the red axis, wich is not the direction the object is moving.
Rotations and Planes constraints.
* Obviously rotations are plane constrained, when you rotate something you do it in a plane. Selecting the axis of rotations involve rotating the object in a completely unintuitive way to select the correct axis.
My proposal :
first, we should use the alt key instead of the ctrl, because ctrl 'freezes' the object and you can't see where you are going,
Second : the three axis always divdes the screen into three parts, the system is really simple. If the "mouse vector" we discussed before is pointing between two axis on the screen, then these two axis determines the constraining plane. It would work fine for grab and scale, but for rotations we would simply select the plane by putting the mouse cursor between two axis. Rotation is too atypical to have the same system a the other transformations.
What do you think ?