Sprint | Updating mDrake and Face Blocks – Part 1

I’ll be updating this post through the sprint. This post will stay public until the end of the sprint when it will be Patron only. Trying this public to private method as an experiment.


Continuing the plan of add mDrake has been out a few months and needs an update to the new build setup as well as some other bits to make it more useful.


What do we need to do?

  • Geo | There were some polish I was looking at way back I need to revisit and see what’s going forward
  • Pistol | Making the pistol a work fully
    • Separate to a new asset
    • Trigger
    • Slide
    • Magazine
  • Prop handle | New Profile for handle
  • Face | Need to update the facial blocks and make sure they’re building
  • Fresh build | new build of the rig
    • New foot setup



Time to look at the old stuff and see where we were and what I was concerned with.

  • Shoe | was a little uniform and wanted to tweak the form a little
  • Eye | shifted to a concave iris for better rendering
  • Arm | slight tweak to shape and how the rolled sleeve lay
  • Teeth| lowered teeth line


We need a way to unfasten it believably and reclose it so some slight modification will be necessary

Jump in maya…


The pistol needs some work to make sure the geo will move properly

  • Slide
  • Trigger
  • Mag

Started digging into the model to make this work and it’s going to take more effort than the mesh quality would make sense for. So I reached out to turbosquid to see if I can purchase a model there for use with an asset.

…Nope. Looks like we won’t be able to use turbosquid stuff to add props to assets. Best hop to.


  • Split the barrel from the slide along with the spring attachemnt
  • Split out the chamber cover
  • Extended barrel
  • Tweak to housing to get the slide kinda okay
  • Fixes to uvs


  • Toned down bump/normal
  • Toned down pistol textures till we can really get a great quality asset.

Pistol rig

We need to do a few things with the pistol. Some of them new for MRS stuff.

  • We want the ability to add space targets to then connect to another asset
    • This may be as simple as named space pivots or it might be something else
  • We want to have more controls
    • Pistol
      • Trigger
      • Slide
      • Mag


Plan out how many shapers I’ll need…

  • 4 Blocks
  • Showing off puppet mesh above
  • Loft setups for most of it. Added dup of the barrel geo to base for better proxy represenation


There’s two things we need to look at doing here.

  • SDK Groups | I want to setup a trigger pull sdk that will drive the, trigger, and slide so we need a way to toggle this to wire.
  • Pivot space | We use the pivot setup all over. Want to try to not use this as an on all the time thing but as a kind of space pivot. Maybe bankSpacePivot?
  • Prop spaces | We need a concept for adding named space targets so we can add these for left/hand right hand, etc. We could potentially do that just via alias after the build and have them update the alias

Adding some new attributes to handles:

  • buildSDK | enum | none:dag | This is our starting setup for this.
  • buildBankPivot | enum | none:base | want to do this like space pivots but they are like space pivots with our bank rig. Not sure I’ll have time to do this one this pass but just wanting to think through it. Thought about doing it as number of bank pivots but I think
  • numSpacePivots | just adding this standard one. Then the questions is how many do we need. For our first pass here I’m going to try using space pivots as our targets for attaching to our character thus we’ll need:
    • hand l/r, holster + an extra = 4


After we build we need to setup our sdks on the rig.

  • Add a float driver on the main handle
  • Setup sdks on a post repeating cycle so you can play with timing easily
  • add some simple fire


First take a look at where we are.

  • General
    • Make sure all are building
    • Experiment with the controller tags with proximity setup
    • Start fleshing out face block documenation
  •  Eye
    • Not happy with lid shape. Add more handles
    • Incorporate patch fix on lids
  • Brow
    • Maybe revisit the surface/offset stuff
  • Lower
    • ?

Eye Block


Check various profiles

  •  eyeSimple
    • Working again
    • Without IK?
      • Changes to skeleton setup and some other bugs to make work
  • eyeClamLid
    • need a lot of work on lid stuff


  • Few bugs from changes to systems
  • The sizing is baking by default, implementing the new sizing method
  • Added a better flagging method for making vector arrows track handles via an arrowFollow kw
  • BaseSize

Define Curves

Want to bring in the define curves from muzzle to make it feel more consistent

  • I tried linear and cubic curves. Thinking we keep define state linear so users don’t get to tied up with the look and just the points.


I want to have more form definition for the lid without going too crazy. I came across this amazing image on facebook a while back and want to use it for ref.

From Anatomy For Sculptors

We need a plan to better flesh out our shapers for our new lids setup. So we head to photoshop for some drawovers.

  • Need to add new handles, maybe use numShapers?
    • Maybe just have a set count by the curve
  • Curves needed
    • Upr/Lwr
      • contact
      • line
      • mid
      • edge
    • Think we’ll hold off on the full out trace till the next pass till we decide if we want that eye orb as a part of the muzzle or eye setup…
  • Next pass
    • Add closed lid base setup
    • iris
    • pupil
    • non spherical eye

To Do

  • Build new handles
  • Build Curves
  • Build Surfaces
  • Wiring
    • setup self mirror ability like muzzle/brow
      • Looking into it, enforcing a self mirror ability isn’t worth the limitation. I’d have to always have a consistent count on left/right of the center split which isn’t ideal
    • try the new maya control stuff to start working through that


  • numShapersLine
  • numShapersOuter
  • pupilBuild
  • irisBuild
  • irisDepth
  •  numLidLwr/UprShapers
    • Setting this to min of 3 for now
  • lidType | simple:full | Unsure on this one


Gut out the old form stuff. Start pulling from muzzle block as that was the furthest along facial block.


  • Rather than fixed names, we’ll do an iterated name list from inner to outer
  • So for each ‘line’ we need to
    • Get the handle number
    • Generate tags
    • Generate positions
    • Build handles
    • Build curves
    • Build loft dicts

Pass 1


  • Need to add control hiding via the control tagging
  • Play with the surface setup
  • A bit busy. Lose the joint labels
  • Define – add eye surface rather than nurbs
    • Should we deal with pupil/iris size?

Pass 2

  • Tweaked MRS shaders. diffuse way down, spec down. Trying to get them not so offensive to work with
  • Define stuff hides better now
  • Checked coloring
  • Added pupil/iris size helpers — will probably need to have those not there when we don’t care. Was thinking that it would aid in building proxy geo to have that.
  • Testing simple raycast snapping workflow to see if I need specific snap to surface calls


  • Think we don’t need the vector line helpers from define
  • Add a visDefineVolume (?) to hide the eye suface so we don’t have to manage that all the time. If invisible may need the old curve as well and just toggle the surface on and off.
  • Wondering if we need an overall lid mover for more ease in offsetting the lid from the iris line and if w do that do we need to be able to rotate the orb of the ball?

Pass 3

  • UI
    • Adding initial ui for eye
    • Added calls to
      • Snap selected to surface
      • Snap state handles – still working through this one
  •  Define
    • Removed vectors
    • Added proximity setup on handles
    • Projecting curves
      • Tried this with the pupil, iris. Works but is really slow
    • Duplicating some live curves on the surface to give more frame and I kinda like it
    • At end, snapping the define handles to the surface. It feels good. Think we may need this for
  • Proxy
    • Reworked how the eyeball proxy is generated at after rig to incorporate the pupil/iris data


  •  Gen
    • Bring mesh in to start building towards mDrake
    • Start fleshing out docs
  •  Define
    • Need an offset value for the pupils and to know how much to offset ‘skin’
    • Move aimer from prerig to define
    • Connect pupil/iris to that
  • Form
    • Select ui not working as intended
    • Look at adding the extra ring of mesh, maybe just to upr?

Pass 4

  • Define
    • Major change ups…
    • Tried moving the orient and pivot handle to define state
      • In the end this was an undependable way to position the
    • Iris/pupil now tracks the surface to make non uniform eye setup work
    • Iris/pupil changed from attribute driven to direct
    • irisDepth added
    • Iris/pupil helpers now conditional on if there is a build option for them
  • Form
    • Added lid follow on the contact handles driven by the lid line
  • Prerig
    • Orient helper aims at iris position for base now
    • Changed out control curve
  • Post
    • Initial pass on making the proxy work without pupil. Looks like a tasty egg…no?

Pass 5

To do…05.21

  • General
    • Bring in mDrake to work towards
    • Check mirroring setup
      • Define
      • Form
  • Define
    • Added way to visualize lidDepth
  • Form
    • The track curve now gets initial pos via closest point
      • Contact/Line
    • Renamed tags – contact,line,edge,orb
    • Made follows on surface point rather than parent constraints
  • Prerig
    • Changed out handle shape
  • Rig
    • Lid building
    • Get bug fix in
      • Those curves need to got to eyeRoot anim rather than rigNull
    • Changed fk control shape to a loli using the iris look at control

Next Pass

  • Form
    • Add pick walking
    • Add extra shaping curve for the curve of lid. Maybe call curvature
      • Constain those handles between mid and line, maybe rename some
  • Prerig
    • Rework initial pos for joints – need a curve that goes through the ‘barrel’ of the lid form

Brow Block


Looking at the old setup, what works, what doesn’t. Bokser and I have had some discussion on the eye squeeze/eye orb stuff and aren’t sure where to implement. On Morpheus 2 I considered the squeeze and upr cheek as a part of the brow. This might be weird on a animal/critter (was watching How to Train Your Dragon with the kids last night) and Toothless brow is much more a part of his eye. A frog would be similar. So… this is something to work through.

  • Define
    • Just the volume may not be as useful as the visible framework like with muzzle
  • Form
    • Move the prerig curve to prerig

Planning for define.

Pass 1

  • Define
    • Implement handles
    • Self mirror setup

This is okay but I don’t think it’s quite enough data to get on with. I played with the idea of sliding a curve to define the brow mid line but in the end I think just giving handles to grab is more straight forward.

Pass 2

  • Define
    • New layout
    • Got rid of surface. Define state shouldn’t be about form
  • Form
    • New attrs
      • formForeheadNum | how many splits across the plane of the brow
      • formBrowNum | …brow ridge


Pass 3

On this pass, I’m moving to prerig. Previously I’d used a param attr to slide the start and end points.  Since last fall, we’ve found that direct manipulation is more intuitive. As such I’m thinking of a 3 part handle setup for the brow and if it works well I’ll look to implement elsewhere.

  • Using new anchor handle idea
  • Trying something new I’m calling an anchor handle.
    • The anchor either drives a follicle directly or via a point on a curve between multiple anchors.
    • Then those points drive either a single control or a locator attached to a curve which drives a set of points of data (this is how I’m moving multiple brow helpers at once)
    • With the follicle we can then push the control shape off the surface consistently or sink your joint chains in.
  • Make the new driver handles
    • center, start, mid, end
    • positions…
      • Get positions via define handles and closest point on surface
    • temple?
  • Get driven point for those
    • Generate driven handles for those.
    • Offset those negatively in the mesh
    • Generate a control curve for those
    • Generate visualization for the surface controls?
      • Might be nice to have those at this point as we already will have the positions and can just use those curves rather than redo it at rig
  • Attributes
    • controlCenter | bool
    • controlNum:int | per side
    • controlTemple | bool
    • jointDepth | float | how deep we want our joint chains
    • controlOffset | float | pushes the controls off the surface
  • Other bits
    • Locking scale,translate,rotate after prerig because it’s too much of a hassle to keep stuff scaling right at this stage
    • Mirror working

Pass 4

As I got into rigging again I realized I hadn’t implemented differing control/joint counts for the setup and I want to hit that with this pass so…

  • I want full control per joint on it’s orientation in the face so I need handles per joint
  • Back at prerig to add the necessary data. I have all the base data, just need to add the per joint setup as well as rename some wiring


  • Renamed some basic wiring. The main prerig handles are now wired as prerigDat and prerigShape
  • New joint handles
    • The new joint handles take the expected jointHelper wiring
    • Orientation matters so we need a decent pass on this
    • Split the left/right curve and attach to those. The orient, we can aim out the side along the curve sequence with our up driven by the left right initial handle maybe?


  • Wiring update
    • tag – browLeft
    • PrerigShapes | Control Shape
    • PrerigHandles |control dag
    • JointShapes |


  • Use the define handles to make joint holders for places we don’t have data then skin that
  • Wire as proxyJoints
  • New skinning call

Next Pass

  • Add brow slide setup
  • Add way to create that slide surface. maybe share with other bits (thinking Morphy kid nose)



This was the furthest along block and so has the least amount of stuff needed done to it. The main thing is I’m not thrilled with the form still. The question is do I work on is this pass or next. Took a look at some ref and think this is a better overall plan for layout to get more form for humanesce characters.


  • Define
    • Proximity controls
  • Form
    • Proximity controls
    • Restructure lofts and curves

Pass 1

  • Added a lot more handles to better frame things
  • Retooled setup for newer techniques from latest update
  • Starting to plan for non-human faces

Pass 2

Working through the beak/canine bits

  • Add corner up/lwr
  • SmileLine – remove cheekbone as a target
  • Lip cross upr – Change nostril to nostril base for added target
  • Remove lipToChin?

Pass 3

  • Figure out which surfaces we need
  • Staring with the jaw. First do it by hand to see how many curves we need and what data points we need
    • Handles
      • Left/Right
        • cheek_0_mid_1/2
        • cheek_1_mid 1/2
    •  Curves
      • Left/Right
        • cheek 0-3
        • chin 0,1
      • Center
        • chin

  • Building okay
  • Data processing was difficult to work through
  • For lofts, going to nurbs, then rebuilding  provides the most stability rather than poly conversion

This post is getting too long. splitting to new post…

Attatch to Surface With Driver

To do what I want with eye I need a more standardized way to attach things to a surface. To do this I need:

  • Surface to attach to
  • Object to drive (I’ll use the attach to surface setup just add the driver)


  • Need the transversal surface to not be with the pole at the front where the iris is for best use. It flips. To avoid extra setup, we’ll have a differently oriented surface for the ball.
  • This is implemented on the iris and contact handles for eye block

Just working with nurbs for now.

Bokser Gig


  • Single joint setup was messed up from the workshop update. Fixed

Project X

  • LIMB, SEGMENT, HEAD – bugs from define handle work for facial stuff
  • LIMB –
    • Form | reworked the aim to be more stable for folded limbs. Main handles are now the up targets for their subs
    • Some edge cases still get the joint orients flipped. Just fix via cgmJointTools till fixed. Just watched for crab like legs.
    • Same for the rp twist fix on frame call. It flipped depending on setup
    • Proxy cast is off on
    • End orientation not matching orient helper didn’t feel intuitive. For now, it will exactly match it
    • May need a new flag for primary proxy cast axis
  • General
    • Reworked rp pos to just use the newer up vector call
  • IK
    • handle | now sets preferred angle on call due to bug with extreme folded chains flipping
  • WING
    • Initial temp setup






This has been a hard concept to iterate through. It keeps coming back up as not quite working how I want.

  • The baseSize for a profile should be in the baseDat and not just set via value

Change Log


  • Marking menu
    • Changed reset call to use channels when selected
  • Benn
    • Patcher wigging out. See if that fix for Christine messed that up.


  • master_tdSet | Implemented to simplify outliner with a single master object set
  • Block deletion | noTrans define nulls weren’t being found. Should be working now


  • Change to naming. Neck handles will not have an iterator if there is only one handle anymore. Prerig rebuild necessary for this to happen.


  • NEW – SDK dags
  • NEW – Space pivot support
  • Bugs


  • Proxy mesh gen – change over to new system
  • Attr Mask implemented


  • BUG | Fix for nub not building as expected for a Bokser project
  • BUG | Fix for lever shape not using the loft shape variant



  • New loft curves
    • loftCircleHalfUp/Down/Pos/Neg | will see about adding to loft setup. Mainly wanted for eye lid control shapes for now

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.