PJ Ray Project Page
Contents |
Advanced Image Synthesis Project: PJRay
Project Description
We want to combine the projects of the two courses "Physically Based Simulation" and "Advanced Image Synthesis".
The scene: a wall of dice on a "hill", a ball. The ball is thrown towards the wall, destroying the wall (dice will fall down, roll down the hill). For the Physically Based Simulation part the scene should run in real time, implemented using opengl.
For the Advanced Image Synthesis part we implement a raytracer from scratch and render the scene using the raytracer instead of opengl, including things like reflections, refractions.
(Initial project description; results see below)
Progress
- 20.04.2006: A first version is now operationable
- 24.04.2006: A second picture
- 17.05.2006: Third picture (-> textures, refraction)
- 20.05.2006: Pictures (-> texture mapping on sphere, bump mapping on sphere)
- 22.05.2006: Picture (bump mapping on triangles)
- 24.05.2006: Wavefront *.obj ObjectLoader with Texture and kd-Tree
- 25.05.2006: Added a simple GUI to show rendering process
- 28.06.2006: Rendering of a rigid body simulation
Features
- Multiple light sources
- Primitives: sphere, triangle, cylinder, plane
- Basic transformations: translation, transformations using a matrix (e.g. rotation)
- Viewing specifications: eye and center (lookat) coordinates, up vector, fovy, aspect ratio (arbitrary resolution)
- Reflections (arbitrary recursion depth)
- Refraction, transparency (arbitrary recursion depth)
- Bump mapping support for sphere and triangle
- object loader (.obj files)
- k-d-Tree
- Texture support for triangle, sphere, objects
Source & Binaries
- includes pictures, samples and videos. Source code of the raytracer and the rigid body simulation (not finished, e.g. resting contacts are not solved yet)
Requirements Samples
- Windows System
Requirements for Physics Scenes:
- OpenGl graphic support
- Glut32.dll
Requirements for Develompent
All project are developed under windows using Visual Studio 2005 and Visual C++ 2005. You will need it if you want to compile all samples.
Further Requirements:
- Windows Platform SDK (not included in Visual C++ 2005 Express edition)
Requirements for Physics Scenes:
- OpenGl libraries and headers
- Glut libraries and headers
- PhysX Core (only for Ageia PhysX sample)
- Download: Ageia Support Page
Videos (Physic Simulation)
Our first video Here we player around with some mass-spring system. It is running stable with forward euler or leapfrog as numerical ode solver.
A Rigid Body Simulation with our own physic engine We have implemented a rigid body engine from the scratch. The video was created using our raytracer.
PhysX Rigid Body Simulation Rendered with our raytracer, but it contains some graphical bugs.
A OpenGl captured Video of Ridig Body with the PhysX engine We used the Ageia PhysX physic engine to set up a scene and render it. Unfortunately our raytracer is not fast enough to render a nice video with decent effects. So we decided only to render some key frames.