School work


BSc Final year (2009-2010)

Practical Project

My final year project is about creating a real-time soft bodies simulation. The current implementation uses a finite elements method (tetrahedra) in order to compute the physics. The algorithm used allow the bodies to recover even after large deformations: for example, flat or inverted tetrahedra are perfectly handled.

An elastic frog falling from a sphere Body with no elastic forces collapsing to a puddle Increasing the strength allow it to recover Tetrahedral structure

Advanced Image Synthesis

Glossy reflections Mandelbul Ambient occlusion Mandelbulb inside a Cornellbox

Real-Time Graphics

Shadows Screen-Space Ambient Occlusion

Procedural Visual Effects

This module focuses on the procedural generation of various effects and images.

A microspheres renderer has been implemented in order to render 3D Diffusion Limited Aggregation and Iterated Function Systems.

3D Manderlbrot Sierpinsky's pyramid 3D Diffusion Limited Aggregation 2D DLA Random terrain

BSc Second year (2008-2009)

3D Graphics Shading

In this module, we have to implement some rendering algorithm in order to get a high-quality pre-rendered images.

So far, I have implemented the most common light types (ambient, directionnal, point and spot) with sufaces shaders such as normal mapping or glossy reflections. Texture sampling is also available, using tri-linear filtering.
Projective texturing, wich allows to compute quickly some soft shadows or planar reflections, is supported. Some post-processing filters have been implementend, such as blur, bloom or Screen-Space Ambient Occlusion.

glossy reflections stained glass ambient light perlin noise cube mapped reflections

3D Graphics Programming

This module is about creating a real-time application using OpenGL.

My program uses xml files for loading a scene. It can handle lights, materials, indexed geometries and BSpline patches. Those objects can be transformed (translation, rotation, scale). Moreover, in order to keep the rendering efficient, frustum culling has been implemented, and works with spheres and boxes bouding volumes.

Texture mapping BSplines patch Torus using BSplines patches Frustum culling

Game Software Development 1

The aim of this module was to program a 2D game using the HAPI library. This library allows to change the screen buffer, to process basic input from keyboard and mouse, and to play sounds.

The goal of the game is to kill as many enemies as possible by crushing, throwing or eating them. The player controls only the hand of the monster, and all the possible actions are made using the mouse. The game features three types of enemies with different behaviour : riflemen, rocket launchers and mortars.

Download sources and executable

game menu enemies shooting at the player throwing cars at enemies throwing enemies

Game Software Development 2

This module continues GS1, but this time the project is a 3D game, programmed in C# using XNA.

This game is about killing a giant snowman using a rocket launcher, with the help of some AI allies. The snowman's size is proportionnal to his health, and he can heal himself by killing the player's allies.

snowzilla

Animation/Simulation Programming

The scenes are stored into a graph with various types of nodes (light, transformation, primitive...). Each node can be parameterized with constants or with controllers. Controllers are classes with a specific update function used for programming generic behaviours (kinematic motion, quaternion interpolation, etc.).

Simple scene Tornado animated using particles Tornado