Parenting meshes for BoneIKController / BoneLookController to Root Bone

This is not a problem, but an actual question. I made a multi-controller rig for a skeleton. It consists of IK controllers for each arm / leg & also spine. Am using the next bone up the chain as the pole bone, so there is only one mesh to pose each controller (red & white washers in the pic)

There are also bone look controllers are on each wrist / foot, and neck bone using meshes (flat red cubes; neck look controller highlighted in orange in pic, as it is currently selected in the editor).

To round out the description, the pole angle of the IK controller is changed via a slider control (not shown), but only ever used for the arms, not legs or spine.

I am in the process of adding a short, pole shaped, mesh for making poses of rotation & translation for the root bone. To avoid just the whole mesh from moving & rotating, the leg IK control meshes need to be moved & rotated in the opposite direction. Planning to do that in the editor automatically. That way, as the root bone twists or sways the feet in the same place, just like in Blender.

Up until now I have parented all the meshes to that of character mesh. This works for stationary moving of hips, where I want the wrists & fingers to stay in the same spot, but I am thinking ahead, which brings me to my question.

If I want the pose changes to the root bone to be cumulative in the X & Z dimensions, e.g. walking and running, the parenting of the control meshes to the character are going to be left behind along with the character’s position value. I can use attachToBone(bone, character) to keep them right along with root bone.

Am kind of worried why I need to specify the character mesh? It ends up being used in computeWorldMatrix() as so: (in repo)

if (this.character) {
    this._localMatrix.multiplyToRef(parent.getWorldMatrix(), TmpVectors.Matrix[6]);
    TmpVectors.Matrix[6].multiplyToRef(this.character.getWorldMatrix(), this._worldMatrix);
 }  else {
    this._localMatrix.multiplyToRef(parent.getWorldMatrix(), this._worldMatrix);
}

Can I specify null for the character?

I think so :slight_smile: