Follow Shape Key Development in 2.5

Just like I plan to chronicle the development of 2.5 animation features as they relate to armatures, I would also like to do the same thing for Shape Keys, (which seem to be broken, in the latest builds).

Does anyone know what kind of priority that Shape Keys has in the current development scheme? Will they be usable in the near future?


Greg Smith

Shapekeys in their current form are indeed quite buggy. They do need a complete (no holds barred) cleanup, but part of that would probably have to wait for BMesh improvements.

AFAIK, the only thing that shouldn’t work with shapekeys now is the (nasty) absolute shapekeys which used to have that archaic UI. This will be worked on at some point in the future, though no guarantees about when yet.

BTW, for the record, I’m not that fond of shapekeys as a way of rigging in general, and as such, you might notice that they tend to have lower priority than keyframe editing or rig posing for example. :wink:



I’m curious, now, about what method you prefer for animating things like facial expressions - and would you be willing to explain why? I’m definitely open to new and improved methods. Those sliders really start to dominate the interface after you’ve got a few hundred of them.


Greg Smith

I think shape keys shouldn’t be additive, or at least for there to be an option to toggle between additive and just actual keys you can switch between, it’s really weird that way and it’s difficult to key an animation where you just want a different shape each morph, you need to animate two sliders each time, to turn the previous one off and turn the new one on.

as you say, shapekeys can go way beyond just additive linear offsets. its a tall ask, but something along the lines of the weta/gollum combination sculpting system they created would be an ideal end goal. you want a system that lets you sculpt and correct combinations of shapekeys, store rotational offsets, proper spline interpolation as well as linear, and wrap it up in an intuitive interface so that modellers rather than just riggers can easily get into it.

the weta system was a quite complex network of nodes and melscripts, someone else has done their own take on it as a single maya deformer called BCS. The videos looks amazing:

Joe Alter has his own system that focuses more on the puppeteering/performance side, but it does feature spline interpolation between shapes, making for much nicer deformation:

A possible workflow for all this within blender might be:

  1. select your mesh, add a shapekey modifier
  2. create a new shapekey called ‘smile’
  3. blender duplicates your mesh, renames it smile, adds a ‘smile’ slider to the shapekeys UI.
  4. setting the smile slider to 100%, and modifying the smile mesh will be updated live on your main mesh
  5. switch to the sculpting tool, sculpt in a nice smile.
  6. when done, you can either delete the smile mesh, and shapekeys will store the offsets internally, or just hide it, so you can continue to edit it ‘live’ later. if you delete the shape, an ‘edit’ button next to the smile slider would recreate the smile mesh for you to edit again.
  7. set the smile slider to 0%, create a new shapekey, ‘jawOpen’
  8. blender duplicates the input mesh, names it jaw open, makes a jawOpen slider
  9. set the jawOpen slider to 100%, sculpt this as before
  10. within the jawOpen slider would be an interpolation drop-down, set this to ‘rotation’

now, corrections:
11. turn both ‘smile’ and ‘jawOpen’ to 100%, get a horrible additive mess, decide to fix
12. click the ‘fix combination’ button. this could either duplicate the mesh in its current state like before, or just work in-place whatever people prefer I guess.
13. sculpt away with the sculpt tool
14. when done, shapekeys knows that whenever the current configuration of sliders is reached, to display this particular corrected sculpt. this correction shouldn’t become a 3rd slider, it shouldn’t be scripted with python, the user shouldn’t have to manage correction states, it should all just work.

for advanced users they could open a ‘combinations’ subpanel, that’d be where that ‘smile+jawOpen’ shape would live. it’d give info on what primary shapekeys are connected to this combination, control over how it should start blending and with what interoplation, toggles to enable/disable correction.

i’m sure there’s things I’m missing, but that’s the jist of it. other things that’d be useful would be setting the smile slider to 50%, right clicking and choosing ‘add shapekey’ so that you could have a more nuanced smile animation; the cheek puffing out before the smile reaches its full extent, that sort of thing. these would be represented as ‘ticks’ within the slider as if they’re keyframes, allowing you to set their interpolation type.

and that’s my two cents. :slight_smile:


shapekey will not be implemented for the curves in the 2.5 version?
I think shapekeys applied to curves, it is a good tool for toon style, Rotoscoping and other animation techniques.


Shapekeys in Blender need for sure some improvements.
A thing that could help medium advanced setup is something like pose space deformation.
No matter where/how you put bones in a character,you wiil never have decent deformation(even quaternion deformation doesn’t give good result).
Pose space deformation is a tool(not so advanced to tell the truth)that helps with deformations(muscles,joint improvements).
To work it needs a good way to measure joint angles and the possibility to change vertices position when the pose is done.
Now Blender doesn’t work well with posed character,because it tries to do the computation in real time,but to work well,the inverted transformation have to be done only at the end(try to look to pose space deformation plugin for maya made by michael comet,in that plug in the posed mesh is copied,armature deformation is applied,the mesh is changed/fixed the deformations,and after the plugin calculate the delta between the changed mesh and the original posed mesh in the righ matrix space(vertex local frame) and stores the result as a shapes key with the weight driven by the angles between bones)
THIS is the way to go,not doing all in realtime as now(it doesn’t work manipulating more than one vertices or using the proportional editing.
Btw,a good general way to measure angles between bones(that work with fk,ik and so on)is a thing needed for rigging.

yep, psd’s are a great rigging tool, and intuitive for artists to use. psd’s and combination shapekeys are related in that its not just additive deformation, and the attributes doing the driving are more than simple single value elements being blended together. that was the problem with the old ‘smartskin’ feature in aimation master v7 or so; the interface for doing corrective shapes was simple, but you could only use a single bone rotation axis as a driver. meant that you could fix an arm swinging straight up fine, and an arm swinging forward fine, but an arm up AND forward at 45 degrees would be a pain to correct.

if I remember correctly I think the BCS system was essentally converting shapekey relationships into a sort of pose-space, to work out how to control keys and when certain shapes would become active.

This is really informative and interesting.I have also noticed that the pose space deformation plugin for maya made by michael comet is relaes underunder the Gnu General Public License.

Following my rigging experiences with bones-only-facial setup I believe that shapes keys are still the best way to go for facial rigging. Upon shapekeys we can build bones and lattices.

So definitelly it would be nice if shape keys will be implemented “smartly” in Blender 2.5. I am not afraid that Aligorith would be out of his tricks and magic :slight_smile:

After trying rigging the face with bones, I can tell you, Shape Keys are far more robust, and predictable.
The plugin renderdemon describes sounds like ‘crazyspace’ corrections - which have improved in blender over the last year. Making it so you can sculpt onto the mesh, like there were no modifiers on it, would be very intuitive.

Add it to the Long-list-of-things-we-all-want-in-Blender :slight_smile:

ah yes, i knew there was something in blender like that, but couldn’t make the connection between ‘psd’ and ‘crazyspace’. i’ll know better next time. :slight_smile:

Doesn’t anisculpt do this?