Hello, I started this script a couple of days ago as an experiment, out of a need of finding a much better way to pose characters. After some tests, I found that I could introduce turntable style rotations in Blender to help with this.
How this addon will help us:
Blender currently uses the Trackball operator (pressing R twice) to rotate items. The rotation normally should occur on two axises (pitch and yaw) but the current operator produces an “unwanted” effect where a rotation occurs on the roll axis.
I have found by experience that most of the times trackball rotation on only two axises is much more preferred. Say on character poses while rotating the head, or the fingers, or the legs this way of rotation occurs more natural. Alternatively either in any sort of mechanical (turrets) or static objects (doors) again there is no “roll” rotation.
This brings an additional convenience for the Blender user as well, because since these types of rotations are much more common, this can bring the desired effect with great ease of use and accuracy.
Otherwise the well known way to solve this problem is to switch between local/global axises of the object. This can become quite boring and also can’t provide ease of use.
How to use:
- Select an Object or a Bone item while in ObjectMode or PoseMode and Press “E” to start EasyMove modal operator.
- Use WASD and QE keys to rotate the object according to your requirement or use the Mouse movement for more interactive rotations. (mouse movement currently disabled)
- Press the Left mouse button or Space key to finish the operator.
- Press the Right mouse or Escape key to cancel the operator.
- Concept test version: https://copy.com/opySdYjCbKLlSBqC
This is the very first concept version as shown in gif examples.
- First version: https://copy.com/ARDL78xGVgmBcvRC
Now rotation of object or bone is supported, still long way to go.
Programming Help Wanted:
- Currently the worst part of the Addon is the rotation of the items. A better way is needed to be found so the rotation input is independent of the actual rotation of the bone. e.g. When the user would like to rotate the pitch of the bone, the rotation will have to be performed independently of the actual bone rotation. One thing I did was to make tests on Arcball rotations and study as well the Trackball rotation on Blender’s source to see what is going on:https://github.com/dfelinto/blender-git/blob/cc9c049ff7695ba5fa6a48d468bf3d18602d330e/source/blender/editors/transform/transform.c. After that a different workaround could be found to eliminate the “rolling” (e.g. Grab the rotation from a lookat matrix instead of quaternion).
Some Tasks For The Future:
- When mouse funtionality is back - Teleport the mouse cursor while the limits of the area are reached.
- Rotation of multiple items.
- Rotation based on pivot point.
- Perhaps support for movement as well.
- Restore original values when the operator is cancelled.
- Print some information in the header.
- Provide various ways of rotation (e.g. LocalX-LocalY-GlobalZ, LocalX-LocalY-LocalZ