Monday, February 22, 2021

Pipeline 1: Jetpack Jones - Rigging the Spine

 Going back to the feet rigging, some re-scripting was needed to allow the ball twist to work in polar opposites when the channel boxes are being utilized. This meant breaking the current script in the right control and placing the following:

r_ball_twist_grp.rotateY = - R_Foot_CTRL.Ball_Twist;

This was done for all controls that operate in the rotate Y channel.

Pole Vectors and Scripting

  A arrow Nurb will be used for the pole vector controls. Reducing the scale, the arrow is firstly rotated 180 in Rotate Y and is then grouped twice (the first being called orient_off_grp and the second pos_off_grp). The position group is parented to the knee joint and removing the data in the channel box brings the control up to the knee. 

  Unparenting it, this allows us to bring the arrow outwards in the Z plane via the side view. In this new position, the controls world orientation is upside down. Rotating the control 180 in the rotate Z bring the orientation back the right way but the controls positioning is still wrong. To correct this further, we use the CV's to orientate into the correct position with some code in the MEL box; 

rotate -r 0 0 90; (entre in numeric pad)

We can now create the pole vector constraint

  With the first pole vector working, we duplicate the groups and control of the first control and bring it back to centre. Rotating the arrow 180 in rotate X, parenting to the knee makes sure the arrow is pointing in the correct direction. 

  Unparenting again, we snap the arrow to the same potion as the Left control and change the Rotate Z from 90 to -90 in the orient_off_grp. We can finish up connecting in the Pole Vectors constraints and rename the groups as L_ and R_. 

  For the hips, we use the double ended arrow Nurb. Lifting up the new control, it needs to be positioned just below the top of the hips whilst scaling down. The pivot is then snapped to the pelvis joint. Selecting the pelvis control and then the joint, we used a parent constraint with the off set on.

  To start on the spine, we need the Taco Nurb and snap it to the chest joint. When positioned, we rotate it slightly so as to fit with the chest and compress it slightly so as to not get in the way. This is then renamed as Chest_CNTL. 

  For the Spine, we need a few more controls. Using a circle Nurb from the control selection, we snap it to the central joint in the spine and shrink it down. This one is notated as Lumbar_CTRL.

  Removing the Geometry so to keep the viewport clear, some scripting needs to be removed to give better mesh movement. This means breaking the connections on the top and bottom ribbon spine joints, stopping any odd movements when moving the spine around.

For the Chest_CTRL, we need to create the following groups and move the pivots as so;

1. Group = chest_FW_SDK_grp = Pivot to Chest joint

2. Group = chest_SD_SDK_grp = Pivot to Chest joint

3. Group = chest_bend_SDK_grp = Pivot to Pelvis joint.

4. Group = chest_off_grp = Pivot to Chest joint.

 Then, selecting the control and then the chest joint, we can use a parent constraint to connect it all together.

  This is repeated for the Lumbar control but without the bend group. The finalised Lumbar-grp is then placed under the mid_aim_off_loc, then moving the mid_rbn_ctrl_joint under the  Lumbar_CTRL. This allows the lumbar control to move around with the ribbon spine.

  For the FK spine bend, we use a sphere nurb and snap it to the pelvis joint. Bringing it out, we re-size it  and remove any transformations, re-positing the pivot to the pelvis joint. This is renamed as Spine_Bend_FK_CTRL. (FK is just for a forward bend or forward kilometric). The forward bend is going to need some animation for it to work correctly.

  Using the Set Driven Key menu and setting the FK bend control as the driver, we bring in the chest bend SDK group in to the driven option. The rotate x is selected for both, keyed at zero and then position forward at 60, placing a key to finish. This is then repeated for the backwards bend at - 30 in the Rotate X. Once happy, we need to make the graph editor linear to stop any slowing in and out.

  This is repeated for the sideways SDK group but in Rotate Z and 50 each way. 

  For the spine FK, we need the spine to curve in a more natural way. Making sure the lumber pivots are placed on the ribbon spine centre joint, we bring in the FW groups for both the spine and lumbar into the driven.

  Using the rotate X on the driver, the driven needs to have translate and rotates X, Y and Z utilized and keyed in 0. Positioning the spine forward at 60, the chest FW SDK also needs to be placed at 60 and then both keyed. The lumbar control is then rotated slightly and brought backwards to allow a curve and and set. This is then repeated for the backwards bend but at -30, changing the graph editor to linear.

 The side bend is done the same way but is placed on the rotate Z in 60 each way.

  The twist in the spine needs to have some fall off. Using the groups for the side bends, we place keys at 30 in the Lumbar Rotate Y and 60 in the Chest. This is also done in the negative direction also.

  To finalise the spine, we need a COG control (centre of gravity). Using a pyramid Nurb, its rotated so the point is facing the spine and then resized. The pivot is placed on the pelvis joint and the control renamed as COG_CTRL. This control is mainly for constraints. Selecting the following Groups, we use a parent constraints so that they fall under the COG control when it's being moved;

- Pelvis Control

- chest_off_grp

- Spine_Bend_FK_CTRL

  This now completes the spine rigging.

Rig so Far

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Major - Submission Post: Final Animation, Reflective Statement and Links

Final Reflective Statement When starting the Major Project, there was still quite a lot of work left over from Minor for the planned final...