Forearm twist the ultimate search for a solution with out B-bones

Ok so why not use B bones?,

Simple, because I need to export a model and the animation that will go with it as an fbx, and the segmentation systems that b bones have do not get exported into the .fbx so the nice and simple twist that you can get out of the B bones is lost.

Mind me I can still use b bones and export the rigg while they are activated,
the segmented systems is the only thing that will not get translated into the .fbx format the rest works like a clock.

I went ahead and got dirty trying to do the forearm twist using multiple bones on the forearm, the wrist rotation needs to control the forearm twist, so the 3 segmented bones need to be constrained to the wrist controller or the wrist base bone, i can do that by using a constrain rotation or by making an action and then using an action constraint on the forearm bone segment and the use the wrist controller to drive the segments.

So to summarize

We have a wrist controller that is controlling the IK for the arm.

forearm segments with decreasing influences over the weight of the forearm geometry

constraint segment to wrist controller bone, tell them to be constrained only
to rotate under the Y axis.

But for some reason no matter what setup i try the segments end up doing rotations
when they are not asked to do them

Some pictures to go with my ramblings, i know explaining this kind of things is very hard unless some pictures go with the abstract connect this to that.

I un parented the segment on the forearm so its easier to view the rotation.

Now if some knows of a tutorial to make the forearm twist without the use of B/bones
I would be very happy to know where i can watch it, if some one knows a way to
get this to work I would be most grateful for the information, please someone help
me out :slight_smile:

Heres the blend file, if possible not just write a description of what to do but actually
use this blend file and make it work there, I’m a visual kind of guy so a long abstract
explanation will be not as useful, if you got a solution in written form I’m happy to
read it, but i rather have an example to go with it, if possible at all.

arm twist15.blend (1.36 MB)

I made this rigg following the online tutorial from CG cookie to make an alien, this is
not the model I’m gonna use in the end, its gonna be an old man in a robe but
thats irrelevant I still gonna need a biped rigg.

I haven’t seen a proper tutorial to get this done with no B-bones involved so I’m
really curious if this is possible at all, and if theres a tut I’m all for learning so pass
me the link and ill bother you no more.

Please help, I’m completely stuck.

Mmm after more research i found the origin of my problem, I analyzed the Gery rigg, and found that in that rigg the author did not used b bones, and he got the forearm twist right, and his setup was practically the same as mine so… what was i doing wrong, well if i went into edit mode in my armature all the axis of my arm bones were pointing into the right directions y front, z up, and x left in local space, except z was not in the right UP, up for the rotation to be solved ok is the palm of the hand, in my rigg up was the side Up of the had.

I made this drawing to show my problem and solution:

Also I will keep posting my newby experiments here in addition of getting feedback It helps me think, sorry for making a thread for what maybe a simple rigging problem, i foresee ill get more of this issues as move along so I might as well keep all of my questions in one place, thanks for viewing, and wish me luck.

Here’s my go at the forearm twist, its a work in progress:spin:


Arm_Rig_WIP.blend (168 KB)

Thanks man but your using b bones, witch is something i cant use because the game engine I’m going to export my model into is incompatible with them, thanks non the less, like i wrote above i already found a solution.

No b bones in my rig just subdivided bones parented to a master guide bone, I use the subdivided bones to give me extra weight paint options, glad you found a fix

This is the method I use for game characters. The wrist and hand bone is both a child of the lower arm, independent of each other. The wrist bone has a track constraint aiming at the hand bone. This way the wrist bone will only rotate along one axis despite the hand doing motion around several axis’. It’s important to make the up-vector at the direction that the hand is least likely to rotate towards (to avoid flipping).

It’s easier to just look at the attached scene, it’s very simple to just show the actual principle. I have one rig with the lower arm hidden so you can see how the hand and wrist bones interact with each other. The other rig shows all bones and the axis’. Note that I have rotated the Z-axis towards the direction that the hand is least likely to rotate towards to avoid the flipping I mentioned. If you can’t reorient your character like this I recommend creating a dummy on the hand whom’s Z-axis is properly aligned to the wrist. I have added two dummies just to show which axis direction I’m talking about, they both rotate along so it’s easier to visualize rotation without a mesh (they’re not needed for the actual setup).

This method works with all animation, however, if you need to use procedural movement in a game engine I suggest creating a scripted aim constraint for the wrists in case you use IKs.

I hope that helps. :slight_smile:


WristBone.blend (279 KB)

Cheers for sharing your rig and the forearm explanation Denny I always like collecting as much info as possible on rigging and trying differen’t methods never even thought of using track to instead of ik .

Make sure you spread the knowledge. :slight_smile:

One very simple solution is to use 2 bones for upper and lower arm/leg. The idea is to have the bones set up as usual, with support for rotation around the local y-axis. The trick is to add an additional bone at the start of the bones with the same direction an roll. This additional bone also has the same parent; but it has a “Damped Track” constraint aiming at the tip of the original single bone.

The result is a quite simple solution without b-bones. While the original bone can be freely rotated around the local y-axis (to match the hand, etc.), the second constraint bone will only bend natural without unnecessary y-axis rotations. All what is needed now is a correctly set up “gradient” for weight painting.

In case of the lower arm you will let the constrained (helper) bone deform the part close to the elbow, while the original bone deforms the part close to the hand. Between both parts you can blend the influence with weight painting very accurately and even asymmetric.

The advantages of the method:

  • It’s easy to set up the bones
  • You can add it to an existing rig
  • Great control which parts rotate (y-axis) with the bone and which not
  • Works for nearly everything (arms, legs, …)

The disadvantages of the method:

  • More weight painting, because 2 bones have influence