reference objects

Hi, i’m currently doing a switch from 3dsmax to Blender and have a small question. In max there are object types called “references” and “instances”.

Is there something similar in Blender where you can duplicate a mesh and make them share different data either “mesh1 <> mesh2” or “mesh 1 > mesh2” ?

Hope that made sense :slight_smile:


In object mode select an object then shift-d makes an “instanced object” and alt-d makes a “referenced object”.

Hope this helps,

Thanks. Didn’t know alt-d, thats equivelant to an instanced object in max where data goes both ways. Still need a referenced object where data just goes one way, shift-d just makes a duplicate where no data is shared. Unless im doing something wrong.

No you aren’t doing anything wrong I just misunderstood. In programming an instance has its own data and a reference object shares data.

As far as I know there is no reference object as you understand it in blender. How does this work in 3DSmax? I gather that you aren’t allowed to edit objects which are referenced from an original and can only edit the original. Why is this useful?


From the Max 3.1 help:

Copies are the most familiar kind of clone object. Copied objects are completely independent of the original object, and therefore analogous to a precise physical copy.

Example of Using Copied Objects
If you modeled a basic head shape and wanted to create a group of individual characters, you would probably make a copy of the basic head shape each time you started a new character. You could then model an individual nose, mouth, and other features.

Instances are alike not only in geometry, but also in every other way as well.

When you change one instance by applying a modifier, for example, all the other instances change with it.

Within the program, instances derive from the same master object. What you’re doing (“behind the scene”) is applying a single modifier to a single master object. In the viewport, what you see as multiple objects are multiple instances of the same definition.

Example of Using Instanced Objects
If you wanted to create a school of swimming fish, you might begin by making many instanced copies of a single fish. You could then animate the swimming motion by applying a Ripple modifier to any fish in the school. The whole school would swim with exactly the same motions.

References are like “one-way” instances. Referenced objects are based on the original object, as are instances, and can also have their own unique modifiers.

Any modification made to the original object is passed on to its references, but any modification made to a reference is not passed back to the original.

The “one-way” effect is useful, since you can maintain an original that will affect all its references, while the references themselves can take on individual characteristics.

Example of Using Referenced Objects
In the example of modeling heads, you might want to keep a family resemblance in your characters. You could model basic features on the original, then model specifics on each reference.

At some point, if you wanted to see what your characters would look like as “cone-heads,” you could apply a Taper modifier to the original head and have all the other characters take on the same feature. You could give the original character a very pointed head, then apply a separate Taper to some referenced characters to reduce the point toward normal.

In the swimming fish example, you might choose to make the school all referenced objects based on a single, original fish. You could still control the swimming motion from the original fish, and also add modifiers to individual fish in the school to vary their behavior.

True, any vertex editing on the object created with altD is passed back to the original object. But in the object mode, you can freely scale and rotate the second object withot affecting the first. Also, lattice deformation is not passed along, as long as you don’t use ctrl+shift+A to apply it to the mesh, so it could be another option…
But max’s referenced object sounds useful. Maybe some genius coder would find it an interesting challenge??

I can’t see how you could use a destructive change to the referenced copy (ie physically moving verts, changes like extrude etc) and then be able to transfer changes to the origional reliably. So you’d have to use a non-destructive

Well blender has a grand total of 4 nondestructive mesh operations (other than GRS in object mode) - lattices, subsurf, the wave effect and displacement maps. The first three are applied to individual objects anyway (not the shared meshes) so it is easy to apply them to only the “referenced” copy.
Displacement maps are a little bit trickier as materials are (by default) applied to the shared mesh rather than the object. But if you click the “OB” button in the material window you can apply the material to the object instead.

So basically, until if and when blender gets more nondestructive mesh-editing operations, a referanced copy and an instanced copy are basically the same thing - just that one of the copies has a lattice or whatever applied to it.

When i do an alt-d and apply sub-surf to the new object it also applies it to the original. If it didn’t do that i would be the happy camper :slight_smile:

Its not really a big deal, i can live without it, but it would be cool in some modeling situations cause you would be able to have an uncluttered view of the sub-surfed model while you model.


There are two distinct what-geeks-call “data structures” at work here, somewhere in the unfathomable world of C programming; :wink: They are called Object and ObjData.

The Object structure contains most of the basic information about an object, but doesn’t contain info such as its location in space. That’s in the ObjData.

When you “create a new object,” one of each of these two data structures is created, and the ObjData “points to” the Object, which “has a reference-count of ‘1’” (because only one ObjData block refers to it).

Mind you, there’s an ambiguity here with respect to that word “Object.” In ordinary human vernacular you simply refer to “a ‘thing’ in space,” waving your hands in front of your face for emphasis. You normally don’t know-about or care-about the duplicity of the internal data-structures. :slight_smile: But be aware that if you start trying to engage a computer-programmer in meaningful conversation, [she is going to assume a very precise meaning for the word. Hence my choice of the word, ‘thing.’ :smiley:

"Thing One" ::=  &lt;Object (ref. ct=1)&gt;  
                                ^---------- &lt;ObjData&gt;
"Thing Two" ::=  &lt;Object (ref. ct=1)&gt;  
                               ^---------- &lt;ObjData&gt;

If you “duplicate (Shift+D) the object,” an exact copy of both of these structures is created, each pair unrelated to the other pair. Both pairs are independent.

Now suppose that you want twenty absolutely-identical “thingys in space,” all of them differing only in where exactly you choose to put each one in space. You can do that with ‘Alt+D.’ When you use this control, you create another ObjData structure only. It is now linked to the same Object structure, which now “has a reference-count of ‘2.’”

"Thing One" ::=  &lt;Object (ref. ct=2)&gt;  
                             |  ^---------- &lt;ObjData&gt;
"Thing Two" ::=              ^------------- &lt;ObjData&gt;

Any change to “thing #1”'s position, or anything else about it that would be reflected only in the ObjData, will affect only it. But any change that would be recorded in the Object structure, like material selections, would instantly affect all the “things” that share it; that, in programmer geek-speek, “reference it.”

North said

Its not really a big deal, i can live without it, but it would be cool in some modeling situations cause you would be able to have an uncluttered view of the sub-surfed model while you model.

Try using the “Optimal button” (under the subsurf buttons) while editing a subsurfed mesh in solid mode.
This should give you a less cluttered view.

Hope this helps,