Memory optimization and performance issues during Modeling

I register this topic here, because this optimization has only to do with modeling (not rendering or animating, etc)

My scene is growing larger and larger. I am rendering an interior space, now consisting of 60 objects with a total of 675K faces. Most faces are from complicated furniture objects. I started, getting lags in moving objects and paning views and sometimes I can hear my disk caching.

I separated the walls and space outlines from the furniture, into different layers - so I can set my camera views quickly paning with only the walls. Then I grouped the furniture by their locations in the layout so I can view them separately, by lots, according to scope of view.
These seem to have helped significantly, but since I am new to Blender I am not sure I am doing the right thing or the best I could, for this issue.

More specifically:

  • I’ve been using layers not scenes, since I consider the whole thing a scene, since there is no time sequencing - just camera shots from several points. Am I right in this? are layers effective in managing memory usage? (they serve me well functionally)
  • I have repetitions of instances objects in the scene by using the array and/or mirror modifiers. This has obvious advantages when editing the parent object. It seems to me though, that the modifiers applied and the objects separated is somewhat lighter on the system resources. (with CAD it would be the other way around: CAD blocks and repetitions in instances are effective) What about Blender, are modifiers that repeat objects more “heavy” than separate duplicated objects?
  • Turning off visibility (either by object or by layer) in Blender certainly seems to lighten the load (I say this because say AutoCAD you would freeze or partial load for significant advantages) In Blender, is visibility the best way to focus memory usage and lighten the load?
  • Is the decimate modifier equally effective as such (still a modifier) or best applied? - always asking in terms of resource optimization and response speed.

Finally, any suggestions on optimization are very welcome.

Thanks,
-Christos

Forget about CAD when working with Blender (or any software dealing with polygonal modeling). I’ve already suggested that in another thread but here it is again since it’s no joke.

Animation is usually split to many shots, large scenes are separated to asset files (furniture, plants, house, environment, whatever) and a scene file for each shot where those assets are linked in and rendered. Check out linking objects, proxies (basic manipulation of linked objects) and http://cgcookie.com/blender/2013/07/16/using-edit-linked-library-add-on-blender/ if interested.

  • Putting groups of objects in separate scene layers is good when working on them. You could also select one or many objects and use local view (numpad /) to view only those.
  • Again, array and mirror modifier do not work with objects nor instances. They work in object data level so that if you use array with count of 3 and have 4 vertices in your object, 4 becomes 12 after array is done (without merging). You are multiplying actual geometry inside one object, since those modifiers are there to help modeling. Instancing is what linked and procedural duplication does. You can also use a group instance (essentially a dupligroup) or a particle system.
  • Yes, but there are other ways too, depending on your scene/objects. Scene properties -> simplify is one.
  • Not sure why you are using decimate modifier in the first place but applying it would use less resources.

Show your scene with clear wireframes (object properties -> display -> wire, draw all edges) and what modifiers are in use. Turn off subdivision surface modifier visibility if you have one (or use scene simplify option to do that for everything) for that.
I’m guessing you can shave off quite a lot of unnecessary geometry by using actual instances but there might also be some things you could do with how objects are modeled.

Review your modifiers. Mainly any subsurface modifiers you happen to be using. This modifier is special in the fact that is has two settings. One resolution for the viewport and one for rendering. You can lower the viewport setting to 0 and leave the render setting quite high. The Simplify option (under Scene context) also allows you to globally reduce subsurface viewport resolution.

Layers are a valid way to accomplish your goal. But you can also use the icons in the Outliner to remove an object from the viewport while still keeping it in the render output. With layers you can forget to turn them back on when rendering. If you have a heavy object that you are “done” with you can turn off it’s viewport visibility to regain performance.

You can also explicitly set any object to display in bounding box mode. Once you are done working on an object change it’s viewport display to Bounds.

Thank you both, to the point, very helpful.

From the Wiki Manual: “A common table has a top and four legs. Model one leg, and then make linked duplicates three times for each of the remaining legs. If you later make a change to the mesh, all the legs will still match. Linked duplicates also apply to a set of drinking glasses, wheels on a car… anywhere there is repetition or symmetry.”

Question: I could do one leg and modify>mirror it in both X, Y to get 4 for the table. This would have the added advantage of all legs automatically recentering if I move the parent (in addition to editting one for all). Which consumes more resources (linked duplicate or modifier)? other reasons to use the one or other method?