homepage computer graphics short film photo gallery
PROJECTS
Look what C++ can do!
A clip from my final project in the physically based animation class (Spring '08) at Clemson University. The particle system uses motion capture data to simulate the human walking.
Analysis of Stereoscopic Films using Eye Tracking:
Click here for more info on the study
Stereoscopic Production Pipeline:
In order to create realistic first person stereoscopic shots in my short film Fear, I implemented a custom stereoscopic mental ray shader and a MEL script. Using this custom pipeline, I was able to use motion capture data to create realistic first person shots in maya. Click here for more info on this shader and the mel script.
Cartman Renderer:
This is a global illumination renderer that I implemented. Click here for detailed info on this renderer
Wind Simulation Script:
Click here for implementation details
First Ray Tracer:
This is a C++ implementation of a ray tracer that I wrote from scratch, it does not make use of any third party APIs. The purpose of this ray tracer is purely pedagogical. It was great learning experience in understanding the theory behind Computer Graphics. Click on the above image to view the other test images. The source code is also available.
Supported Features:
Celu Holocaust:
This is a game that I developed in C++ using DirectX. The game is a Tile-Based Four Way Isometric Scroller. Eventhough, it is a completely sprite based game it sports a 3D look. Click on the image for a more detailed description.
The game features:
A Tile based map controlled by a customizable mapping matrix
A user controllable camera
Game objects that dynamically reorient themselves parallel to the plane of the camera (helps create the illusion of 3D using isometric sprites).
Non-player characters that are initialized to spawn at random points on the map.
Collision Detection against non-axis aligned quadrilaterals
Patrolling and Chasing AI algorithms.
Rendering Engine:
This is a rendering engine implemented in C++ using DirectX. It has support for scene level management of mesh objects. You can obtain the commented source code along with the executable by clicking on the above image.
Features:
i) Managed Mode: Batch Rendering across mesh boundaries at scene level, to minimize attribute state changes.
ii) Non-Managed Mode: Scene level rendering is disabled and each mesh manages its own rendering.
Render Man Shader:
This is a Renderman mosaic floor shader that I developed. A very detailed explanation about the development process can be obtained by clicking on the above image. You can also find the source code of the shader along with a video of the shader in action.
Click here for Development Description
Curves and Surfaces:
Heres a collection of demo applications that I wrote on curves and surfaces, click on the above image for more details. There are a couple of demos on surfaces and a couple on curves. I have also provided a brief explanation, to help those looking to get started on Bezier, B-Splines and NURBS. The demos are intended to help you visualize how these Curves and Surfaces behave. The source code for the demos are also available. The demos require DirectX 9.0c or above.
This is a non-API specific implementation of a Kd-tree Compiler, that compiles a Kd-tree for a scene from a list of scene objects. The commented source code is available. It can be readily plugged into any application to add hierarchical spatial partitioning support. The Kd-tree is implemented by deriving from a common tree base class, so other type of trees like quad trees and oct trees can be implemented easily by reusing a major portion of the code.
è Automatically calculates the Scene Bounding Box from the list of objects passed in as input.
è Supports collision queries against both Rays and AABBs.
This is a generic implementation of a BSP Node Tree compiler in C++. BSP node Trees are useful for traversing a scene to obtain a list of scene polygons in a back to front order, with respect to the camera position. Source Code is available in the above link.
Terrain Implementation:
This is basic implementation of a terrain in C++ using DirectX. The implementation supports walking on terrain and mouse look. There is also a very crude support for procedural terrain texture creation based on the height map value. The source code along with the executable is available.
Heres a short explanation on a couple of design patterns that I found to be useful while working on my games. The source code containing a basic implementation of these patterns is also available.
This is a java project that I worked on during my undergraduation. This project contains a reusable test application that takes its questions from an encoded flat-file. By changing this file, the test questions can be changed every time the test is taken. The source code is not available, but the application prototypes are available for download.
Heres the source code of a really simple Renderman shader that produces water like shakey reflections, thats animated on an inter frame basis. Almost all of the shader that I have come across only manipulates the object surface on an intraframe basis .i.e. the surface properties are calculated afresh for each frame. But this shader makes use of the built in time variable of the Renderman API to relate how the shader operates on adjacent frames in an animation.
© 2004-6 Celambarasan Ramasamy. All rights reserved.