In today’s post i will about parts of my work on feature film animation Mune and Ballerina.
During those projects my position was related to character rigging and TD.
It was really a rich experience being able to interact with talented peoples from other department like character Fx and simulation.
On Mune the unique nature and artistic style of the characters was raising problem across the production. To achieve the look above on Sohone ( the bulky yellow sun guardian) Look Dev department needed 20000 hair guides ( keep in mind we where in 2013 on linux with maya and the guerilla renderer).
The simulation time and rig complexity was simply above was we were able to afford.
Especially with the moon temple where 50 moon spiders, sohone and Mune will met and interact. This challenge is what inspired me and enable me to present a prototype which was deployed in production: the pathFromPolysoup node.
Hair from an artitistic point of view:
Like any art subject we tend to identify pattern and structuration on the element we study .
No matter the style on the Mohawk above we can see triangular clumps larger at the base and gradually getting closer at the tip.
Same with this cartoon female concept: broad mass describe the the flow of follicles and imprint rhythm to the overall composition.
Maya nHair implementation:
In maya and canonical hairsystem an array of hair guides are attached to scalp object
The final dynamic hair strands are interpolated between them.
With the image above we can see that a curve shape can be attached either to a nurbs surface or a polygonal mesh and each guide will create 6 dependency nodes.
Maintenance and evaluation of dozen of thousand of guide will seriously impact scene size and performance.
Enter the gungeon:
My idea in this case was really simple and came from one observation:
Why do we need to manage so many elements?
How about merging them?
If you use Yeti you can preview your hair and think all of them are merged together. Unfortunately they are simply sharing the same parent.
My achievement was to step further a way from the problem and get an original angle from it.
Above we can see how by extracting the curve points we can build and structure the same information into an hairSlice: a simple mesh face replicating the curve Hull.
The first part of the scene optimization problem was solved:
- HairSlices could now be merged into logical unit and deformed efficiently.
- It was time to think of a way to uncompile mesh faces into haircurves.
My prototype was first build in python in a couple hour
A mesh where several hairSlices were merged was labelled a polySoup.
It will be the only input of the pathFromPolySOup node which output curve data ( you can visualize them with a nurbsCurve shape but the output attribute can be directly connected to your HairSystem shape).
Thats it for today, in the coming week i will speak more about the utility nodes and deformers that bind this system together in a production environment. I hope it was informative and spawn new ideas with other people.