Everybody knows
it: To make an object reflective, You use a Raytrace Material in the
scene, and whamma!: Your render times explode, and You wait forever
for an image. The alternative, using a Reflect/Refract Map, usually
fails to do the job because the reflections aren't accurate enough,
resulting in simply wrong and illogical reflections.
To lower render
times with a raytraced scene, there's an easy albeit expensive solutions:
A dual-CPU setup, with two processors. This accelerates calculations
enormously. But, as stated before, it's expensive and therefore not
a viable solution to everybody.
There are, however,
also some other methods You can employ to cut render times when using
a Raytrace Material.
1. Disable Antialiasing:
Going
to the Material Editors and clicking on the "options" button
in the Raytrace Parameters rollout presents You with a new window with
a lot of options that can be adjusted for local (i.e. the currently
selected material) as well as global (all Raytrace Materials) usage.
One of these is Antialiasing, which defaults to being off in the global
scope.
The image above
shows a scene with 5 spheres (one in the middle, and 4 around that one),
a roof and a floor. On a 450MHz single-processor Pentium II with 128MB
of RAM, it took 2:28 (mm:ss) to render. This was with antialiasing enabled.
With antialiasing disabled, it only took 30 seconds. In the aforementioned
menu, You'll also find more options for self-reflections, and whether
atmospheric effects and fogging should be included in the reflections.
These are also options You can usually leave out of the calculation.
2. Enabling
Raytrace-Falloff
In the "Attenuation"
rollout, You can enable the falloff of the reflections. When disabled,
even objects at the most far reaches of Your scene will be reflected,
even if they won't show up any larger than a single pixel in Your reflection.
This is overkill, as You usually won't notice these reflections anyway.
So use that Falloff! There's multiple types of falloff. I usually use
the linear type, as it's the most simple to fathom: The value (X) for
"Range-End" dictates that all objects outside a radius of
X units will not be included in the calculation of the reflections anymore.
The "Range-Start" value dictates the radius at which objects
do get included in the calculations. Feel free to play around
with these values a bit, and You will notice that the falloff values
also affect the strength of the reflections in the material - they will
get darker). In our example, the example has been reduced to 20 seconds
using it though (image to the right).
3. Lowering the
Ray Depth
In the Global Raytracer
Settings dialog (in the Raytrace Parameters rollout), You can change
the Ray Depth. Defaulting to 9, the "Raytrace-ray" will bounce
around reflecting surfaces nine times, before it stops calculating for
that ray. This means, as seen in Images 1 and 2, that the spheres reflected
in the spheres reflected in the spheres reflected in the spheres....
are reflected in the spheres. Who needs that?!
More often than
not, this level of precision is not necessary - and lowering this value
to 1 reduces our render time to 9 seconds (image to the left). The absence
of inter-reflections is, however, obvious. The spheres only reflect
each other once, no more. So depending on Your scene this value can
be safely lowered, but You have to trade quality in for render time.
You should also keep in mind that this method is only of use, when there
are objects reflecting each other, or when one object is shaped in such
a way that it can reflect itself (for example, the inside of a tube).
With a single chrome sphere the Ray Depth has little to no effect, but
is the ideal situation to reduce this value to 1, as You don't have
a situation in which inter-reflections would play a role.
4. Excluding
objects from reflections
These can also
be set in the "Raytrace Parameters" rollout, in both a local
as well as a global scope. Sometimes it's not necessary to have every
single object be reflected in the reflecting objects. Excluding multiple
objects can lower the render time even more. In our chrome spheres example,
however, that would have little use.
Conclusion: In
this short example, we have reduced the render time from 2:28 to 0:09,
at a cost of the quality of the image. Depending on Your situation,
You would need to determine Yourself how much and to what extent You
would use the methods mentioned above to ring down render times.