One of the powerful features in Blender is the possibility to use data linked from other .blend files. Such referenced data then is always read from that other file, and cannot be edited.
This works fine in many cases, especially for props or background scenes, or for animated Objects that don't need to be edited anymore.
There are also cases where you do want to be able to edit (parts of) referenced data. This especially for character animation setups, where you want the entire character to be loaded from an external library, but still permit the animator to work with Poses and Actions.
This diagram shows what happens when you load a character from a library (color red is referenced data).
Note that the Pose is part of the Object. The Mesh Object points to the Armature Object, this is the deformation modifier. This situation doesn't allow to edit anything of the referenced character.
If we make the Object and Pose local, we can move the Object around and set poses. However, the Mesh Object - which is read from a library - cannot use the modifiers anymore.
This is what is possible to solve the modifier conflict. Now also the Mesh Object itself has to become local.
A big disadvantage of this situation is that the entire Pose isn't read from the library anymore (which contains all IK and Constraints too). That means that important rigging updates in the library are ignored.
It would be much nicer if we could keep the entire character referenced, and define certain parts to become local editable in our own files.
This is what the Proxy Object does. It aligns itself with the referenced Object and Pose, allowing to make local edits that will override the referenced data.
Select/activate a library linked Object, and press CtrlAltP.
This will add a new Object, creates a Proxy reference to the library Object, and removes the library Object from the Scene.In the Outliner this shows as a ghost icon ( add icon here).
Synchronizing with Proxies
The important aspect of a Proxy Object is that it allows to edit data locally, but also allows to keep specific data protected.
Data that's defined as protected, will always be restored from the Library (typically on file reading or undo/redo steps). This protection is defined in the referenced Library itself, which means that only the Library files can define what's allowed to change locally.
- This is work in progress, for evaluation especially in larger animation projects.
- Currently Proxy support now works for other Objects as well, but only for Object transformations (not for modifiers or constraints, for example).
- Proxy support for Armatures inside Groups will be added.