Prepping Drake for Alpha Release

Current Focus
- mDrake – Prepping for Full Release
- Facial Module iteration
- Branch – features/faceModules
mDrake
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
Full Alpha Asset Build
mDrake_unityMed_template_v06_toBuild_03
We made notes along the way of working through our last build so we have our final notes for this one.
To fix…
- All controls aren’t being grabbed for mirror flipping
- Some controls not getting grabbed by ui
- Master look
- lids
- Radius attr not getting hidden on
- Lids
- Brow controls
Move shapes out a little
- Muzzle
Lips – orient handle more vertically rather than along the surfaceLips – even up the handlesTry bigger mouth move orb
- Body – add a blendshape bridge for testing tweaks.
- Geo –
The normals on that ring of bridge faces need to be setFix the lip geo uvs you hosed Josh
Working through it…
Build body
Limbs breaking….sigh. Must have broke something this week. Will step through…
- Breaking at rig_frame
- It was my attribute_utils work this week.
- I’d run into a bug and I converted my has_attr check to attributeQuery rather than objExists which is was not a great initial use but actually works better in some edge cases.
- I have a function called get_positionPlug which checks a node for a series of plugs. attributeQuery fails because it only checks the dag and you’d need to check every shape whereas objExists works. That or maybe I’ve just been very lucky a long time….
- It was my attribute_utils work this week.
- Proxy Geo
- My caps are flipped. Thinking when I was doing work on Rael I changed some of the reversing there. Not a big deal but should address.
Face
- Lid
- Not getting mirror indexed – this was a bit of a bugger
- Missed the lid handle on the first pass
- Data_buffer –
- store the lid
- faceSet
- moduleSet
- Rig_skeleton –
- Check wiring
- Rig_controls
- Register to module
- Not getting mirror indexed – this was a bit of a bugger
- Getting face mirroring working
- module_utils.controls_getDat
- Need to resolve controls not in a message list.
- controlTag
- cgmControlDat – jsonDict – just to make it easy
- Need to refactor but for now:
- mHandle.addAttr(‘cgmControlDat’,”,’string’)
- mHandle.cgmControlDat = {‘tags’:[‘ik’]}
- Added a new face section we need to hook up to the ui…making a note
- module_utils.controls_getDat
- mrsAnimate
- Modified how the primeAxis was resolving. Previously I’d used the setting off of the module however with face controls having left/right/centre in both I’m trying just using the first object selected
- If that failes I use from the module
- Modified how the primeAxis was resolving. Previously I’d used the setting off of the module however with face controls having left/right/centre in both I’m trying just using the first object selected
Geo
Get base skinning working
FaceBodyFocus on hands
ShirtPants
With that working, look at what I have time to look at before I have to get this up on the site for
- Losing holster for this build –
- We haven’t decided on gun setup and it’ll just be odd for everyone to have it without the gun when testing.
- Fist – I’m a stickler on decent hand posability
- Skinning pass
- Blendshape tweak while posing
- New base pose
- Pushing back to base
- Teeth
- Rough teeth in
- Arm – rotating down by default is a little odd. Going to change the base setup to make it feel better
- Pushing back to base
- Had a second thought on the holster till we figure out how we wanna do the pistol for unity stuff. So did a temp shirt texture as the other one had some shadows baked in.
Finishing Up
There were a few tweaks I wanted to make while I was working through final prep and some posing. I made the changes by blendshape and translating some controls I want to be the new ‘base’.
Doing the positional changes are easier with the rig mirroring as I can:
- Put things where I think they’ll work, lock those attributes and try getting to good poses without translation
- Then mirroring those changes back to the other side
So, I need to get those changes back to my base. Let’s do it.
- First I’m going to export by skin data replacing my old files with my skinDat calls.
- Then I’m going to dup my body changes mesh and verify the symmetry before moving forward to make sure I didn’t muck something up.
- Cull out the double geo under the shirt on the body
mVariants/mDrake/mDrake_mesh_v06.mb
Next we need to get our template lined up with these changes.
- Open up our template file
- Reference in our new mesh
- Take a look at what we have to fix
- Group our hand blocks for easy moving and get them close
- Paying close attention to the pivots on the finger joints
- Move the arm handles, making sure to re-snap the rp plane
- Push the template changes to the other side
- Rebuild arms and fingers skeletons
- Push the blocks to rig state. Go get a coffee as it takes a bit.
Sweet, we have our rig, not we need to get our mesh in our file and everything skinned up.
- After done, run our post processes.
- Connect the rig to the bind skeleton
- I’ve got that proxy bug I need to resolve
Flipped the vector…
Now to skinning…first we need our mesh
- First clear out our references
- Then clean out unused nodes in the hypershade
- Note to self – HAVING THE HYPERSHADE OPENS SLOWS EVERYTHING DOWN. Close it please.
- Start with the face to make sure everything is working
- A few skinning tweaks
- Changed the shirt tint a little and changed the logo on the back
Final Prep
- Setup new project
- Fix texture paths
- Make a pose for post
Final
Rig pagecgmRigs PostThis postFacebook plugs
Revisiting skinDat
Back during Morpheus 2’s development I wrote a skinDat format to transfer skinning data between rigs. I’m going to see if it works. The benefit originally of this system was that I could use it irrespective of the Morpheus mesh moving things around because it could work just off vert id. We’re going to try to make use of that.
Doesn’t help I’ve not looked at the module in like a year plus…
Okay. so we’ll save off the good skinning data files and come back to it in a bit.
import cgm.core.lib.skinDat as SKINDAT reload(SKINDAT) SKINDAT.data().write()#...save off a weight file based on selection _dat = SKINDAT.data()#...initialize a skinDat object off selection _dat.read()#...initialze a skinDat object off file prompt _dat = SKINDAT.data(sourceMesh='Body_Full_rework')#...initialize off arg _dat.report()#...report obj data - NOTE there's a LOT of data. _dat.write()#...write data to file SKINDAT.data().write()#...write data to file from selection
…I’ll come back in a bit and test bringing it back in
It’s a bit finicky but with a ui and some work down the road I think it might be worth coming back to this.
In the end I was able to just load the config on a mesh in scene without manually skinning anything.
import cgm.core.lib.skinDat as SKINDAT reload(SKINDAT) mSkin = SKINDAT.data() mSkin.read() mSkin.validateTargetMesh() mSkin.applySkin(influenceMode = 'config', nameMatch = True)
The config influence mode assumes not having a skin cluster on a target mesh or an exact match for influences.
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
- SEGMENT
- Reverseable spine would be great for flying/swimming stuff
- EYELID
- 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
- Template
- 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
- MUZZLE
- 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
- Add
- HEAD
- Aim head
subs blocks aren’t attaching to the aim head- Head aim not driving twist
- Aim head
- mrsAnimate
- Make use of the face control filtering in the ui