11

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!

PGmath
  • 25,106
  • 17
  • 103
  • 199
Shugs81
  • 361
  • 1
  • 3
  • 7
  • 6
    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. – gandalf3 Dec 09 '14 at 09:41
  • Woop Woop!!! Thanks for that!!! I've got about 2,000 of them so that should save me quite a bit of memory!! :D – Shugs81 Dec 09 '14 at 11:54

1 Answers1

15

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.

Jaroslav Jerryno Novotny
  • 51,077
  • 7
  • 129
  • 218
  • 2
    "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 http://blender.stackexchange.com/q/7235/599 – gandalf3 Dec 09 '14 at 21:13
  • @gandalf3 you are right I reverted the edit. – Jaroslav Jerryno Novotny Dec 10 '14 at 07:02
  • 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!) – Shugs81 Dec 10 '14 at 08:34
  • 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! – moonboots Jun 28 '18 at 19:32
  • @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. – Jaroslav Jerryno Novotny Jun 28 '18 at 19:45