I had a great session last evening working with the brand new Joystick CHOP I had constructed. I was able to accomplish three major things:
- First, I was able to build a simple rigged model and attached animation CHOPs to it. Simplistic, but a good milestone;
- Second, I was able to improve on my rendering capabilities, using VEX and SHOPs to create some interesting materials for my model;
- Third, I was able to use the Joystick CHOP to record real-time performance animation - which was my real goal when I started this Joystick project.
My puppet model was fairly simple. The goal was to build a muppet-like creature with spheres and half-spheres, and some other simple geometry and texture maps to create something reasonably interesting. For the purposes of the puppetry rig, I wanted something that had the following features:
- Eyes that could blink
- Eyebrows that could look angry or worried
- A mouth that opened and closed
- Rotate, or shake, the head back and forth
- Nod the head fowards and tilt it backwards
- Tilt the head from side to side
I had a Logitech Extreme 3D Pro Joystick to work with, which provided a number of buttons and joystick axes to play with:
The joystick has the traditional X- and Y- axis, which I mapped to tilting the head backwards, forwards and from side-to-side. The joystick also has the ability to "twist" by turning the handle, so I mapped that to turning the head from side to side. There was a throttle axes on the rear of the device, which I attached to the eyebrows: full throttle was "angry eyes", and no throttle was "worried eyes". Finally, I attached the mouth opening and closing to trigger button (pressing the trigger opened the mouth), and a button near my thumb on the joystick handle mapped to closing (blinking) the eyes. For the mouth and blinking, the effect was binary - so they were either opened or closed.
The model took a while to construct (a couple of hours), even though it was fairly simple. It looks pretty "muppet"-like:
I created the various Joystick CHOP inputs and networked them together with a Merge:
In this snapshot of the CHOP network, you can see I have the Record data locked (the little yellow square): I had already recorded my performance, and flipped that flag on to preserve the motion I had created. I also piped the output through a Lag CHOP, which created nice "ease in/out" motions for the otherwise pretty binary and jittery buttons and joystick axes. The net effect of the Lag CHOP on the motion data is pretty natural and pleasing, I think.
Here are some snapshots of frames from the animation:

Comments