Enter your keyword

post

Optimizing 3d scenes for faster rendering

Optimizing 3d scenes for faster rendering

I’ve seen many people struggling with optimizing their scenes for shorter and more stable rendering, I was that person too. That’s why with the help of my colleagues at GarageFarm.NET I decided to create a series of tutorials about rendering optimization in the most popular 3D applications and render engines. I’ve used my own experience and knowledge derived from being a freelancer as well as a render wrangler on a render farm.  Here is he first part of our guide that covers geometry optimization techniques in 3ds Max. I hope you like it and find it useful – Michal Mos, GarageFarm.NET.

So after many sleepless nights you finally achieved a desired image look but then you hit that render button and it turns out the scene eats up too much RAM or requires too much computing power to get it done within reasonable time. We’ve all been there.

Here’s what may be a result of that:

  • High RAM usage may cause your scene to crash during the rendering or cause it to render too slow. That’s simply because the program needs to constantly write and read the temporary data from a hard drive. The hard drive is a 1000 times slower than RAM, even SSDs are much, much slower.
  • Overblown scene settings such as polycount, quality, and sampling may lead to long render times that in turn may result in a missed deadline, or, when dealing with render farms, you can expect a higher cost.
  • The more hard drive space your project requires (including both the scene and assets), the longer it will load to 3ds Max. When rendering locally that is probably not a big deal, but in network rendering, you will probably experience longer render times. Also, in case of commercial render farms, longer loading time generally equals higher cost.

Who is this guide for?

This guide is for every 3D artist who have had an unpleasant experience with too high resource usage when rendering a project locally or on a network.

You will find useful optimisation techniques for beginner and intermediate 3ds Max users. If you are an advanced user, you probably already know most of them, but still you might find some new information here. There is a saying, you don’t know what you don’t know.

The optimization methods listed below will be especially useful to animators as even a slight increase in render time is multiplied by the number of frames in your animation.

The aim of this guide is simple – reduce the render time and RAM usage – and gain more time for the creative side of the project, save time and money and have more satisfied clients.

PART 1. Geometry

The more geometry (polycount) in your scene, the bigger the scene file, the more RAM it needs in order to be rendered, and the longer the rendering takes.

To reduce the polycount in your scene you can try the following methods:

1.1 Check the polycount

  • Press “7” to activate the statistics display in active Viewport
  • Or click on the ‘+’ in the upper left corner of a Viewport and choose “xView” and “Show Statistics”

01.Check_the_polycount_basic_options_evermotion.jpg

You can turn more statistics options on and off by clicking on the upper-left corner in Viewport (“+”) → clicking “Configure Viewports” → “Statistics” panel.

02.Check_the_polycount_more_options_evermotion.jpg

  • Total – Displays only the statistics for the entire scene.
  • Selection – Displays only the statistics for the current selection.
  • Total + Selection – Displays the statistics for the entire scene and current selection.

If you want to learn more about the statistics and what they mean, check out Autodesk help.

1.2 Find heavy models.

Open the window “Select by name” (press “h”) and add the “Faces” column to the menu.

You can do that by right clicking the “Name” bar and choosing the “Configure Columns” option. You’ll see a list of additional columns, one of them being “Faces”.

This column will sort all objects in the scene by number of polygons.

03.Select_from_scene_faces_column_evermotion.jpg

1.3 Remove unnecessary geometry.

Where to look:

  • Delete all the geometry that is located outside of the view of the camera and won’t be visible in the final render.
  • Delete all the geometry that is hidden inside, or covered by other objects.
  • Delete all the hidden models and models on hidden layers, blueprints you used for modelling, and imported CAD drawings.

How to find hidden objects?

  • In the “Select by Name” window click the “display all” icon.
  • You can find hidden objects in your scene by adding the “Hidden” column, in the same way as “Faces” described in the chapter above. The hidden objects and objects on hidden layers will have the “Hidden”option ticked.

04.Select_from_scene_hidden_objects_evermotion.jpg

To find the models lost outside of your scene during importing or working on the project, you can right-click on any Viewport and choose the “unhide all” option, with the “Unhide objects on hidden layers” option selected. Then choose the “zoom extents” option in the bottom right corner of the max interface and press “ctrl + a” to select all the models in the scene. Lost models will become visible in the scene.

05.Lost_objects_viewport_evermotion.jpg

1.4 Use instances instead of copies.

In 3ds Max you can copy an object either as a copy or an instance (or reference which is a sort of an instance).

When you copy a mesh as a “copy”, 3ds Max creates another mesh that will be stored in your scene both on hard drive and RAM, which makes the polycount higher.

However, if you create an “instance”, 3ds Max will just store the information that a copy of a mesh is present in another place in the scene but keeping only the data of a single mesh in memory and in the scene file.

Thanks to using “instances” you can put a huge number of copied objects into the scene but they will use practically the same amount of RAM and have a similar filesize as a single object.

The only disadvantage of that method is that those meshes must be kept identical to the initial object.

Example

06.Copies_vs_Instances_evermotion.jpg

1.5 Optimize models

Try to optimize models based on their distance to the camera or level of detail needed.

Adjust the level of detail of models to their visibility in the final render. For example, if you need cars in your visualisation but they are going to be far away, use simpler models or optimize them. A curb on a street can be beveled when it’s close to the camera, but those that are farther away can have sharp edges.

Don’t add Turbosmooth or Meshsmooth modifiers if it is not necessary, and keep the “Iterations” value as low as possible.

1.6 Use 3ds Max optimizing modifiers

They can quickly reduce the number of polys in your model, but they might deform its shape.

It’s best to use them when the object is far away from the camera, or when it is a high poly object (like a model of a car collapsed after using Turbosmooth modifier).

Play around with the settings of modifiers to keep desired detail level, but reduce the number of polygons.

  • You need additional polygons only to create more details in your model. Because of that, models with a dense mesh on flat surfaces are best candidates to apply this kind of optimisation.
  • Models with irregular shapes (like rocks) don’t need to retain their exact shape to look good, which also makes them good candidates to apply optimization modifier.

In order to reduce the scenes size and its resource usage, you will need to collapse the model with the optimizing modifier applied before the rendering, especially when you are going to render it via a network. Always remember to save a copy of the scene before making changes to be able to revert to older settings in case something goes wrong.

Optimizing modifiers for 3ds Max

1.6.1 – Optimize Modifier

The Optimize Modifier lets you reduce the number of faces and vertices in an object. This simplifies the geometry and speeds up rendering while maintaining an acceptable quality of the image. A Before/After readout gives you the exact feedback on the reduction as you make each change.
For more information about this modifier check out Autodesk Help.

1.6.2 – MultiRes Modifier

The MultiRes Modifier reduces the memory overhead needed to render models by decreasing the number of vertices and polygons. MultiRes offers several advantages over the Optimize modifier including faster operation and the ability to specify the level of reduction as an exact percentage or vertex count.

For more information about this modifier check out Autodesk Help.

1.6.3 – Prooptimizer Modifier.

The ProOptimizer Modifier lets you select objects and interactively optimize them.

For more information about this modifier check out Autodesk Help.

1.6.4 – Batch ProOptimizer utility.

The ProOptimizer feature is an optimization tool that helps you reduce the number of vertices (and also the number of faces) in an object while preserving the object’s appearance. Its options let you maintain material, mapping, and vertex color information in the optimized model.

For more information about this modifier check out Autodesk Help.

1.7 Use pre-rendered planes with textures instead of models + shaders

Sometimes you need to create an environment for your scene outside of your camera view but affecting your scene by appearing in reflections, casting shadows or illuminating it with indirect lighting (GI).

In that case, keep the models which create such environment simple or replace them with planes with pre-rendered textures added, and cut them out with opacity map if this is necessary.

You can also use that method for objects which are more distant from the camera but render too long, or are visible through materials like glass (for example several rows of glossy bottles on a shop shelf).

That method is especially efficient if you want to create a large amount of foliage visible in reflections or casting shadows on the scene.

If the opacity maps render too long, please check out the Textures guide (Part 2) to know how to set them up to render much faster.

EXAMPLE 1

07.Opacity_planes_reflections_evermotion.jpg
A comparison of rendering a model with a reflection of environment created with instanced models vs pre-rendered planes with opacity map.

EXAMPLE 2

08.Opacity_planes_far_away_trees_evermotion.jpg
A comparison of rendering far away objects as models vs pre-rendered planes with opacity map.

EXAMPLE 3

09.Opacity_planes_refraction_bottles.jpg

A comparison of rendering of multiple objects with refraction and blurry reflections rendered as models vs pre-rendered planes with opacity map.

1.8 When to collapse models.

The methods listed below can reduce your scene size on hard drive, so that your project will upload and open in 3ds Max faster, which is important in the case of rendering via a network or a render farm.

  • Models with optimizing modifiers applied should be collapsed before rendering. It will reduce RAM usage, rendering time, and the size of the scene on a hard drive.
  • Meshsmooth and Turbosmooth modifiers – Keep the models simple with modifiers applied to them, instead of collapsing them into editable poly or editable mesh. You will be able to correct the density of the mesh if it is too high and models will be saved on the hard drive in their simpler form, so your scene will weigh less.

EXAMPLE 1

10.Meshsmooth_collapse_comparison_evermotion.jpg

A comparison of resource usage when rendering models with Meshsmooth modifier applied on them vs model after collapsing the stack to an Editable Poly. The models are copied as instances.

Editable splines – You can create dense 3d models using modifiers like Lathe, Sweep or the “rendering” option in the editable spline options. They will be saved in your project as smaller data in comparison to models collapsed to editable poly.

EXAMPLE 2

11.Editable_Spline_vs_Poly_comparison_evermotion.jpg
A comparison of resource utilization for editable spline with 3d options/modifiers applied (Lathe and Sweep) and after converting them to editable poly.

SUMMARY

When it comes to geometry optimization, the rule is simple – the less, the better.

  • Statistics information in Viewport and the “Faces” column in the “Select by name” window will help you find the geometry you need to optimize. Usually, most of the scene models are not heavy enough to invest time into optimizing them. Finding the heaviest and reducing the polycount should do the job.
  • Using instances is one of the most efficient and easy ways of quickly reducing the polycount of a scene. Some render engines, like Vray or Mental Ray, have implemented tools (mr Proxy, VrayProxy) which combined with the “instances” option will allow you to optimize the scene even more. We will cover them in the next parts of this guide.
  • Using optimization modifiers can be time consuming at first, but after some time you will find the settings that work for you. If you work on a repetitive kind of projects like architectural visualisations, you will be able to create your own library of optimized models.
  • Planes with pre-rendered textures are a good way to reduce the render time and resources demand. They work the best for reflections and objects which are far away from the camera, thus will be seen from a similar angle regardless of the camera location. In case of stills the time needed to create and render them might not be worth the effort, but when you render an animation with many frames, the planes can make a big difference.
  • Editable splines are a 3ds Max tool that can help you create large geometry which will not affect your scene size, especially when you work on architectural visualisations. Their level of detail can also be modified depending on given needs.

It is good to apply all of those optimization techniques as a part of your workflow as you work on your scene rather than attempting to optimize it when the scene is already finished and the final render times turn out to be too high. In the long run, such workflow can save you lots of time and money.

Please consider all those methods as suggestions only. Their effect may vary depending on your scene setup, plugins and the render engine you use. It is best to run a test of several frames of optimized scene to check the effect before the final render.

This article originally has appeared on GarageFarm.NET.

Sources

  • Autodesk Knowledge Network
  • Own experience

Links

Hardware used for rendering

  • Intel Core i7 -3770K 3.50 GHz, 16GB RAM

Credits

  • Author: Michal Mos, GarageFarm.NET
  • Editing: Tomek Swidzinski, Lucas Bazyluk
  • Models of cars used in the tests: Marek Rybacki
  • Models of trees: Evermotion