Trianglesceneviewer

From Manta

The Triangle Scene Viewer is a scene module accessible through bin/manta which loads a triangle mesh from a .obj file. For animation multiple key frames may be loaded from different .obj files.

Building

First enable the SCENE_TRIANGLESCENEVIEWER option in ccmake or from the command line in your build directory:

cmake -DSCENE_TRIANGLESCENEVIEWER:BOOL=TRUE ..

Then rebuild the source with make. The file lib/libscene_triangleSceneViewer.{dylib,so} should be built.

Running

Use the -scene option to select the module, be sure to use parentheses (in quotes) on the command line to specify options for the module.

bin/manta -scene "lib/libscene_triangleSceneViewer.dylib( -model file.obj )"
bin/manta -scene "lib/libscene_triangleSceneViewer.dylib( -model file.obj -DynBVH )"

Additional options:

bin/manta -scene lib/libscene_triangleSceneViewer.dylib
Make_scene args: 0
Valid options for scene meshViewer:
 -BSP   - use BSP acceleration structure
 -DynBVH   - use DynBVH acceleration structure
 -KDTree   - use KDTree acceleration structure
 -rgrid    - use single ray recursive grid acceleration structure
 -model    - Required. The file to load (obj or ply file)
             Can call this multiple times to load an animation.
 -save [filename]    - save acceleration structure to file (currently kdtree and bsp).
 -load [filename]    - load acceleration structure from file (currently kdtree and bsp).
 -animationLength    - Number of seconds animation takes
 -interpolateNormals - creates vertex normals if the data does not already contain vertex normals.
 -useFaceNormals     - force to use only face normals
 -smoothAnimation    - interpolates between keyframes.
 -triangleType       - Triangle implementation to use.
                       Wald_tri, KS_tri.
 -overrideMatl       - Force to use a material.
                       flat, eyelight, lambertian, phong, ambientocclusion
 -lightPosition      - Location of light.

To get the best rendering performance, use the following arguments to bin/manta:

 -scene "lib/libscene_triangleSceneViewer.dylib(-DynBVH -model YOUR_MODEL.obj -triangleType Wald_tri)" -camera "pinhole(-normalizeRays -createCornerRays)"

The -createCornerRays, and Wald_tri will allow for certain frustum-based optimizations to take place, such as frustum culling in the triangle intersection. And in ccmake, set MANTA_USE_DYNBVH_APPROXIMATE to OFF. This will result in a slower to build, but much higher quality BVH build.