Protected layers are a rig features I had only a vague understanding for a while. Thanks to a bug, and a fix from Ton (and his explanation) I have a somewhat better understanding, I’ll put down here, mainly so I don’t forget. First of all, this is what they look like in 2.5x (left) and 2.4x (right):

So far so good. But clicking these won’t actually change anything in the file you’re working in. Once you link he rig as a group and create a proxy*, things will become more clear.
With a proxy, you have a linked group with a localish rig proxy you can pose. Protected layers control what happen to the local proxy on file load:

  • Unprotected layers are local. The bones here are now out-of-sync with the rig file, you can add bones, delete them, add constraints, remove them, etc. If you change the rig file on these layers, nothing happens to your scene file
  • Protected layers get synced with the rig. any changes to the rig (new bones, constraints, etc.) will propagate to the scene file everytime you load the file. You won’t be able to add bones, delete them, or delete constraints in the scene file

The design allows users to pose bones in protected layers, since ‘pose’ is actually a separate data structure that lives ‘on top’ of ‘bone’ data. Interestingly enough you can even add new constraints (part of the pose) but cannot delete original ones. The only catch is, that any un-keyed poses get wiped out when the rig is synced on file load- so you *must* key every bone you want to keep the pose on.

In Blender 2.58 there’s a bug that prevents posing bones in protected layers. This has been fixed for 2.59, coming soon. This bug is actually the reason I had to find out about all of this, since it cost me many hours, as my rig changes wouldn’t propagate to scene files, meaning I had to delete and then manual spend time fixing constraints, converting curves, keying channels, re-adding missing stuff, every time I updated the rig. Basically < record (constraints/parenting/anything unexpected) , protect, save, load, save, unprotect, re-add the recorded, save> cycle to do on each scene file everytime I wanted to push a rig update. To make things worse, most of our animators are overseas, and many of them don’t use SVN, so the process has been quite painful. I’ll continue to do this until all animators are using the new version, after which I can protect the layers and fix everything up.

Note: if you add a constraint to a bone in an unprotected layer, and later on protect that layer, you will lose that constraint!! since the bone is unprotected, it is local, and once the layer has been protected, gets wiped out by the (identical) protected bone. After this, of course, you can readd the constraint to the protected bone and it will ‘stick’.
* making a proxy:

  • In the rig file, create a group that contains the mesh, armature and all other components of your character, optionally only including layers that contain renderable items in the group Dupli layers.
  • save the rig file and open a new one
  • file->link->browse to the rig file and then link the group
  • ctrl-alt-p and select the armature from your rig to create a posing proxy
  1. Gianmichele :

    Really? How did they manage then to push updated rigs on large projects like Sintel? I thought referencing a rig in was the only thing needed to have rig changes propagate into scenes correctly :\

  2. Well, the change happened during Sintel, because animators complained that posed, but not keyed bones were not being saved.. so instead of :
    a- fixing this (best case)
    b- unprotecting layers in rigs that were ‘stable’ second best solution
    they chose to disable posing protected layers altogether.. I think this happened because of production pressure and lack of documentation as to the design intent of the feature.
    Perhaps Cessen got in most/all changes to the rig in before this happened, so maybe it didn’t affect them that much… for us it is pretty bad, since everyone is distributed and there are a lot of custom stuff in the files.

  3. EnV :

    Cool, thanks for the nice explanation, this wasn’t clear for me too. But what if you have a bone both on a protected and on an unprotected layer?

  4. Good question! I haven’t actually ever done this, so I don’t know (yet) the answer, worth a try!

©URCHIN 2015