Saturday, March 16, 2013

Shape keys vs Blendshapes

This semester my optional module is facial modelling and animation. This is yet another animation module in Bradford University that makes the student create an entire pipeline before animating anything. So there you see why there is so much modelling and rigging stuff on this blog and so little actual animation. None of the modules really allow me to focus only on animation and it usually happens in the last weeks of the assignments :)
With that grudge aside, I decided that such a module would be a good opportunity to refresh my facial rigging skills before getting on with that part of Soda Trip's production. Gotta make some lemonade.

So why pick blender to make the blendshapes and go through the hassle of exporting to maya again?
The character was modelled in blender, so it made sense to continue using the nice modelling tools.

Well, they are called shape keys in blender. Instead of duplicating a mesh, deforming it and applying that as a blendshape, blender stores the keyable deformations you make on a single mesh inside a shape key data block of that mesh - it stores the new coordinates of vertices you moved while being in the specified shape key mode.

Shape keys in Blender vs Blendshapes in Maya:
Blender allows me to change the topology after I have already made   multiple shape keys on the mesh . It's like changing topology in maya after having made multiple blendshapes.
Whats nice about it is that I can use this new topology to shape my character on some of the already created shape keys.

Maya does not allow you to alter the topology of a blend shape object- if you add an edgeloop, it will not affect the target object or might break the blendshape (you cannot reaply it any more).
You can change topology of the target (base) object, but that new topology is not being transfered to all the blendshapes you have - again, you can't use it to deform.
So you are in a strange sort of a situation when you have to somehow relink blendshapes or redo them. Thats gonna suck pretty bad if you have about 20 of them already :D 

In this case the upper eyelid becomes a classic example. After the character closes it, the mesh needs an extra edgeloop in order to curve it along the eyeball slightly.
In maya, you have to add that edgeloop in advance. You have to guess how many edgeloops- some people add much more than one - you can add a few too many.
Here I can completely close the eyelid with a new shape key and then add as much geometry as I need to keep it from clipping with the eyeball.
It also lets me alter the shape key geometry when its not at its full value- in this case when the lid is half closed(.67), I can move the bottom edges forward.
To do that in maya you need to constantly look at the two meshes, set up an elaborate workspace with two cameras- one looking at your base mesh, one looking at the blendshape-work on one while looking at the other -  it's just a pain.

Sculpting the blendshapes:
To get a good view over how the geometry deforms on my shape keys, I toggled on the excellent new matcap view mode and toggled on my wireframe from time to time:

Ton Roosendaal (Blender's founder) asked the community for matcaps for the very first version in trunk to support that feature as a preset in the viewport.
I made him two grey matcaps that might not look like much, but are actually pretty good at showing clearly how the geometry deforms and showing subtleties in a sort of a neutral way.
Ton included them in the official 2.66 release(mc8 and mc9). So now I can proudly say that I made a little contribution to Blender and to it's very big artist community! :D

Transfering blendshapes from blender to maya:
Just as with the recent posts , in this case I am transferring geometry from blender to maya and referencing it in maya. Only this time, I also need to export all the shape keys that I have created for my character's face and hook them up in maya.

When you export an fbx from blender that contains shape keys, maya gets all of those shape keys as sepparate meshes that have no material on them.They are also already applied as blendshapes to the main one and hidden.

Blender's fbx exporter impressed me this time. That is pretty neat! Only feature thats missing for me now is the option to zero out transformation values on export. I dont like having a dirty channelbox.

So It might look like I am pimping blender out a lot lately. That is hopefully not making me look too biased. The truth is that I need these features to do my work faster and blender is giving them to me. It's effectively competing with Maya, undermining aspects of it's pipeline. But Blender is not perfect. And in future posts I might write about it's weaknesses.

No comments:

Post a Comment