0
$\begingroup$

My understanding is that the local-to-parent TRS for a bone in the rest pose is determined by the head/tail/roll of its edit bone

  • T is determined by the difference between its head and its parent's head.
  • R is determined by the direction of the bone (giving the direction of the local Y-axis) and the roll (giving the direction of, say, the Z-axis). The length of the bone does not appear to have any effect.
  • S is always the unit scaling.

Then when the bone is posed, its final local-to-parent transform is calculated as

(edit bone TRS) (pose bone TRS)

where the pose bone has normal translation/rotation/scaling properties. (Please correct me if any of this is wrong.)

I have data that has a tree of joints with their local-to-parent transforms in TRS format that I want to import into Blender. I have the following questions about converting this to head/tail/roll

  1. How can I set the scale property? Since the local-to-parent for an edit bone has AFAICT always a unit scale.
  2. Can I choose the way a bone points? Because the direction a bone points appears to be determined by the local-to-parent I want it to have (only the length can be chosen freely), and I might want the make eg. a shoulder bone point to an elbow, regardless of whether this is the direction of its +Y-axis.

How, for example, does the COLLADA importer do it? I know COLLADA joints can have scalings, and the importer lets you choose which way bones point.

Should I be setting properties on the Bone instead of the head/tail/roll on the EditBone? Also any clarification on the Bone/EditBone/PoseBone distinction would be appreciated.

Thank you.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.