The goal of this project is to create a ray tracer that renders PhysBAM
simulation data. To achieve this goal, a number of ray traceable objects are
supported by the renderer for various types of data, such as density fields and
temperature fields from smoke simulations, triangulated surfaces from rigid and
deformable body simulations, and levelset implicit objects. The core
ray tracing functionality is encapsulated in PhysBAM_Ray_Tracing and a basic set
of files from PhysBAM_Geometry.

The renderer is released in the form of PhysBAM_Ray_Tracing and the
project ray_tracing which currently only renders smoke simulation data and a
limited set of basic geometry. The full renderer will be released when a
complete version of PhysBAM_Geometry is available.

Usage
Once the renderer is compiled it can be used to directly render simulation data
from PhysBAM simulations along with a scene file. The scene file describes which
data from the simulation to render along with any new geometry explicit defined
for rendering only purposes.
The basic usage of the render is

$RAY_TRACING/ray_tracing <scene_file> <frame_number>

The scene file follows a basic structure sequentially listing option, shader and
geometry blocks to be rendered. Below is an sample list of the different
block. These are some of the blocks taken from the example at the bottom of the
page. For a complete listing of options see the source code in the ray_tracing
project.

The Camera block specifies the position, orientation and projective properties of
the camera. These values can either be manually entered or taken from the
file camera_script_render produced by the opengl view. The output frame size and
locations are also specified in this block.

Smoke data can be rendering by create an Object of the type Voxel_Data and by
specifying the location of the grid properties file and density information,
noting that %d is replaced by the frame number.