Am I missing something, or is linking in Blender awful?

So in Blender, there seems to be two basic ways of importing something from another .blend file. Linking and appending. If you append something, it is copied to your current file, and that copy has no further connection to the file it came from. In other words, a simple import. Always a useful thing to have, but other times you may want to be sharing data. So there is linking. But the problem with linking is that in the new file, the linked object is (depending on the property and datablock type) either uneditable, or edits “push back” to the original file.

Why is there no in-between? Let’s say I have a vehicle. I built it in its own .blend file. Now I want to link it into several different blend files(or several different scenes in the same file) to animate it in a few different shots. If I link it, it has the same positions and such in EVERY iteration, so I can forget about giving it a different motion path in different scenes while keeping the ship at the origin in the original file. If I append it, now I have to suck up disk space storing my ship separately for each shot. And if I decide i want to tweak the hull material, or the engine shape, or whatever, i can’t just go back to the original file, make the change, save, and let it push to every shot.

If I make a proxy of the ship, all the modifiers disappear. (wtf?). If i group it and link the group, i can no longer animate properties separately, so there isn’t a lot of hope for things like engines vectoring, ramps/doors opening, or anything like that i could want to do for a vehicle.

Am I missing some way of using link/append and proxies? Or is it really this limited?

(and before you say it shouldn’t work like this, if i was using Maya i would just hit File > Reference, select my ship file, and go about positioning and animating it without any other worries. Any changes I make would be stored in the new file, but everything else is read from the original)

This is kind of the elephant in the room when it comes to asset management in Blender. You can’t redesign the library system without re-inventing how a studio’s pipeline should work in the first place. I’ve sat at some of these discussions, and progress is typically slow because everyone has a different idea of how they would like it to work.

If you want to see some improvement in this area. Draw up a detailed wireframe of how YOU would like Blender’s libraries to work. Then, we might actually get somewhere.

Very timely question for me as I learn and work through link/append/proxy…

I share the frustration about the treatment of proxies. "Currently Proxy support now works for other Objects as well, but only for Object transformations (not for modifiers or constraints, for example). "

I am still trying to learn Blender workflow and will watch this thread to learn… Maybe there is (PROBABLY there is) something I am not understanding about how to build large interdependent projects.

But, that said, holy cow is the a great tool…

There’s Object-linking, and there’s Mesh-linking.
If you link a Mesh from “old file”, then assign it to a new Object in “new file”, you can add any animation and modifiers you want to your “new scene”-specific Object… while you won’t be able to enter Edit mode.
If you want to use Vertex Groups of the original Object+Mesh you can Append or Link+disconnect the original Object, then connect it to the linked Mesh.

Actually, on examination, there’s a really quick way to achieve this.
Link an Object. In Properties->Object, click the icon next to the Object name. Now you’ve unlinked the Object, while maintaining the linked Mesh.

linking is bad :frowning:
everything is bad in blender :frowning:

Well, Endi, if you think this, then don’t use Blender. But we will use it…

1 Like

I just learned about linking to scene the other day.(using two scenes)

I agree 100% with what you said…
My work around was this… Save the Blender file as Myfile_Temp.blend
then go to the scene you want and append in the object from the MyFile_Temp.blend…

thats the only way i could get an object imported from one scene to another…
(there should be another way)
“Copy across from scene”, or “Duplicate mesh across from scene” something…

How about shift+D in the outliner(duplicate) and you can drag the object into the new scene? :smiley:

Yeah, making the object block local is one way I’ve found to get at least some of the functionality. One thing that would be very handy (and probably pretty simple to do) would be to add a “link object data only” option to the link/append dialog that pulls in an object already in this state.

good, show your works, i like to see!

Yes, I agree (except you mean “link Mesh data only”, right?). I imagine this would be the preferred append/link state in a lot of cases.

Well, it would be the mesh data block, but it’s actually referred to as “object data” in some of the menus, I guess in the context of “object’s data”.

In this case you can append the mesh instead of the object, and then assign it to an object of the scene.


Linking the whole thing, then Object > Make Local > Selected Objects is usually an easier way to get there. Regardless, one-click for this on the link/append screen would be better.

The problem with this is that there’s still no way to affect the vertices of the mesh. If you link in a mesh with a lattice and local both, the lattice is neutered … the Shape Keys are all there but they’re disabled. You can create a new lattice in the local file that affects the same vertex group and achieve the same functionality, but it would be nice to centrally define all the controls for a mesh in one place and allow linkers to use them.

I’m not sure about why you cant (conveniently) link object data from an external blend file because you can do the same across scenes. Btw, I just tested and this workflow doesn’t work:

Create a parent and child in library
Link both to dependent scene
Unlink parent in the depedent scene
Linked child will now be linked to the parent in the dependent scene (after switching in and out of dependent scene), of course destroying the library positioning of the child

I think the problem goes even further than this issue. The problem is that blender has a weird way of handling parent and children. If children were truly encapsulated in parents, ie with regards to duplication and linking, this wouldn’t be a problem at least with regards to positioning.

Localized animation, and scripted keyframing, like flash should be supported as well. I bet houdini supports localized animation considering its so focused on procedural production, but I’m not sure. Frankly, I don’t understand why localized animation isn’t a high priority for 3d packages.

Take for instance animating all of the actions of a car. The car itself would be a movie clip object. If one were to be forced into a workflow of creating sub-movieclip for all possible actions, one would essentially have to recreate the internals of the car for every action. A preferred way would be to define the origin positions of relevant components of the car, and then for the action performed on these components, the actions would be relative transformations to the local coordinates of the components. That way, one can for example change the origin position of the car door, and the animation of the car door opening would still be correct because the transformations are relative. I suppose essentially every component is wrapped in an empty. I guess, you dont really need key framing if you wrap every component you want to animate in an empty.

I think a lot of stuff in this thread can be resolved with armatures and the fact that actions can be assigned liberally. I don’t quite understand what your issues are if you are aware of the NLA editor workflow, the ability to assign actions and armatures to (like-named) arbitrary objects.

Armatures are essentially animations that operate on a set of objects.
Actions are animations that operate on a single object and are generally quite flexible. (I personally have to test how actions behave when assigned to an object that doesn’t contain all of the keyed properties)

It is very simple to link object data as opposed to the object to easily accomplish what your specified problem is. Link the object instance and then unlink, leaving you with the linked data or link the object mesh.

The issues I pointed out are resolved with the above NLA workflow considering how flexible actions are and the fact that delta animations exist and the fact that armatures operate in localized coordinates.

The only thing I can think that needs to be verified, is if modifiers are attached to object data or object instances. If they are attached to object instances then that really sucks. As specified by FRRJack, modifiers ought to be able to be specified as residing in either the object data or in the object instance.

Hey hello oldies buddies ! :wink:
coz of 2013 till in 2018 search results …
I was really blocked to get any assets from a file bib containing for ex some furnitures…
But the real thing is to think link function is to lighten my main file.
Directly done it’s no way … crazy thing as my linked object can’t move ??
Also the solution i adopt for now, is to make a group from your asset you want to import… then miracle, it goes ok, my linked (grouped) object is movable on my main file.
materials seems back but not always ok, number of tris or faces don’t move, even at 1st it writes about more…

1 Like

Old topic but I have a similar problem, maybe there is some news with blender 2.8 ?

I have a robot model, each moving part is a separate blender model. I have empty axis on each mating point and all my motors are rotating around local Z.

It works like a charm for importing robot assests in Unity. I just have to assemble my robot with parent/children relationship, see screenshot:

but I can’t find a way to do the same thing in blender without breaking the link. I have to append objects to be allowed to assemble them together. I can’t even move it.
I really do not get the point of having linked objects, it just lose all the interest in having seperate objects I can update to propagate back in several scenes.
I’m far from being a blender expert so I hope I’m missing something…