Artist friendly work flow for easily editable skin deformations for rigging, shot sculpting and facial animation (that can work on top of a skinCluster)
If the appearance and movement of the outer surface is the main concern, and accurate volume preservation is too processor intensive and problematic to art direct then why bother modeling muscle volumes at all? What is needed is a technique to fine tune skin deformations as fast and accurately as possible giving maximum feedback for quick iterative adjustment. A technique to interact with a surface directly and interactively. If only interested in the surface, you can skip a step, the volume modelling, and go straight to rigging the muscle fibers near the skin surface. Can swap geo and/or topology when required. No weight painting (volume based falloff).
1. skin cluster curve: create joints and align up vector to world with smooth weights at selected CV positions
2. make wire deformer
3. make twist locators
4. connect twist values to joint transforms (with realOri.mel)
RealOri.mel will try to maintain a consistant twisting vector but as a prototype, there are some cases when it will fail. If playing animation from start still gives a flipping result then realOri constrained transforms can be baked (expressions must then be edited to remove xform commands) OR at a pinch there is the manual twist on each influence transform that can be animated
WHY CAN'T A FALLOFF LOCATORS (WORLD SPACE) TWIST VALUE BE DRIVEN BY A TRANSFORM MATRIX BY DEFAULT?
That's a question for
select curve CVs and target geo (in outliner or hypergraph)
- The argument $falloffnum = the number of falloff locators that will be added in between each CV transform
- Adjust the falloff locators drop off with the manipulator or multi select and use channel box.
- To select falloff locators make sure question mark mask is on (manip hotkey: t)
- Use multSkinWt.mel and component editor to adjust curve skin weights
- To reposition bind curve, connect base wire to wire curve with togl shelf button
- Curves can have dynamics applied to them with soft bodies or hair system
- By rigging the base curve in a similar way to the wire curve additive effects on top of a skin cluster can be acheived
- Using extracted surface curves as wires can approximate volume but the twist vectors must also be attached to the surface (using surface/normal constraints)
-RealOri is an expression that uses mel commands rather than direct connections therefore name spaces must be used when importing files which may include clashing object names
- To do: add a global scale script - adds a scale multiplier to all wire falloff attrs (and falloff locators) from selected channel box driver attribute (or argument)
dmo - builds a demo setup in a new scene
buld - select curve CVs that you want to attach and the geo you want to deform
add - select deformed geo then the geo you want to add
togl - connects the base wire bind curve to the wire curve, press again to detach. Usefull for moving the bind state with the skin influence transforms
Bvis - selected wire curves base wire visibilty
blnd - creates a blend shape from current curve shape, intended to aid the setup of basewire poses for skin sliding to be driven by set driven keys
mltU - select influence/s then geo, will multiply weights for select influence/s then (post normalise)
mltD - select influence/s then geo, will divide weights for select influence/s then (post normalise)
I'm keen to hear feedback on ways to improve this script or to create other implementations.