ART Ray Tracer

Ray Tracing is a global rendering technique for making relatively realistic images from 3D models. It traces the path that a light ray might take through the scene to discover what objects, lights, etc. affect the final color of a pixel. It is called a global technique because any part of the scene may influence to final value of any pixel via reflected rays of light. Ray tracing borrows from optics to model reflections, refractions and more.

Anim8or has an integrated ray tracer. You can use it to render movies and still images just like with the original scanline renderer and OpenGL shader renderer. All you need to do is select it from the Render→Renderer command dialog.

Anim8or's ray tracer can render all of its normal materials, of course. But it also can show reflections off of shiny objects and diffraction through transparent ones. The next sections will explain how to add these effects to your images.

Art Materials

You enable the additional capabilities of ART materials by adding certain attributes to normal materials. Attributes allow you to associate arbitrary values with a material. The ART renderer checks them when initializing a scene and chooses alternate rendering code when the right ones are present. You add attributes to a material by clicking on the "Attributes" button in the basic Material Editor. This section lists the main categories of ART materials.

The attribute class is the starting point for accessing ART materials. class is a string attribute which defaults to normal Anim8or materials when not present. Note that case is important in attribute names. Class and CLASS are names for different attributes and do not influence ART rendering. In addition to the normal parameters of Anim8or materials, individual classes may use additional attributes for more flexibility.

The main classes are anim8or (the default), glossyreflector, transparent and dielectric. Each is described in a following section.

Class anim8or

Class anim8or has an additional string attribute, specular. It determines the look of the specular reflection. There are 3 recognized values:

Below is an example of the three settings for the specular class. From the left they are phong, reflection and glossy. Ks is 0.5 and Roughness is the default of 32.

Class glossyreflector

This glossyreflector class is a simpler class that is similar to the anim8or class with the specular attribute of glossy. While the anim8or class is a little less accurate from a physical sense, glossyreflector attempts to follow the rules of physics a little more closely.

The glossyreflector class uses the Phong roughness value for the degree of glossiness. glossyreflector has one additional attribute:

Below are three glossyreflector spheres with roughness of 200, 1000 and 100000. You can still see quite a bit of graininess in the left sphere even though this image used 64 samples per pixel. Glossy surfaces require many more samples for high quality images. Also notice that there is no specular highlight from the infinite light source. Infinite lights don't represent real, physical entities. An area light would show a specular highlight however.

Class transparent

This transparent class is a simple model for diffraction of light through transparent materials. There is also a slight reflection off the surface. The amount of transparency is set with the normal transparency value for a material. It has one additional attribute:

Rendering transparent materials can take a very long time. Each primary ray (from the camera) can trigger tens or even hundreds of rays since each interaction generates up to two child rays, the reflected ray and the transparent ray.

The image below show 5 spheres with and IOR of 1.0, 1.1, 1.2, 1.3 and 1.5, and a transparency of 0.1:

Class dielectric

The dielectric class is a complex model that is closer to how light interacts with real transparent materials. It uses Fresnel equations to determine reflections and transmission parameters at each ray-surface interaction. As light travels through a dielectric material it is attenuated and gradually takes on the material's color. Thin sections appear almost colorless but thick sections can be quite dark. Glass is a dielectric which explains why a solid glass door looks clear from the front but looking into the edge can be dark green or gray. The dielectric class has two additional attributes:

The image below shows several spheres and a rectangular prism that are dielectrics with an IOR of 1.3 approximating glass:

Light Attributes

You can modify the look of area lights by changing the way that they are sampled with the following attribute on the light in a scene:

The image below has two area lights, the blue one (the yellow shadow) uses a regular sampler while the white light (which makes a blue shadow) uses the default multijittered sampler.

Ambient Occlusion

Ambient occlusion approximates light reflected from surfaces other than light objects. It adds a realistic aspect to soft shadows in corners and where objects meet.

You enable ambient occlusion in Anim8or by setting the Scene int attribute AmbientOccluder to 1. Together with the Global Lighting Parameters of Global Intensity and Ambient Intensity (accessible via the Settings→Lighting command) you can render realistic corner shadows such as shown below:

There are no lights in this scene. Only the color of the background was used as a source of light. The settings were: Global Intensity of 0.0 (equivalent to no lights used), Ambient Intensity of 3.14 (required for correct lighting using background only), the int Scene attribute AmbientOccluder with a value of 1, and 256 AA samples/pixel. Anti-aliasing must be enabled for Ambient Occlusion.

Ray Tracing and Anti-Aliasing

Ray tracing uses statistical sampling techniques to render global lighting, reflections, transparency, diffraction effects. High quality images require multiple sample rays per pixel. This, of course, means longer rendering times.

There is no single minimum number for a "good" image. You'll have to experiment to find what works for your scenes. Ambient occlusion using only the background color, as in the image above, can be particularly compute-intensive because light needs to be sampled from all directions. Here are three images of the same scene rendered with 4, 16, 64 and 256 samples: