SEGMENT [rigBlock]

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

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

SEGMENT – rigBlock targeted for flowing segments of joints

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

Simple segment

  • attachPoint | end
  • base Vector | 0,1,0
  • base Size | 30,15,76
  • ikBase | cube
  • ikEnd | cube
  • ikSetup | ribbon
  • mainRotAxis | up
  • numControls | 4
  • numShapers | 6
  • numSubShapers | 3
  • nameList | ‘start’,’end’
  • segmentMidControl | True
  • settingsPlace | start

Spine Up/Fwd

Our standard spine

  • attachPoint | base
  • base Vector | [up – 0,1,0 | fwd – 0,0,1]
  • base Size | 30,15,76
  • ikBase | hips
  • ikEnd | tipMid
  • ikSetup | ribbon
  • mainRotAxis | up
  • nameIter| ‘spine’
  • nameList | ‘pelvis’,’chest’
  • numControls | 4
  • numShapers | 2
  • numSubShapers | 3
  • segmentMidControl | True
  • settingsPlace | cog

Tail

Our standard spine

  • attachPoint | base
  • base Vector | 0,0,-1
  • base Size | 14,9,76
  • ikBase | simple
  • ikEnd | tipBase
  • ikSetup | ribbon
  • nameIter| ‘tail’
  • nameList | ‘tailBase’,’tailTip’
  • numControls | 6
  • numShapers | 5
  • segmentMidControl | True
  • settingsPlace | end

Tentacle

  • attachPoint | base
  • base Vector | 0,0,1
  • base Size | 14,9,76
  • ikBase | simple
  • ikEnd | tipBase
  • ikSetup | spline
  • loftList | ‘wideDown’,’squircleDiamond’,’squircleDiamond’,’circle’
  • mainRotAxis | up
  • nameIter| ‘tentacle’
  • nameList | ‘base’,’tip’
  • numControls | 6
  • numShapers | 4
  • segmentMidControl | True
  • settingsPlace | end

EarUp – IN TESTING

Our standard spine

  • attachPoint | end
  • base Vector | 0,0,-1
  • base Size | 10,10,20
  • ikBase | simple
  • ikEnd | tipBase
  • ikSetup | ribbon
  • nameIter| ‘ear’
  • nameList | ‘earBase’,’earTip’
  • numControls | 4
  • numShapers | 2
  • numSubShapers | 3
  • segmentMidControl | True
  • settingsPlace | end

Settings

Almost always located on our rigBlock dag.

segmentMidIKControl

bool. Whether to setup an extra midIK control on the segment

Shared

See shared attributes.

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

Special Calls

None.

Define

rigBlock

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

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

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

Attributes

  • length
  • width
  • height

Template

Attributes

These attributes change what our template looks like.

  • numShapers
  • numSubshapers
  • loftSetup
  • lloftList | If you have this option. Currently requires rebuild of template to change out
  • loftDegree
  • loftShape – Currently requires rebuild of template to change out
  • loftSides
  • loftSplit

Shapes

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

For example if you have a straight segment like a spine you’d probably just want something like this to have two major scale points and no need for mid articulation.

2 Shapers, 7 sub shapers = 9 loft handles

If you’re doing a tail or something with breaks you probably want to have more handles and fewer sub shapers. The second setup ends with the same number of loft shapers but has a place to hinge things.

3 Shapers, 3 subshapers = 9 loft handles

Template Handles

The dark rounded corner handles[1] (color will vary by side). They are used for big movements and scaling. Sub shaper handles are controlled by these.

Loft Handles

These are the actual curve handles [2] that our template loft runs through

  • You can change the cvs on these however that data isn’t currently stored in our blockDat so rebuilding will wipe it

Orient Helper 

This arrow shape [3] controls the ‘up’ of our segment root for rigBlock aiming and joint aiming.

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

Attributes

These attributes change what our template looks like.

  • addCog
  • numControls

Shapes

Prerig Handles

Axis shapes [1].

  • These represent our points of articulation
  • One per numControl count will be created
  • The each have a joint handle with them
  • The last one is colored by axis colors to differentiate as it is important. The IK handle during rigging will take the orientation of this handle. Pay attention to how it is rotated.

Joint Handles

These sphere shapes [2] are our handles to control our joint loft.

  • The joint loft represents what our joint chain will be at the skeleton state

Joint Loft

The lofted surface running within our proxy loft is our joint loft. It represents what our joint chain will be.

  • It is controlled by the joint handles

We’ve toyed with the idea of per joint handles to exactly place roll joints but that would mean you’d have to rebuild the prerig every time you wanted to change the roll count. For now you can move them manually at skeleton state.

Cog Helper

See Shape Helpers – Cog Helper

This shape [3] is our Cog Helper.

Rig

There’s a lot of things happening when we rig.

  • rigBlock – Our rigBlock has its .template attribute turned on so that it’s easier to not inadvertently select it post rigging
  • Dag structure – created and setup for all our rig setup for both this block as well as others
  • Shapes – Different nurbs control shapes are generated
  • Rig wiring – The rig is wired so that we can get all the information we need once the rigBlock is removed from the scene. Remember it is a frame to build the rig and  designed to be removed once we have our asset completed
  • Dynparent setup – Based on our settings, the master will have our dynParent setup added as well as spacePivots for that system

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.

Cog/Settings

The cog [1]  we looked at previously. During the rig process our cog dag helper has a transform created at it, then the cog shape helper is shape parented to that new transform to make the control.

Because of our options, our cog is our settings control. This is an option. If you had had it off, you might see a gear instead.

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.
  • 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.
  • 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/1 | enum | Same as discussed for master.
  • blendParam | floatDetermines how the joints follow the ribbon surface. Floating evenly or fixed to their attach point
  • space | enum | Setup by the dynParent System. Space would denote a parent setup.

Base/Mid/End IK

We are seeing the ik controls  because we are in ik mode

  • Base IK | Hip shape [2] at the base of our spine
  • End IK | chest shape [3]
  • Mid IK [4]

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/1 | enum | Same as discussed for master.
  • blendParam | floatDetermines how the joints follow the ribbon surface. Floating evenly or fixed to their attach point
  • space | enum | Setup by the dynParent System. Space would denote a parent setup.

Segment Handles

We only see one [5] but as we mentioned. The number you see will be determined by our build options. When our control count matches our joint count we don’t need an extra ribbon as we can use the main. When we have extra joints we have a separate ribbon which these controls would influence.

Attributes

  • followRoot | float|  What the control follows. Be it the root or the blend frame.

FK Controls

If we turn on fk mode we’ll see the fk controls.

Note the shapes hug our proxy we shaped during the template state.

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.

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

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

Dag Structure

For those that care about the rig structure


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

  • spine_segment(dag- cgmRigModule)
    • spine_rigNull(dag)
  • spine_segment_deform_grp(dag)
  • spine_segment_animSet(objectSet)

Module Dag/RigNull

The spine segment 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

  • spine_segment_animSet– Master anim set for puppet controls. Sub modules have their own sets added to this one

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

 

Road Map

Setup

  • Soft IK

Proxy

  • Morpheus Lofts

Change Log

2019

Februrary

  • Implemented better mid ik segment
  • Polish on segment in general
  • Added tentacle profile
  • Spline IK option implemented
  • LoftList implemented

 

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.