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

AIS-Raytracer2006

  • 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)

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.

Pictures

Refraction
Refraction
Bump mapping on sphere, textured triangles
Bump mapping on sphere, textured triangles
Texture and bump mapping on sphere
Texture and bump mapping on sphere
Texture and bump mapping on triangles
Texture and bump mapping on triangles
Simple GUI
Simple GUI
Reflection and Antialiasing
Reflection and Antialiasing
PhysX scene with 402 Cubes (~4800 Primitives)Ball hitting the second wallRender time: 30minutes
PhysX scene with 402 Cubes (~4800 Primitives)
Ball hitting the second wall
Render time: 30minutes
PhysX scene with 402 Cubes (~4800 Primitives)ExplosionRender time: 30minutes
PhysX scene with 402 Cubes (~4800 Primitives)
Explosion
Render time: 30minutes
PhysX scene with 402 Cubes (~4800 Primitives)CollapseRender time: 30minutes
PhysX scene with 402 Cubes (~4800 Primitives)
Collapse
Render time: 30minutes
PhysX scene with 482 Cubes (~5800 Primitives)Cube rain (different scene setup)Render time: 35minutes
PhysX scene with 482 Cubes (~5800 Primitives)
Cube rain (different scene setup)
Render time: 35minutes
Object Loader finished
Object Loader finished