Drake, report for Release…

Current Focus

  • mDrake – Prepping for Full Release. Up very soon.


This push is about getting mDrake ready for public release. We have a number of items to work through.

  • First full alpha asset
  • Beta
  • Full Release
    • Pistol Rig
    • Final Single Mesh

Beta Asset Build

We made notes along the way of working through our last build so we have our final notes for this one.

Punch List…

  • Geo
    • Mouth
      • Lip Corners – Stars. Clean up meet up.
    • Teeth
      • Finalize
  • Textures
    • Seams – lip/neck seam showing up
    • Shaders
      • Clean up material names
  • Rig
    • IK ankle orientation is odd. Check template. Then build process
    • EYE
      • Eye main needs to get the chest/pelvis in the dynParent get- check
  • Pistol
    • Unity focus – we’ll do a full pistol rig for higher tier
    • Single joint setup
    • Geo parented to joint for future optioning
    • dynParent setup
    • Snap transforms at hands/ holsters
  • UI
    • Face filtering
    • Master not finding puppet in context
  • Setup
    • export_tdSet –  just be the geo and the root of the skeleton

Working through it…


I’m going to start with the teeth because I need them sized well to do the cheek fixes and I want to get that stuff resolved before moving to the lip issues.

Mouth Bag:

  • Dup off the base mesh
  • Plug it back to the head as a blendshape
  • Tweak the bag via this while posing the face a seeing how it plays with the teeth and an open mouth


  • Grab latest teeth from our modeler
  • Add a lattice to our teeth to shape them a bit with the mouth tweaks we’re doing. I like to keep my lattice counts manageable but you can always try more points for more control.
  • When we’re good I’ll probably do a simpler version of the teeth for unity based on the ‘final’ look

I wanna take a stab at some unifed teeth that are better than the alpha. So using the full teeth I take our alpha teeth and start adding a bit more geo.

I’ll tweak em a bit and uv them when I get to the uv work.

Mouth Fixes

So we have some lip fixes we need to address. There are some stars in the corners I want to address. Why bother if things look okay? Because we want to start experimenting with customization and want good vert layouts. Good geo layout affords more Morphy-ness.

  • Make a plan
  • Dup off our full upr body mesh so we don’t have to reconnect our culled out torso geo
  • Match our mouth bag fixes to have a new base to work from
  • Make a pass on fixes – which is difficult as lip geo is on top of itself
  • Take a look and make new notes
  • Iterate some more and get something a bit closer
  • This is better but I’m gona slide some of those lower lip loops so they’re not so tight

Pretty good. Note – this count is too high for unity and I’ll cull out some for that final asset but want a good base for the higher version down the road.

Before finalizing this base I need to check a few items.

  • Add any definition I want to pass back to Dan for higher res mesh work

Here’s our final unified teeth.


We done mucked up our uvs from our finagling so we can get back to normal by:

  • Copying the uvs of our mesh we started with
  • Re-merge and split the uv’s as we want them
  • Use relax/pinning to get the uv’s laid out how we want

After we have a base pass there we look at things and make some notes.

There’s some artifacts and seams we need to address as well as uv our new teeth. So we’re tackle that before moving to textures.

Paint some textures and resolve what we can. Some will need to be done by Dan who can do texture seams easier

Ah shaders…what a mess. Not my thing but trying to set them up properly.

Shader setup we’re using:

  • Color – base color value
  • Ambient – AO
  • Diffuse – Roughness
  • SpecColor- spec
  • eccent- Trying map on face
  • specRolloff – .5

The eyeglass feel needs extra channels of textures to get that feel. Or should we do the LBS fixed highlight feel?

Trying to figure out this seam I’m seeing…

  • Think it’s a color variance in some of my maps so I’m going to test that by creating new shaders and adding my channels back one at a time
  • With just color channels it goes away so it must be one of our maps

Oddly enough, simply rewiring our shader channels seems to resolved the seam.

Go go maya.

Unifying Our Geo

For unity we need our geo to be unified. First we check our face count with what we have before merging to get a ball park. Looks like I’m starting at 23,145k which is fine for unity.

That’s fine.

So we need to unify it.

Here’s where we’re starting after cleaning up our geo.

Let’s dig in.

  • Move through the base stuff simply combining and deleting history.
  • The arms we need to cull out again
  • Do some geo culling and more combining and we’re going to have 4 meshes for release:
    • mDrake
    • Hair_faux – to start playing with customization
    • holster – again, to play with options
    • glock – cause he’s packing


We need a handle for our pistol so I’m going to use a single joint limb just like my holster.

Roughly framing our template over the pistol for proxy purposes.

Looping back after we have things almost done. Working on placement to add our helpers.

For the helpers.

  • Null from the control.
  • Dup the pistol in and parent to that null
  • Move that null to the position at the holste and hand where we want our match to targets
  • Add those nulls as dynParent targets for the pistol
  • Parent those nulls to the hand and holster joints for unity
  • Select the match targets after parenting and zero them out (this should still match because we matched our original nulls.
  • Now when we zero the control after switching to that space, they’ll match our match targets

Ankle IK

Bokser mentioned the ik ankle was looking off so we’re gonna take a look. So with the last build, the world ik zero setup seems to be off.

When I zero, I get something like this…

Yup, that’s off.

While we’re checking, check the wrist as well.

It seems fine. So, let’s look at what’s going on with the ankle.

  • Looking at the prerig handle, it’s angled a bit
  • So we’re going to rotate it exactly with that plane for the next build

Trying a new workflow for this pass:

  • Locinate (yes it’s a verb) that control and put on the ground plane
  • Scale it up so we can see where it crosses the foot.
  • Rotate it to align with the foot
  • Snap the prerig handle to that handle
  • Push the to the mirrored leg

We’ll see if the build with this is better. If not we’ll check the code.

Built well. All good.


  • Head not building
    • The cgmName was going to a message connection. Added a check to get that value if necessary. However, the head shouldn’t been connected as that
    • Proxy mesh not building
      • Ran into an long simmering bug from a bad decision early on. I have a call called store_info that has always defaulted to if an obj exists and the attr type is none would do a message. Sometimes however, you just want a string stored and not assuming to be a message. Plus I have a general purpose set_message call that I should have been using or just flagging. Regardless, not defaulting that way anymore. Also, doing an objExists check every time this was calling was a waste of cycles
      • On doStore – added an mNode check instead of the auto message
  • Eye master
    • Wasn’t getting on dynParent items
      • My dynParent data search wasn’t picking up all moduleParents, only the immediate moduleParent
        • Added search to get all moduleParents
        • By default during data gather, modules will check all parent modules
    • Wasn’t getting picked up by mrsAnimate
      • Add wiring to the head as a RigNull and the puppet
  • Verify ankle fix works
  • Master control not getting tagged to be found with mrsAnimate
    • Added a check for master controls
    • Settings flipping still bugging
      • Added a check for uiCB_contextSetValue to warn when it fails rather than throw Exception
  • Muzzle not building
    • Not finding settings…

We combined our mesh and this creates some issues in how we get our skinning data back. How do we tackle that?

  • We’re going to start by skinning our unified mesh to our last setup and see if we can get that going
  • Then bring that skinning back

Nice, so what tools do we have to do that? Fiddle around with maya, ngSkin and then ping some buddies. Hat tip to Brad Clark of Rigging Dojo for this one.

  • Combine our mesh with merge skinclusters on, then copy the weighting to our unified
  • Use skinDat to export weights
  • Bring weights back on in our new file

So we have some polishing to do because everything didn’t transfer perfectly since we moved some verts and vert IDs got all messed up.  No worries.

We’ll work through our final checks.

  • Legs
  • Spine
  • Arms
  • Fingers
  • Neck
  • Face
  • Holster
  • Hair


  • Spine joints didn’t get skn_Jnt suffix, check

Drake looking close to ready to roll….

Rig will be up soon!


Played around a little with facial blendshapes. We’re going to have to iterate on how to handle customization for it. But it’s fun to fiddle:)


Bokser wants this for the unity export. A simple selection set of our bind joints and the geo.

  • Joints is simple as we already have a method to get this in the form of cgm.core.mrs.get_joints
  • The geo is more problematic, the simplest solution would be to simple grab the geo in the geo group. However for some unity stuff we want parented geo sometimes. So….

We begin with…

mc.ls(type='mesh',visible = True, long=True)

This gets us all geo shapes that are visible in long name form. However it gets all the shapes. This adds a lot of duplication.

So we grab our dags to a new list, remove duplicates.

Better but not quite. I’m still getting some of my rig stuff. So we add a check that if that dag has a maya attribute ‘mClass’ of ‘cgmControl’ we ignore it.

That gets us our final list for this pass on it till we test further.

Visible shapes: 126 | dags: 90 | res: 20

Added this to the cgm.core.mrs.puppet_utils.qss_verify call.

To Come back to…

  • Optimization
    • rigNode connection is pretty slow. Look at way to fix that
  • Face
    • Resolve better breakdown of setting attributes so we can cull down number of gears
  • LIMB – end twist skin joint. Look at an option to have a twist only wrist
    • Reverseable spine would be great for flying/swimming stuff
    • Template
      • Flesh out lids more for better proxy
      • Figure out how to to iris/pupil setup and proxy
      • Roll in new methods from brow/muzzle
      • Add a span specification to the lid curves
      • Try cluster setup
      • Add pulling the new data back to the define handles when deleting template
    • Add full lid setup
    • Master eye
      • Do a better dynParent setup. Did a patch fix for drake build. eyeLook_verify
  • BROW
    • Roll in latest curve/surface stuff from lip setup
    • Do offset for joint depth and same proxy setup as muzzle or parent the brow curves so they track
    • Add
      • Snout setup
      • Tongue
      • Teeth
      • Lip/nose variants
    • Look at possible other template setups – maybe a simpler one or other variable method
    • Prerig
      • look into splitting joint handle numbers
      • Check other control counts
    • Joint
      • Add support for split joints
  • HEAD
    • Aim head
      • subs blocks aren’t attaching to the aim head
      • Head aim not driving twist
  • mrsAnimate
    • Make use of the face control filtering in the ui
    • When you go from rig to skeleton and you have geo. Make a workflow to export the skin data and be able to bring it back after skeleton is rebuilt
    • Range of motion
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.