Somebody should stickie this, it could come in handy.
I’ve read too many teams’ descriptions about how their room full of dual-core Xeons were taking forever on the rendering, they didn’t get it done in time, deadline trouble, etc. etc. etc., so I thought it’d be a good idea for a thread on optimizing render times.
I’ll eventually collect these and put them on my site or something.
Remember, faking an effect is often as good as using complicated calculations.
Consider using shadow maps instead. Raytraced shadows are very sharp, but they take forever. Shadow maps are flexible, and can be tweaked to fake a soft shadow. If not done right, however, the shadow can show jaggies (pixelation in the shadow map).
Consider not using raytrace at all. Reflections can be faked with a reflection map. Often, the raytrace effect isn’t significant enough to warrant the long render times. Sometimes, just turning up the specular can be enough to suggest reflectivity.
Sometimes, Max’s built-in materials insist on using raytracing. You can actually disable raytracing (and other fancy nonsense) in the render properties, preventing the renderer from doing any raytracing at all.
Keep your poly count low. Scenes usually don’t need hundreds of thousands of polygons. Too often we focus on the pretty 3D instead of concentrating on the overall effect or story. This is art, not a physics simulator.
Watch your subdivisions with MeshSmooth. Use just enough to get rid of most of the visible jagged edges. Take a few seconds to adjust the segments for primitives for minimal polygons.
To avoid harsh shadows with few lights, set the shadow density on the light lower.
To have lights cast light in only a small area, use Attenuation. Set the near and far attenuation to what you want so the light doesn’t try to brighten the whole scene.
Avoid using Omni lights to light the whole scene, unless you feel it’s justified. Spots and directionals have less area to illuminate, which helps when calculating shadow maps.
Some objects simply don’t need to be lit. You can go into an object’s property and turn off illumination, shadow casting, etc. You can also control this in a light’s parameters.
Sometimes, you don’t even need antialiasing. In mental ray, you can turn down the filter size, which will degrade mapping but speed up rendering. Use this if you’re doing something like camera motion blur.
You don’t need it in an AVA. Don’t do blurry reflections/refractions. Don’t use SuperSampling.
You don’t need hair in an AVA. Cartoonish solid hair (like in Second Life :P) works great. People shouldn’t have to stare at individual hair strands to see your animation skills. Get rid of the hair.
Most of the time you can use a few strategic Omnis (with attenuation and no shadows!) to simulate GI. People won’t know the difference.
I know this year was thinking green, and people probably used the built-in trees that came with Max. Use them sparingly. Having a complicated tree with individual opacity mapped leaves (and raytraced shadows) is guaranteed to slow you down. For further-away trees, use two intersecting planes mapped with a tree. That’s it: four triangles. You could even do the same for the tree’s shadow.
No hair. You could slap Max’s built-in grass onto some planes, but it looks very flat. You can opacity-map a plane with a grassy alpha map to give edges a fuzzier look.
Focus on what’s in the frame:
You only see what’s in the camera’s view, but other objects out of sight still drag your renderer down with things like shadow calculations.
It can be useful sometimes. Sometimes it’s easier to just have each computer render a different scene file or a range of frames. If you’re in the odd case of having more computers than frames (probably never), you can distribute mental ray buckets or have each computer render “stripes” and assemble them (look in your documentation).
The less particles the better. You probably don’t need 3D particles - try facing planes. I find that using large facing planes and mapping them with an opacity map works for many effects. It makes fantastic smoke at low poly-counts.
Hope this helps next year.