HEAD [rigBlock]

MRS : Landing | Members | Queue | Forum | DocsLibrary | How

 master | handlesegment | limb | handhead | eye | muzzle | brow

HEAD – rigBlock targeted for heads – with or without necks

Block Profiles

Block profiles may have their settings changed at will. These are simply presets.

General notes:

  • Profiles are initially loaded at creation but they should be able to be safely loaded at define state
  • Distances are stored in cm (maya’s base unit)
  • Some settings are overridden by the buildProfile settings. For example some game buildProfiles will have endJoints off.

Simple

Neckless head setup

  • attachPoint | end
  • base Vector | 0,1,0
  • base Size | 15.2,23.2,19.7
  • ikSetup | ribbon
  • neckBuild | False
  • neckControls | 0
  • segmentMidIkControl | NA

neckLong

  • attachPoint | end
  • base Vector | 0,1,0
  • base Size | 15.2,23.2,19.7
  • ikSetup | ribbon
  • neckBuild | True
  • neckControls | 3
  • segmentMidIkControl | True

neckShort

  • attachPoint | end
  • base Vector | 0,1,0
  • base Size | 15.2,23.2,19.7
  • ikSetup | ribbon
  • neckBuild | True
  • neckJoints | 1
  • neckControls | 1
  • segmentMidIkControl | True

Settings

Almost always located on our rigBlock dag.

Special Calls

headGeo_getGroup

Makes sure we have a geo group. Can select it.

headGeo_add

Add proxy geo to the setup by duplication so as to leave the original in tact. Wiring it as needed.

headGeo_replace

Add proxy geo to the setup by duplication so as to leave the original in tact. Wiring it as needed. Remove what’s there. What is removed will be parented to world and tagged with _REMOVED

headGeo_remove

Remove selected. What is removed will be parented to world and tagged with _REMOVED

headGeo_lock

Toggle the lock on the geo selectability. Unsure if we’ll keep this or go with the attribute setup like HANDLE.

UI

Has right click menu via mrsBuilder.

  • Report Group | Print the name of the group
  • Add Selected | Add selected geo to the proxy geo setup
  • Replace with Selected | Replace existing geo with selected
  • Remove Selected | Remove the selected
  • Select Group | Select the geo group
  • Head Geo Lock | Toggle the geo lock

Define

Settings

Shared attributes

  • attachPoint
  • baseAim
  • baseSize
  • visMeasure

rigBlock

The locator form shape [1]. Select it to get the dag.

Neck End Handle [2]

Defines the end point of our neck. You can scale this and the bounding box scale visualization which change shape.

Attributes

  • length
  • width
  • height

Head bbVisualize [3]

General form of the head.

  • Adjust the size with the baseSize on the main dag.

Neck Up Handle [4]

Defines the upvector for the neck section. This controls the orientation of the neck bounding box visualization[6]

Neck RP Handle [5]

Defines the rp vector for the neck section.

Aim Handle  [6]

Defines the aim point for the head. You’l get more finesse at the template state.

What are we looking for at this state?

  • Form – You’re not worrying about the pivots here, just bounding box your frame
    • Put the rigBlock in the middle of the head
    • Use baseSize to approximately match the size of your head
    • Move the neckBase handle to the base of the neck.
      • Scale this volume to approximate your neck
  • Aim – Place the aim handle where so that he aim vector is how you want aim forward on your head is.
  • neckUp – Check your neckUp handle to make sure it’s where you want it.
  • neckRP – Ensure the neckRp handleis oriented how you want. Generally speaking the rp vector is through the main axis of rotation for that chain.

Template

Shapes

See guide shape helpers for a breakdown on what the specific handles do.

What are we looking for at this state?

  • Shape| You want your template to generally match the look you’re going for. If you’re not working from a mesh and just an image plane really pay attention to your various angles.
    • I rotated my head geo up a little in my setup because it was a more natural orientation to me
  • Head Handle | Make sure you like how it’s shaped to your head. This shape will be used as our head control.
  • Start Orient| Ensure the orient helper at the base of the neck is pointing where you want
  • Head Orient | Make sure it’s pointing where you want head forward to be. Our eventual headAim control will be eventually created along this vector

Settings

There are a number of settings that affect our template.

Shared attributes

  • addCog
  • attachPoint
  • baseAim
  • baseSize
  • ikBase
  • ikEnd
  • ikOrientToWOrld
  • ikSetup
  • loftDegree
  • loftShape
  • loftSides
  • loftSplit
  • numControls
  • numShapers
  • numSpacePivots
  • proxyDirect
  • proxyShape
  • ribbonAim
  • ribbonConnectBy
  • ribbonParam
  • scaleSetup
  • settingsDirection
  • settingsPlace
  • spaceSwitch_direct
  • squash
  • squashExtraControl
  • squashFactorMax
  • squashFactorMin
  • squashMeasure
  • visMeasure

loftShape

enum | Kind of loft shape you want –  square and wideUp shown.

numShapers/numSubShapers

int  | The number of shapers for a given section or block to help define it

This one  has 3 shapers and 2 subShapers. The subShapers are split between the sub shapers.

 

Prerig

See guide shape helpers for a breakdown on what the specific handles do.

  • One prerig handle created per control

What are we looking for at this state?

  • Handles |  Place the points of articulation where you want them. Use the jointLoft as a visual guide.

Skeleton

What are we looking for at this state?

  • Joint orients | make sure they look like we expect
  • Joint count | Make sure you have the number of joints you want to start iterating with
  • Joint parent | make sure the root of your chain is going where you expect. When we get to the head for example, we wouldn’t want that root of our neck to go to the pelvis unless we had a pretty atypical design.

Settings

neckJoints

int  | How many neckJoints you want

Rig

  • Neckless head
  • Single control neck, 1 neck joint
  • single control neck, 3 neck joints
  • 4 control neck, 6 neck joints

Settings

Shared attributes

  • ikBase
  • ikEnd
  • ikOrientToWOrld
  • ikSetup
  • numSpacePivots
  • proxyDirect
  • ribbonAim
  • ribbonConnectBy
  • ribbonParam
  • scaleSetup
  • settingsDirection
  • settingsPlace
  • spaceSwitch_direct
  • squash
  • squashExtraControl
  • squashFactorMax
  • squashFactorMin
  • squashMeasure

segmentMidIKControl

bool | This to setup an extra midIK control on the segment from one point of articulation to the other when you have roll joints.

Dag Structure

For those that care about the rig structure


I’ll lay them out and then discuss them briefly.

  • neckLong_head(dag- cgmRigModule)
    • neckLong_rigNull(dag)
  • neckLong_head_deform_grp(dag)
  • neckLong_head_animSet(objectSet)

Module Dag/RigNull

The head rig dag is a tagged mClass node of type cgmRigModule[LINK THIS WHEN DONE]. This is a special kind of dag that holds most pertinent information for the rig wiring.

  • Non transforming dag | this dag is for non-transforming dags/nodes

Deform Group

We have a deform group that is placed under the master control deform group.

  • Deforming nodes for the rig go here.
  • Sometimes I have a separate constrain group under this
  • Typically rig controls end up in here

Object Sets

Each rig Module gets it’s own animation objectSet to which all rig controls are registered

  • neckLong_head_animSet– Module anim set under the Puppet’s

Our object sets are created as cgmObjectSetmClassed nodes which extends their usability in code.

Controls

The kinds of controls you see will depend on your rig options for the rigBlock. In our case we start with something like this.

The kinds of controls you see will depend on your rig options for the rigBlock. In our case we start with something like this.

Settings

The settings [1]  we’ve talked about on the spine. The gear is our standard settings shape when no cog i

Note – Many of these attributes would not be on this control should we have a separate settings control

Attributes

  • FKIK | float |  Blend between fk/ik mode. It controls that blend as well as the visibility of those controls.
  • visSub | bool | Whether or not the subcontrols of this rig section are visible. In our case, we only have one. If we had used more joints than controls, we’d have more of these.
  • visRoot | bool | Toggle visibility of the root control for the se
  • visDirect | bool | Whether or not the per joint controls of this rig section are visible. By default they are cube curves. When the build option of proxyDirect is checked. The proxy mesh replaces those curves.
  • blendAim | float | Blend the aim setup on or off. Also controls visibility of the aimControl
  • blendParam | float | Determines how the joints follow the ribbon surface. Floating evenly or fixed to their attach point

FK Neck Controls

FK neck controls [2]  is the default on head setups currently so it’s what we see.

Attributes

  • axisAim/Up | enum |  Settings for our aiming system. If you use raycast aiming or other systems these settings will be used per control. If no settings are found, the global defaults will be used.

FK Head

The FK head  [3]  is the default on head setups currently so it’s what we see.

Attributes

  • axisAim/Up | enum |  Settings for our aiming system. If you use raycast aiming or other systems these settings will be used per control. If no settings are found, the global defaults will be used.

Segment Handles

The segment handles [4] control the ribbon for the segment joints. The number you see will be determined by our build options.

Attributes

  • followRoot | float|  What the control follows. Be it the root or the blend frame.
  • space | enum | OPTIONAL – Added when the spaceSwitch_direct option is on. Setup by the dynParent System. Space would denote a parent setup.

We need to toggle a few options to see some more:

  • Settings
    • blendAim |  1.0
    • FKIK | 1.0
    • visRoot | True

IK Head/IK Base

The IK head  [1]  and IK Base [2] are the ik control for the neck as well.

Attributes

  • axisAim/Up | enum |  Settings for our aiming system. If you use raycast aiming or other systems these settings will be used per control. If no settings are found, the global defaults will be used.
  • orientTo| enum | Setup by the dynParent System. orientTo would denote a point/Orient setup with orientTo setting the orient target and follow the position target
  • follow| enum | …

Mid IK

The midIK [3] is only created when that option is selected.

Attributes

  • axisAim/Up | enum |  Settings for our aiming system. If you use raycast aiming or other systems these settings will be used per control. If no settings are found, the global defaults will be used.

Root Control

The root control [4]’s visibility is controlled by the settings. As we turned it on we can see it. It is a dag under which the rig is parented and as such legs you move the whole section of the rig when necessary.

Attributes

  • axisAim/Up | enum |  Settings for our aiming system. If you use raycast aiming or other systems these settings will be used per control. If no settings are found, the global defaults will be used.
  • space | enum | OPTIONAL – Added when the spaceSwitch_direct option is on. Setup by the dynParent System. Space would denote a parent setup.

Head Aim Control

The root control [5]’s visibility is blendAim turning on or off. This was added at a client request and is optional. When on, the head will aim at the target and rotating the blend aim on it’s z axis (aliased to tilt) will tilt the head.

Attributes

  • axisAim/Up | enum |  Settings for our aiming system. If you use raycast aiming or other systems these settings will be used per control. If no settings are found, the global defaults will be used.

Direct Controls

We need to toggle an option to see some more:

  • Settings
    • visDirect |  True

The direct controls [1]’s visibility is controlled by the attribute we just changed. These are per joint controls for when the animator needs the highest fidelity of control.

The default shape for these is the cube you see above. However, when you create a proxy mesh these shapes are replaced by the proxy geo with a transparent shader set to them to make them selectable.

Attributes

  • space | enum | OPTIONAL – Added when the spaceSwitch_direct option is on. Setup by the dynParent System. Space would denote a parent setup.

visControl (ON MASTER)

Rember back on the master. The master settings has a new attribute registered with every module that builds that lets us see/interact with our rig guts.

Attributes

  • neckLongHeadRig[bool] — toggle to hide/see but not touch/touch the rig guts

Post

Settings

Shared attributes

  • proxyDirect
  • proxyGeoRoot

Road Map

Setup

  • Soft IK
  • Spline IK

Proxy

  • Morpheus Lofts

Known Issues

Change Log

2019

February

  • Docs updated – Some new images, added special calls and UI sections first pass
  • Added RP vector handle for consistency
  • LoftList implemented

January

  • Reworked neck twist setup some for low counts.
  • Aim head now will drive neck twist
  • Docs – Initial pass

Josh Burton

[MRS Project Lead | CG Monks] Josh is an animator turned TD who hails from Oklahoma, pre-undergrad in the Marine Corps, animation basics at Savannah College of Art and Design, cut his teeth in gaming and commercials before co-founding CG Monks and more recently the CG Monastery. The Morpheus Rigging System is a culmination of years of R&D and he is now thrilled to see what users can create, collaborate and expand on with this open source MRS platform.