LIMB [rigBlock]

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

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

LIMB – rigBlock targeted for hinged rig portions

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.

arm

An arm is setup like a human arm and assume you want those

  • attachPoint | end
  • base Vector | 1,0,0
  • base Size | 14,9,76
  • hasEndJoint | True
  • ikEnd | hand
  • ikRPAim | free
  • ikSetup | rp
  • lever base | True
  • loftList | ‘circle’,’widePos’,’squircle’
  • loftShapeEnd | wideUp
  • mainRotAxis | up
  • numControls | 3
  • nameList | ‘clav’,’shoulder’,’elbow’,’wrist’
  • rigSetup | default
  • settingsPlace | end
  • settingsDirection | up
  • side | right

finger

Finger

  • attachPoint | end
  • base Vector | 0,0,1
  • base Size | 3,2.5,13
  • hasEndJoint | True
  • hasLeverJoint | True
  • ikEnd | tipBase
  • ikRPAim | free
  • ikSetup | rp
  • buildLeverBase | True
  • loftList | ‘wideDown’,’wideDown’,’wideDown’,’digit’
  • loftShapeEnd | wideUp
  • mainRotAxis | out
  • numControls | 4
  • numSubShapers | 2
  • nameList | ‘clav’,’shoulder’,’elbow’,’wrist’
  • rigSetup | digit
  • settingsPlace | end
  • settingsDirection | up
  • side | right

thumb

  • attachPoint | end
  • base Vector | 0,0,1
  • base Size | 3,2.5,13
  • hasEndJoint | True
  • hasLeverJoint | False
  • ikEnd | tipBase
  • ikRPAim | free
  • ikSetup | rp
  • buildLeverBase | False
  • loftList | ‘wideNeg’,’wideDown’,’wideDown’,’digit’
  • loftShapeEnd | wideUp
  • mainRotAxis | out
  • numControls | 4
  • numSubShapers | 2
  • nameList | ‘clav’,’shoulder’,’elbow’,’wrist’
  • rigSetup | digit
  • settingsPlace | end
  • settingsDirection | up
  • side | right

leg

Setup like a human leg and assume you want that functionality

  • attachPoint | base
  • base Vector |0,-1,0
  • base Size | 10,10,20
  • hasBallJoint | True
  • hasEndJoint | True
  • ikEnd | foot
  • ikRPAim | default
  • ikSetup | rp
  • lever base | False
  • loftList | ‘wideNeg’,’wideDown’,’circle’
  • loftShapeEnd | wideUp
  • mainRotAxis | out
  • numControls | 3
  • nameList | ‘hip’,’knee’,’ankle’,’ball’,’toe’
  • rigSetup | default
  • settingsPlace | end
  • settingsDirection | down
  • side | right

nub

Single joint setup used for things like props and simple toes

  • attachPoint | base
  • base Vector |0,0,1
  • base Size | 14,9,76
  • hasEndJoint | False
  • ikEnd | tipEnd
  • ikRPAim | default
  • ikSetup | rp
  • lever base | False
    • We turned this on for rigging a lantern one time to have a handle
  • mainRotAxis | out
  • numControls | 2
  • nameList | ‘nub’
  • rigSetup | digit
  • settingsPlace | end
  • settingsDirection | down
  • side |none

quadRear – IN TESTING

Quadruped rear

  • attachPoint | base
  • base Vector |0,0,1
  • base Size | 11.6,8,79
  • hasEndJoint | True
  • ikEnd | pad
  • ikRPAim | default
  • ikSetup | rp
  • lever base | False
  • lever end | True
  • mainRotAxis | out
  • numControls | 4
  • nameList | ‘shoulder’,’knee’,’wrist’,’ball’,’end’
  • rigSetup | default
  • settingsPlace | end
  • settingsDirection | down
  • side |right

quadFront – IN TESTING

Quad front

  • attachPoint | base
  • base Vector |0,0,1
  • base Size | 11.6,8,79
  • hasEndJoint | True
  • ikEnd | pad
  • ikRPAim | default
  • ikSetup | rp
  • lever base | False
  • lever end | True
  • mainRotAxis | out
  • numControls | 4
  • nameList | ‘shoulder’,’knee’,’wrist’,’ball’,’end’
  • rigSetup | default
  • settingsPlace | end
  • settingsDirection | down
  • side |right

Crab – IN TESTING

Crab or insect like leg.

  • attachPoint | base
  • base Vector |0,0,1
  • base Size | 11.6,13,70
  • hasEndJoint | True
  • ikEnd | tipEnd
  • ikRPAim | default
  • ikSetup | rp
  • lever base | False
  • lever end | True
  • mainRotAxis | out
  • numControls | 4
  • nameList | ‘hip’,’knee’,’ankle’,’ball’,’toe’
  • rigSetup | default
  • settingsPlace | end
  • settingsDirection | down
  • side |right

Planned

  • anthropod

 

Special Calls

None.

Define

rigBlock

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

End Define Handle [2] – Defines the end point of our block. You can scale this and the bounding box scale visualization which change shape.

Attributes

  • length
  • width
  • height

RP Define Handle [3] – Defines the rp vector for the block. This controls the rp Plane [6] visualization helper

Up Define Handle [4] – Defines up for our aim to the end.

Lever Define Handle [5] – Defines where the lever base position will be and the up vector for that setup. The up arrow helper on this control matters. If you template builds funky, check this.

Bounding Box Visualization [7] – bounding box representation of the baseSize

Settings

Shared attributes

  • attachPoint
  • baseAim
  • baseSize
  • visMeasure

Template

When we template rigBlocks. Sometimes they have very different looks.How you decide you want your shaping control dictates what you do. As we talked about with SEGMENT.

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

There are a number of settings that affect our template.

Settings

Shared attributes

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

Lever

The lever is what we call our base hinge setup with a clavicle for the first joint of a finger for example.

  • bool | buildLeverBase | Turn on for structure to be created
  • bool | hasLeverJoint | If you have a clavicle setup you want a joint there and not just the structure

The lever loft mesh will be extended when on.

loftDegree 

enum  | Linear/cubic loft

loftSides

int | Number of sides for the loft. Only visible with cubic mode.

loftSplit

int | Sub split on the loft


loftShape

enum | Kind of loft shape you want. Here are some arm limbs  with loft shapes of circle and square type.

numControls

int | How many control we want

numShapers

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

On Limb this acts as numSubShaper does on Segment


Template Loft Mesh

This surface is imporant. It is used for proxy mesh creation and control curve casting. You can affect its shape via the loft handles and the settings to some degree.

Prerig

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

  • One prerig handle created per control

Skeleton

Settings

numRoll

int  | A main value for how many roll joints per segment of joints.

rollCount

int/datList  | A datList chain of attributes to set the roll count per segment of our LIMB. Currently set during the template state call.

hasEndJoint

bool| For game work we often don’t want extra joints that don’t do anything. As an example with a finger, you don’t really need that last tip joint for skinning most of the time. This is for allowing that to be removed without affecting our setup.

hasLeverJoint

bool| If you have buildLeverBase on, do you want a joint or just structure

Rig

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.

ikEnd

enum | This makes it so the ball is setup as a reverse hinge to the ankle. It’ll make more sense as we get into the material

ikRPAim

enumThis controls how our rp setup follows our chain. Note you can always change the space of the rp handle. This affects our main space driver.

  • default – Uses an up vector for the aim
  • free – Vectorless aim following. We use this on the arm as we don’t want the elbow to follow the wrist around as much as the knee generally.

buildLeverEnd

bool | This makes it so the last section is setup as a reverse hinge to the ankle. 


mainAxis

enum | This helps us counter flipping as it lets us figure out the twist axis by specifying the main. For example the main axis on a leg is out because it folds over the knee. Our arms because we usually orient them to be y going up through the shoulder would be up setup because that is the main axis of rotation to collapse the plane.

  • out |
  • up |

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.

Settings

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

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.
  • blendParam | floatDetermines how the joints follow the ribbon surface. Floating evenly or fixed to their attach point

IK End

Our main IK control[2-bottom]. The options and setup for our limb IK can be very different based on rigging options.

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.
  • pivot_0/pivot_1… | enum |  Same as discussed for master.
  • autoStretch| enum |  Stretch on our rp chain
  • lockMid| enum |  lock the mid to the rp handle
  • spinMid| enum |  twist the plane which guides the base follow for the rp handle
  • extendIK| enum |  When we have endLever on we get this attribute which controls how our ballRotation control orients
  • space| enum | Setup by the dynParent System. orientTo would denote a point/Orient setup with orientTo setting the orient target and follow the position target

Pivot attributes – when we have a pivot helper we get extra options

  • roll | float |  front to back edge
  • centerBank | float |  …
  • centerRoll | float |  …
  • spinFront | float |  …
  • spinOuter | float |  …
  • spinInner | float |  …
  • spinBall | float |  …
  • spinBack | float |  …
  • bank | float |  Side to side edge

IK Base

This control IK Base [2-top] is for the start of the ik chain

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 | …

RP Control

This rp control [3] controls our poleVector for our rp plane

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.
  • pivot_0/pivot_1… | enum |  Same as discussed for master.
  • follow| enum | Setup by the dynParent System. Only follow would denote a point only setup

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.

Ball Rotation Control

The handle [5] acts as a reverse hinge for the foot. The buildLeverEnd is what makes this setup.

Attributes

  • axisAim/Up | enum |  Settings for our aiming system. If you use raycast aiming or other systems these settings will be used per control.

Note – The orient of this control is controlled by the extendIK attribute on the main ik control

Pivot Handles

Each of our pivots has a handle [6] for direct manipulation.

Note – Their visibility is controlled by settings.visSub.

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
    • FKIK | 0.0
    • visRoot | True

Root Control

The root control [2]’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.

FK Controls

FK controls [1]  are for direct rotation and movement

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.

On the neck we saw cubes. Because I already verified proxy on the leg. The cube shapes have been replaced by the proxy shape.

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)

Remeber 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

  • R_FRNT_leg_limb_rig | enum | — toggle to hide/see but not touch/touch the rig guts

Post

Settings

Shared attributes

  • proxyDirect
  • proxyGeoRoot
  • loftReverseNormal

Road Map

Setup

  • Soft IK
  • Spline IK

Proxy

  • Morpheus Lofts

Known Issues

  • Zero roll joint and multi roll joint on same limb – This causes some weirdness I’ll resolve in the next sprint for unity mobile

Change Log

2019

February

  • Better define vectors
  • Docs
    • Updated some profiles
    • Few image updates

January

  • hadQuadSetup – This naming was confusing. Changed to buildLeverEnd as it’s more useful than just quad setups and sometimes you don’t want this on quads. Depreciating tipCombo out to use this instead.
  • Docs – Initial pass
  • Lever template – Worked on how lever template is setup to make it the sub loft curve setup more consistent
  • FK cast dags – Added a dag cast setup for the fk shapes. A user was having a bug because we’d been using prerig handles and their end prerig handle was rotated very unexpectedly. May need to revisit to deal with more cases.

 

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.