Proxy problem (actions & modifiers)

I have a fairly complicated model (of machinery) which is linked-to from a single source file. Now, in one of those linked files and without altering or duplicating the original, I want to create a proxy in order to substitute certain materials. However, when I create the proxy, the actions and modifiers disappear, as shown in this before-and-after screen shot from the Outliner:

SideDie_Moving is an object linked-to from the original library file. For my purposes, “copying” the object is not an option. I also would strongly prefer not to “make a Scene” in the original because that, too, involves duplication. (This model is not in its final approved form.)

The expected behavior is as in (“Image 4”), where the “AC” and “AR” blocks are still clearly linked to the object to which the proxy is now associated. The data-structures shown in the Outliner don’t look like that.

You can see that the SideDie_Moving object has been parented to the proxy, but it no longer has any of the Animations or Modifiers that were formerly associated with it. And, neither does the proxy. You can’t further-expand the SideDie_Moving node: it has no children or attributes.

The animation is a simple set of keyframes.

Blender 2.68a.


Does this have to do with the (barely documented …) ability to “protect” certain attributes of a linked object? When the linked-object was originally linked, it worked as expected. When a proxy was attached to it, though, the actions and modifiers disappeared and the materials list was moved to the proxy.

If anyone has a knowledgeable comment on this, “now would be a good time, Scotty …”

Last call … 114 views and no answers? Okay, where is the source-code​ for this? Python or C?

Basically, you can’t do that with proxies. If you try to proxy pretty much anything besides an armature, you’re going to have a bad time. It would be nice if proxies worked like references in Maya and just stored a list of the operations that were performed on the linked data in the local file, but instead they do this silliness. They’re good for linked characters and vehicles, but that is about it. As far as I know there is no way to proxy an object node while still reading its modifiers and constraints from the library file, or even preserving them at all.

Good to know. It’s obvious that there’s more work left to be done here.

Still … I can’t help but notice that Actions can be linked-to, also. Is there a way that I could link-to the action (or tap into the reference that was obviously made when I linked to the original object), and re-associate it with the proxy? (If such a thing could be done by means of a Python script . . . heck, I know Python . . .)

A little bit of experimentation today, in the Dope Sheet view with the proxy object selected, is that you can select the modifier that was originally linked to the object (ConvData_Action.002 in the above shot), and it will be linked to the proxy … so that the proxy now moves.

The modifier can also be added, manually, and when you’re done the topology looks like this: (notice that everything’s getting attached to the proxy …)

This ought to be something that can be done with a rather short Python script, if one doesn’t exist already. One would simply need to make a temporary list of the things that won’t automatically get transferred, make the proxy, then add them back.

In the end, I’ll probably do this with several scenes, each one holding a different variously-colored version of the machine (so that it all remains in “one master source library”) but I think it’s good to know that this works.