-------------------------------------------------------------------------------------------- INTRODUCTION -------------------------------------------------------------------------------------------- This is a short demo that we (David Steiger & Daniel Kistler) have programmed for the Advanced Image Synthesis course at ETH Zurich. It is a small scene graph like framework that implements view frustum culling and supports objects with different levels of detail. There is a binary distribution containg the executable available for download as well as the whole source code. Additionally, there's an online documentation available for those who are interested. Enjoy David Steiger Daniel Kistler 07/01/2006 -------------------------------------------------------------------------------------------- REQUIREMENTS -------------------------------------------------------------------------------------------- The windows executable requires OpenGL (at least version 1.1) and the GLUT library (at least version 3). The demo runs at smooth 60 frames per second on a Intel Pentium (R) 4 CPU with 3.20 GHz, 1 GB of RAM and a GeForce 6600 GT graphics card.) It should also run on an arbitrary machine (1.2 GHz, 256MB RAM, very old graphics card), just do not expect a good framerate. -------------------------------------------------------------------------------------------- IMPLEMENTED FEATURES -------------------------------------------------------------------------------------------- - Small Scene-Graph-like framework - 2D Perlin Noise. - Procedurally generated objects. - Procedurally generated textures. - Keyframe interpolation with euler coordinates. - View Frustum Culling (spheres and boxes). - Level of Detail (different objects at different distances). - Monitoring mode (to visualize VFC and LoD) ------------------------------------------------------------------------------------------- EXPLANATION ------------------------------------------------------------------------------------------- Usage: windowed mode: demo.exe [WIDTH HEIGHT] (make sure to have a space between width and height.) fullscreen mode: demo.exe WIDTHxHEIGHT[:BPP][@REFRESHRATE] (make sure to have NO spaces.) Keys: [p]: start/stop playback of the demo. [m]: enter/exit monitoring mode (see explanation below). [c]: switch between different view frustum culling modes. - none: no view frustum culling applied. - sphere: view frustum culling using bounding spheres - bounding box: view frustum culling using bounding boxes. - mixed: view frustum culling using both bounding spheres and bounding boxes. [l]: turn level of detail on/off. [LEFT]: turn camera to the left during monitoring mode. [RIGHT]: turn camera to the right during monitoring mode. [UP]: turn camera upwards during monitoring mode. [DOWN]: turn camera downwards during monitoring mode. [HOME]: move camera forward during monitoring mode. [END]: move camera backwards during monitoring mode. [DELETE]: move camera to the left during monitoring mode. [PGDN]: move camera to the right during monitoring mode. [INSERT]: move camera upwards during monitoring mode. [PGUP]: move camera downwards during monitoring mode. [ESCAPE]: exit if in fullscreen mode. Monitoring mode: During monitoring mode, the camera may be moved around freely. The camera which captures the scene as well as its viewing frustum are displayed along with the bounding volumes of the objects. These volumes are colored differently depending on the outcome of the view frustum culling test (red: fully outside, green: fully inside, brown: partial). Whenever a group of objects is tested and the outcome is either fully inside or fully outside, no further tests are necessary for that group. Additionally, objects that have different levels of detail are drawn as if they were captured with standard camera belonging to the scene instead of the camera used to monitor the whole environment. Please note that you can always pause/resume playback of the scene at your own free will without leaving monitoring mode. Note: The keys will only work if the DISPLAY WINDOW is activate. If the CONSOLE WINDOW is active, nothing will happen. Source code: To compile the source code, just compile all the source and header files. Do not forget to link them with the correct libraries for OpenGL and GLUT and make sure that you also include the header files for these libraries during compilation. ------------------------------------------------------------------------------------------- RESSOURCES ------------------------------------------------------------------------------------------- * http://www.space.com (the only texture of the demo) * http://freespace.virgin.net/hugo.elias/models/m_perlin.htm * http://www.animeimaging.com/asp/PerlinNoise.aspx * http://www.xmission.com/~nate/glut.html (GLUT for Windows) * various sites on view frustum culling * various sites on level of detail (+edge collapsing)