Hello,
You can do it exactly the way that MoKev explained but I’ve found it quicker to use a LookAt constraint.
[ol]
[li]Create a helper, align it to the upper leg and parent it to the pelvis
[/li][li]Create your twist bones
[/li][li]Link all the twist bones to the upper leg
[/li][li]Create a LookAt constraint from the first twist bone to the last twist bone and use the newly created helper as the Upnode
[/li][li]Orientation constrain the other twist bones to the first and last twist bone so that the twist is distributed evenly
[/li][/ol]
I’ve uploaded a scene file where I’ve done exactly what I just described.
Also, while I was creating the example file I also wrote a script to create the twist bones, it’s simple but effective
(
rollout boneChainCreator "Bone Chain Creator"
(
spinner bonesSp "Number Of Bones:" type:#integer width:100 offset:[56,0] range:[1,10,1]
button creatorBtn "Create Bone Chain" width: 134
on creatorBtn pressed do
(
if selection.count != 2 then
messageBox "Please select only two objects" title:"Error" beep:false
else
(
local startPoint = $[1].pos, endPoint = $[2].pos, val = bonesSp.value, zAxis = $[1].transform[3],
startEnd, endStart
for i in 1 to val do
(
startEnd = startPoint * ((val - (i - 1)) as float) / val + endPoint * ((i - 1) as float) / val
endStart = startPoint * ((val - i) as float) / val + endPoint * (i as float) / val
boneSys.createBone startEnd endStart zAxis
)
)
)
)
createDialog boneChainCreator width:175
)