Over the last few months, we've been hearing muffled Gallic curses emanating from the cupboard under the stairs. Tempted though we were to investigate, we decided to ignore them, and see what happened. Many times we'd arrive at work to find a trail of baguette crumbs and bottles of Stella Artois strewn across the lobby.
Then one day, we found a large pile of meshes and textures, along with a handwritten note written in a language none of us understands, and a conspicuous hole where the engineers ought to have been. We tried to act unconcerned, and waited patiently to see what would happen. Three weeks later, we found them gibbering at the back of the garage, babbling strangely about renderers and fresnel highlights, and no longer able to tell the difference between a real human being and a computer-generated avatar. "We... have... created.... Woman!" they croaked.
And they had.
It's been a mammoth task. The "quick fixes" we tried last year made some improvements, but they weren't enough to take us to where we want to be.
After lots of discussion we decided to stick with the existing skeleton, largely because rebuilding that would have involved rebuilding all our animations, and that was just too terrifying to contemplate. We then created several new base head meshes, one each for Asian, African and European ethnic types, and then created old and young faces for each one. We then had to check the neck seams to make sure that all the new heads would fit onto the existing costumes and bodies correctly, and that the skin colour on the body would match the skin on the faces. And then we created a bunch of different makeups for each face.
The next job was to redo the hair so that all the hairpieces fitted onto the new heads. We decided to rethink the entire head construction, so that we would be able to make all the hats go with all the hairstyles, which would give us much more variety and flexibility. This meant completely rebuilding all the hairpieces, and made the job considerably larger than we originally intended. But it was worth it.
At this point, it was over to the programmers to build the new heads in. However, although they looked better in 3Ds Max, they still weren't looking right once we got them on set. They looked flat and lifeless. The solution to this involved building a new renderer so that we could get the right level of shininess onto the eyes and onto the tops of the heads and eyebrow ridges. The team came up with several new shaders, which really made a difference, but at a significant cost in framerate. At this point, the models went back to the artists, so they could add in more shine and texture and make use of the new shading, while the engineers worked out how to speed everything up so it ran as fast as before but looked better. And, of course, it had to look good with and without the cel shader.
And that's roughly what you see now. But there's more yet to come. We're working on the hair to make it smoother and more translucent. This has involved going back to the hair again and working out whether to use scissor blend or alpha blend for each hair type, and writing yet more bits of rendering code to handle that. The hair is now pretty well working - expect some more screenshots later this week.
We've got some basic morphing tools in development, and now we can give our characters bigger or smaller noses. The challenge is to make that compatible with the animations and props such as glasses: if we know the size of a character's nose, it's easy to make her touch the end of her nose, or kiss without digging her nose into her man's cheek. Once the nose size changes, all the pre-canned animations could go wrong, and we could have horrible intersections or misses. Apply the same logic to the size of the cheek, the jaw, the eyebrows, or the shape of the skull, and you have a whole bunch of pain.
Developing the faces really shows the way that this type of product development is a symbiosis between design, art, and programming. Obviously, great art doesn't get you far unless the code is there to make it look good, and no matter how good your engine is, the quality of your art is critical. And most importantly, at the end of the day, our faces have to look good in movies, under different lighting conditions, while talking or looking around, and in close-up. They're not game characters, they're animated 3D movie actors, and this has meant finding a new way to make them versatile, appealing and interesting.
So yeah, it's taken a while, but it's been worth the wait.
(More screenshots in the Moviestorm forums - restricted to early beta testers only.)