LIMB [rigBlock]

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 createdbool
|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
enum
| This 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 |
float
| Determines 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 thespaceSwitch_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.0visRoot
| 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 thespaceSwitch_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 thespaceSwitch_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.