Since this is a first version... and it won't have a ton of bells and whistles I am looking at a fairly modest price in the 25-50 dollar range. I have not completely settled on that yet.
I really want to get this rig done so I can start pumping out more characters so I might not go into as much detail on applying the rig to your own characters in the first version.
I will provide that info but I had originally planned to specifically make it easier to set up. I have enough work to do just getting this first version ready to go. I might do another version later with more detailed instructions at a slightly higher price (I have to eat!)
After this first guy is done I plan to do some additional clothing styles. This would be a cool way to be able to provide additional add ons. Buy a new set of clothes! Buy some props or a set of hand switches... etc.
At this time there won't be a full profile version as I had hoped. Maybe that will come later.
--------------
99% of the motion is based on bone constraints.
However, there is one very small and simple layer script that was "hacked" together from several scripts that Rasheed wrote just for me! I love that guy.
The script does two things:
Translates a child bone's absolute position based on it's parents rotation.
Translates a bone's
rotation from another bone's
translation.
In the first example I needed the eyes to ever so slightly rotate around the head. This is done using a chain of 3 bones that... uh... well it's a bunch of math and 3D stuff Genete knows about.
So when a bone is "moved" because the parent rotates it to a new spot... I get that absolute position of the bone (well... just the X axis translation really). AS can't get that value for a constraint on its own.
The second part of the script allows the head rotation bone to drive the rotation of that "3d" bone using translation. So translating that head bone not only moves other bones with constraints it also causes another bone to rotate.
This part was a cheat actually. I didn't bother trying to find vectors of angles and pointy directions... I just took the X value of the translated bone and tweaked the number till it worked and used it as a rotation value for another bone. I only needed a small amount of X translation. I don't use any 3D conversions for Y rotation at all.
The only part of the face that uses any pseudo 3D motion are the eyes. Everything else is just plain old translation constraints from a master bone (I may apply a bit of 3D motion to the nose... but maybe not. I think it's working okay now).
EDIT: The ears are the most difficult part. Think of them like an umbrella folding and unfolding. A series of bones that collapse based on a bones translation. I drew the ears open and closed on a separate layer. Bones were positioned on the open ear. Then I tweaked constraint values on each ear bone so it closed to the correct position. It works!
The beauty part is... any ear drawn to fit those bones will pretty much work. I don't have to reinvent the wheel each time.
------------
Originally the script was HUGE... since I know exactly the bone IDs involved (there's only about 4 bones) I hard coded them in the lua script and took out all the looping crud used to find a specific bone by name.
This is a kick arse way to code let me say! I plan to do this more. It saves a ton of time. Instead of all those variables and lists blah blah... just tell the stupid bone to do something already. It's like sending a note to a whole series of people down a chain to tell someone to tell someone to do something. Instead I just call the idiot on the phone directly and tell him to do his dang job already!
(This of course means I have to change those IDs if I delete any bones "behind" those bones... so... I have to watch out for that.)
I had to create a custom bone selection tool that reveals the internal ID of the selected bone. It is sooooo easy. I click the bone... there's the ID... pop it into the script.
In a future version I hope to expand this concept by 1000% so I can REALLY cut down on the number of bones. I could use this trick for the mouth which is a real pain in the but. Tons of bones for the mouth due to the rotation. For now I'm staying with what I've got.
If efrontier could add a "slider" or "knob" to the pop up window scripting interface, my dream would be to have a floating window that can control all the facial poses. I've gotten quite proficient with that part of AS scripting but realize it has limitations.
-vern