top of page

Advanced Shoulder Rig

So, I've always been taught how to only create shoulder rigs using two joints for the clavicle. 
I knew that it was 'meh' and it could look better but I never really know how. 
I pulled out my anatomy book and learned that as we lift our shoulders, we don't just move our clavicle bone, the muscles (pectorals, trapezius and latissimus dorsi) that affects and move along the body is how we make the deformations look better and smoother. It prevents the chest area from looking stiff and it gives minor movement which makes it look better. 

I did some research online and here is my process:

I decided to give him both FK, IK with a pole vector and an Auto Clavicle arm. For the Auto Clavicle, it will give me automatic rotations on the shoulder. I created two joints, one at the clavicle and one on the wrist, then parent the wrist joint to the clavicle joint and create an IK Handle. I then created a locator with the same transformation as the wrist joint (this allows the axis to be the same) and bring it down the Z axis and group the locator (so the group will hold the locator’s values. With the pole target and IK handle selected, I create a pole vector constraint. I then snap the pivot of the pole target group to the wrist and give it a point constraint with the wrist control and the Pole target group selected. Finally with the wrist control and IK handle (Auto Clavicle UK) selected, give it a point constraint and select the first auto clavicle joint and the clavicle joint and give it an orient constraint. This way, moving the arm moves the clavicle automatically.

For this set up, I created a new set of clavicle joints, where it sits on the clavicle, created an arm point joint where it will sit with the shoulder joints, which would make the arm follow, create a joint system for the scapula where it would rotate around the ribcage For the trapezius set up, I created two joints and place where it would sit at the top of the trapezius muscles and parent it under the clavicle joint. Finally I created a singular joint for the pectoral muscle and place it around the lower centre of where the pectoral muscle would be and then created another singular joint for the latissimus dorsi muscle
I grouped the clavicle joint set up and named it as ClaviclePad, grouped the pectoral joint and name it as Pectoral Pad and then parent the lat joint under the chest.

First I parent constraint the ClaviclePad to the chest. Then I parent constrain the IK arm to the arm point. This way, when you move the clavicle, the IK arm gets pulled up together. Then with the chest and the Pectoral Pad selected, I parent constrain them just so it will rotate correctly with the spine. But to get them to move in between the clavicle and the chest, I select the clav2 joint, the chest joint and the pectoral joint and I point constraints on the Y and Z axis only. This way it only translates on the Y and Z when we move the clavicle. The pectoral muscles do not rotate and the clavicle pulls the muscle upwards and sideways. For the pec joint to move in between. I have the W0 and W1 for the point constraint set to 0.5. Similarly for the Latissimus dorsi muscle, I select the clav2 joint, the chest joint and the lat joint and only point constraints in just the x axis. For the clavicle, I created a single chain IK handle, create a control and parent constraint it to the IK handle so it pulls the clavicle set up.

Setting up for the aim constraints
I create a World of Object using a locator and bring it up to the chest joint. The purpose of the world of object is to allow the aim constraints to know when to twist. I then select the joint and the locator and parent constraint it. With the neck and the trap joints selected, I did an aim constraint with maintain offset on and object rotation up. Then I copy my locator name into the World of Object and apply. This way the trapezius joint will keep aiming towards the neck. Applying the same concept to the scapula joint, I select the neck joint, the scap rotate joint and aim constrain it to try to mimic the shoulder blade. To prevent the scapula joint from rotating too much I select the back joint, scapula joint and aim constrain it. Finally, with both set ups completed, I select the autoclav 0 joint, select the offset grp of the Clavicle IK control and parent constraint with maintain offset on and create a set driven key. This allows more freedom for the animators to either manually move the clavicle themselves or to have them move together following the IK hand.

bottom of page