11
$\begingroup$

I have a scene I'm working on which requires a large amount of duplicates which I was planning to use an array for.

I recently heard if you use Shift+D instead of Alt+D and wondered if there was a way to do the same with arrays as it's going to take forever otherwise!

$\endgroup$
2
  • 6
    $\begingroup$ You'll want to use dupli objects. See my answer here for details on how to use them with the array modifier. Dupli objects are more memory efficient than Alt D (which is more efficient than Shift D), as Alt D still creates a separate object, but with linked data. Dupli objects are instances of the entire object, so the object is only stored once and all the duplis are just references to it. $\endgroup$
    – gandalf3
    Commented Dec 9, 2014 at 9:41
  • $\begingroup$ Woop Woop!!! Thanks for that!!! I've got about 2,000 of them so that should save me quite a bit of memory!! :D $\endgroup$
    – Shugs81
    Commented Dec 9, 2014 at 11:54

1 Answer 1

15
$\begingroup$

Instancing

Use instanced geometry (and objects) - instanced duplicates won't consume memory.

  • Alt+D will link the mesh data and save memory (Shift+D will not). You can have different materials applied to objects with the same mesh (link the material to object not to mesh)
  • Use Dupliverts/Duplifaces or Group Instances - this links whole objects (groups). This will save the most memory.
  • Use linked object (groups) from another .blend (Ctrl+Alt+O) multiple times - same memory savings as previous.

Multiple Renderlayers

Divide your scene objects into multiple render layers and combine them into a single image in the compositor. This way you can defer the memory load across multiple rendering sessions.

Texture optimization

For Blender 2.78 and up: Bindless Textures are now supported on GPU, which means only limit is now VRAM and a CUDA limit of 256 textures. Cycles now has support for single-channel textures - therefore no need to pack textures.

For older Blender versions: pack your black & white textures (masks, influences, specular maps, etc.) into channels of color textures (1 color texture with alpha - tga/png - can store 4 BW textures or 1 RGB and a mask). This can save the GPU memory in texture heavy scenes significantly. Old Cycles does not use single-channel for BW.

$\endgroup$
5
  • 2
    $\begingroup$ "Array modifier produces also instances". I don't think that's correct. It looks to me like it copies the mesh for every repetition, which is very inefficient (but allows for further manipulation with modifiers). See blender.stackexchange.com/q/7235/599 $\endgroup$
    – gandalf3
    Commented Dec 9, 2014 at 21:13
  • $\begingroup$ @gandalf3 you are right I reverted the edit. $\endgroup$ Commented Dec 10, 2014 at 7:02
  • $\begingroup$ Massive thanks to peeps for the answers... I'll have a look into saving tip #3... mostly going to be using procedural materials but I think there may be a few which aren't! Just got a 2nd gfx card to which will help! Cheers guys! (+ Gals!! just in case!) $\endgroup$
    – Shugs81
    Commented Dec 10, 2014 at 8:34
  • $\begingroup$ it looks like linked duplications and instance groups save about the same amount of memory, is it right? is there a preferable method? is linked duplications as fast as instance groups when the file is open? I personally prefer linked duplications as it's much more convenient than instance groups... any information on this topic would be appreciated! $\endgroup$
    – moonboots
    Commented Jun 28, 2018 at 19:32
  • $\begingroup$ @moonboots yes, they save exactly the same amount of memory. It should be also same fast, this I didn't test so thoroughly, but it would make no sense why one should be slower or faster. The data just comes from different files, that's all. $\endgroup$ Commented Jun 28, 2018 at 19:45

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .