Here's the current facial setup...
Trying to keep things simple...:)
Not quite ready to release an open facial rig beta but been deep in the depths of nodes trying to make things work well.
So back to hacking things. There's a really sweet script called jsFacialWin (which no one seems to have up currently that I can find for download - it was written by Judd Simantov @ www.cgmuscle.com and looks to be working on his website at present).
It's a great way to quickly created joystick controls and connect them to blendShapes or attributes driving poses via pretty elegant nodal trees rather than by expressions (which I frankly find to be a pain to edit and deal with)
Well, what does one do when you want to use this handy dandy connector but don't want to use the joysticks it makes? Great question and one I asked myself last night so I dug in to see what it's actually doing and found an pretty easy way to high-jack it.
The first step is to identify what the controls it make are. Their hierarchy is as follows:
- Transform (group) - this moves the control around and give it it's basis for 0 to one values on all axis
- Control - this is what the animator moves to drive...whatever
Easy enough, all my controls had already been set up that way so by looking at the code and errors it threw when trying to load my control as a driver it became clear how things were working. The key is as follows.
- Name must end with "Grp" - I had been using "_grp" so a simple name change was easy enough
- Add a string attribute called "type"
- Look at the jsFacialWin and see which type matches what you want - In my case, my value was "C"
- Should be a 0 to 1, -1 to 0 type control.
- Name must end with "CircleCtrl"
- Add a string attribute called "name"
- Input the name of your control without the "CircleCtrl" in the field
You should now be able to select your control, hit the "update" button in the jsFacialWin and it should toggle to your control type. Load up your blendshapes or attributes on the right and connect away.
Now, with that problem solved, it was a simple matter of connecting most of my blendShapes. However I had another problem with my wide shape which I wanted to have very specific values at certain points.
Man this made by brain hurt trying to figure out. I'm sure better riggers out there would have been able to solve it quickly enough (and probably more efficiently), but this seemed to work okay.
See, nice and easy:)
Time to go return the favor and test a new contraint that Scott wrote and after that it's time to revisit the eye rig with the feedback I got.