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
    Dec 9 '14 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
    Dec 9 '14 at 11:54
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
    Dec 9 '14 at 21:13
  • $\begingroup$ @gandalf3 you are right I reverted the edit. $\endgroup$ Dec 10 '14 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
    Dec 10 '14 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
    Jun 28 '18 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$ Jun 28 '18 at 19:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.