Programming Projects

Over the course of my undergraduate study at BITS, I got the opportunity to work on quite a few interesting projects most of which were related to computer graphics and game development. Below this you'll find few of my projects. I really had great time working on them and I got to learn a lot of interesting aspects of CG with each project. This page is currently under development and I plan to add my remaining programming projects very soon. Here are my __CUDA__, __Animation__ and __Graphics__ projects.

AI based Tic-Tac-Toe Game

This game initially stared with a multiplayer tic-tac-toe game in which the players take turns to play the game. This was comparatively easy as just legal moves and win/draw situations had to be analyzed.

It was during my Data Structures and Algorithms course in my 3rd year that I came across the Minimax Algorithm. Further reading into this made me realize that I could use this new knowledge to make the computer play against a human! So after almost a month and numerous visits to my professor’s cubicle, here’s the result. The only assumption I make is that the player plays first as this drastically prunes the depth tree. This approach of Minimax Algorithm with alternate moves along with Brute Force actually made the computer invincible.

##### RayTracer v2.0

This was by far the most interesting and challenging project I have undertaken. The aim of the project was to build a raytracer from scratch. It should be able to compute lighting, shadows, reflections, refractions according to the depth specified by the user! This basic version of it took me almost a month and a half to get it up and running.

To make things more interesting, my professor asked me if I could import obects made in external modelling programs and render it out along with other objects. This turned out to be the most challenging part of the project and finally I was able to render a Knot made in 3ds Max raytracer.

Further work on this project: I plan to make this raytracer a multi-threaded one so that it can utilize the other cores of my processor and therefore drastically speed up rendering. Also, ability to use other computers over the network would turn out to be very useful.

__UPDATE:-__ I have implemented a CUDA Raytracer and later a Pathtracer. You can view them here.

NURBS Surface Manipulation

Non-uniform rational basis spline (NURBS) is a mathematical model commonly used in computer graphics for generating and representing curves and surfaces. It offers great flexibility and precision for handling both analytic and freeform shapes.

In this project, I worked on generating interactive NURBS Surfaces based on the Control Vertices specified by the user. Interactivity included the ability to able to add, remove or move the Control Vertices and thereby generating the corresponding NURBS Surface.