Proposal: Swing-twist Rotation Mode for Objects/Bones

– edit –
Please refer to this thread for further discussion on this topic, thanks
– end edit –

I’ve worked on a patch to add a new Rotation Mode for objects and bones. This new mode, Swing-twist, is already available in Blender for constraints and drivers.

Why a new rotation mode? Because I think that Swing-twist is a more intuitive way to animate organic creatures than existing modes.

Comparison with existing modes
Euler:

  • 3 components :+1:
  • can easily edit values in GUI :+1:
  • can have same final rotations for different angles :-1:

Quaternion:

  • different (normalized) quaternions correspond to different rotations :+1:
  • 4 components :-1:
  • cannot easily edit value in GUI, because of normalization and no single “twist” component :-1:

Axis-angle:

  • 4 components :-1:
  • difficult to predict final rotation when editing using GUI :-1:

Swing-twist:

  • 3 components :+1:
  • can edit values in GUI :+1:
  • twist component to easily handle, for example, supination and pronation of the forearm :+1:
  • different angles correspond to different final rotations :+1:

Demo

Disclaimer: character not mine

12 Likes

Looks interesting, I wonder what is the behaviour when rotating on Z component. Can the leg rotate as if rotating on the global Y axis?

Hi, sorry for the late reply. I will upload a Windows build in about 20 minutes, if you want to try it yourself :slight_smile:
You can check this other thread on devtalk for further discussion on this topic.
Anyway, regarding your question, if you use Y for twist, then Z and X components will be used for swinging the bone. Starting from rest pose, depending on the roll angle, changing the Z component can result in a rotation about the Y global axis.

1 Like