Here are some thoughts on some blendshape workflows that may be helpful that i'm developing on my original character Swift.
artistic take aways
-- what happens to volume change in cheek when see shape
-- how far do the lip corners move relative to the default pose
-- how far does the lip move up/dn in shape we want to create
(note: i found it helpful to sketch out some face shapes with very simple doodles to get an idea of volume change and lip corner/ brow corner movements… i like drawing a single face and then using arrows to show how far point moved from default to target pose)
technical take aways
-- export base mesh and 1 target shape to work on (here i worked on smile for an 1 hr... this allowed me to focus on this area of face rigging and not get distracted by other parts of the face rig)
-- using Mayas sculpting tools to tweak shape such as (lattices for moving regions smoothly, using 'ctrl' to deselect unwanted vertices,
using 'cluster' to move a group of view vertices, using 'polygon smooth tool' to fix overlapping edges
-- writing tools to help make blendshape sculpting process easier
-----like it would be nice to write a hot key that will set a ket at 0 and key at 1 at start and end frame of current timeline for selected blendshape and set keys at zero for all other blendshapes..
-----today i wrote one tool to quickly preview a quicktime .. (just change the dir = '/Users/noa/Desktop/' in function to a directory that you want your preview quicktimes to go in)
######## import maya.cmds as cmds def na_quickPreview ( f = '_1', dir = '/Users/noa/Desktop/' ): filePath = dir+f cmds.playblast( format = 'movie', filename = filePath, clearCache = 1, viewer = 0, showOrnaments = 1, fp = 4, percent = 100, compression = 'none') ###get user file name text = ' ' result = cmds.promptDialog( title = "Preview Movie", message = "Enter File:", button = ["OK", "Cancel"], defaultButton = "OK", cancelButton = "Cancel", dismissString = "Cancel") if ( result == "OK"): text = cmds.promptDialog( query = True, text = True) print('na_quickPreview ( f = \'_1\', dir = \'/Users/noa/Desktop/\' )') na_quickPreview ( f = text, dir = '/Users/noa/Desktop/' ) ###
Hope this was helpful,
cheers,
-Nate
Inspired by Mark Simon's Facial Expressions A Visual Reference for Artists
Inspired by Jason Osipa's Stop Staring: Facial Modeling and Animation Done Right