Portfolio of Programming Projects
 
Spore Creature 2D-fier

An XML "recipe" for every Spore creature is stored on the Spore servers and is publicly accessible via the Spore API. The 2D-fier reads in this XML information and renders animated 2D creatures using Flash in a web browser.

2d creatures
In the figure above:
Top Left- 3D Spore creature
Bottom Left- Visualization of skin, limbs and part transforms
Top Right - 2D-fied creature!
Bottom Right - stylizing by swapping part palettes

                    
                     
The 2D creatures are articulated as ragdolls using hierarchy information available in the creature XML.
Here are some more 2D-fied creatures:
      

Procedural Texturing and Ambient Occlusion
Spore's "baking" technology


            

Player Driven Texturing
Creatures have a particle based texturing system where players get to select combinations of effects such as stripes, dots etc. of various kinds. The morphology of the player's creature, color and effect parameters chosen combine to give a wide variety of textures. Buildings and vehicles have a region-swatch based paint-by-numbers scheme. For one-click painting both systems have preset themes.

Check out
our Siggraph sketch on Player Driven Texturing!

Ambient Occlusion
128 shadows collected from lights distributed uniformly on a sphere




For buidlings and vehicles we distribute more lights in the upper hemisphere:

          


These are our first ambient occlusion tests. Presented here for historical interest
           

Baking
A key component of Spore is it's asset sharing functionality where players' creations can be easily "pollinated" across the web. Baking refers to the process of converting a compressed XML representation of a Spore asset into a fully textured, animated and optimized game model without interrupting game play. This includes a mesh simplification step, single compressed texture page generation with automatically generated UVs and ambient occlusion.


Filter Chains
Real Time Image Processing

a) film noir                                       b) original                                        c) watercolor

Spore's Filter Chain system is a script-driven, real time, image processing toolset that is used to shape the final look of every frame rendered in the game. Here is a collection of fun effects generated with this system:


Andy Warhol Print for Spore Creatures (compress, threshold, colorize and tiled rendering)
                    


Film Noir filter (threshold and mix in noise grain)



Oil Paint filter (image space lighting with 3 lights, use "strokes" normal map to distort the scene)


Paper Cut-out effect
Adding uneven white outline (edge detect + noisy distortion texture) to oilpaint effect. Inverted color.

             


Crayon Rendering (Change edge shape using distorter texture and add noise grain)

              

 

Depth of Field

After many iterations and approaches, I was able to develop a depth of field system for Spore that performed well on a wide variety of graphics hardware. I render the scene twice but split it into two parts in each render by offsetting the near and far planes of the viewer. The "far" scene is rendered into a texture, processed for atmospherics and blurring and composited with the "near" scene.

 

Buddy Browser

I developed the Buddy Browser to demonstrate the use of the Spore API. It is a neat little way of browsing Spore content by jumping from user to user through the social network of Spore "buddies". This app took 10 days to make from concept to deployment on Spore.com.

Try it!

Creature Battle

This is yet another demo app for the Spore API. This one was built entirely in just 1 day! It shows off the Spore creature stat service.

Try it!

Word Clouds

This is a work in progress application that fits images and words pixel accurately into a word cloud. You can try the prototype here. Click to add words.
     

Edit Capture GIFs
I wrote all the off-screen capture systems for Spore such as screenshots, thumbnails, super high res renders for marketing etc. One of the coolest captures in Spore is the Edit Capture. Every time a player makes or edits something in Spore, a 36 frame GIF summarizing their creative choices is automatically generated. Below are some examples. Our fans loved this system and made creative uses of it like re-enacting Pong and Tetris!
                              
                                      
Panoramic Screenshots

Another cool capture technology I added to Spore is a one button panorama capture tool. The panoramas can then be rendered in a Flash app I developed using Papervision 3D. Here's one such panorama:

Drag to rotate

      


Graduate Work at Carnegie Mellon University


exe doc                          exe doc


exe                     
          Unreleased Prototypes!!

Experimental Gameplay www.experimentalgameplay.com

1 person per game
1 game per week
Over 50 prototypes in a semester

BusinessWeek article
Gamasutra whitepaper
G4TV interview


Spherical Harmonic Lighting


Screen effects: bloom         Spec. masked Normal maps


Alpha ramps

Real Time Graphics: Cg shaders
Experiments in illumination, materials and visual effects using programmable shaders.

Made with OpenGL and Nvidia's Cg shader language.





zip
Subdivision Surfaces Tool:
A subdivision surfaces tool with multiple resolution control mesh editing and sharpness features at per vertex, edge and face level. Implemented for Doug James' Advanced Graphics class

avi

GodBlaster!
A two player, networked, real time strategy game where you battle it out over who God love's most! You have 3 types of units
1) Missionary - convert enemy to your religion
2) Suicide Bomber - destroy upon contact
3) Religious Leader - protect against conversion

This game was made in 3 weeks by Mr. Kyle Gabler and myself as our final project for James Kuffner's game programming class.


avi

The Merry MIDI Makers:
An interactive virtual reality experience where you use a baton to conduct an orchestra made of strange and wonderful instruments. A 3 week project with:

Seema Moorjani, Yuki Izena and Peter Tang. I was the modeler, animator and lighting artist for this project.

Panda3D - Game Engine and Tools
We developed a generic level editing toolset for Disney's Panda3D engine featuring editable motion curves, animation blending, particle systems tools etc. As an intern at Disney's Virtual Reality Studio I also had the opportunity to add Cg shader support to the engine. Panda is powerful, well supported and free! Check it out: www.panda3d.com

zip
Split-Screen Water Racing Demo
This demo was made for James Kuffner's Game Programming class and demonstrates data driven world-loading, a split screen two player mode and Cg shaders for rendering ocean water.

zip

Infinite Terrain Demo:
This demo "Wisp Munch" was made for James Kuffner's Game Programming class and has a looping navigable terrain with random power-ups "wisps" scattered all around that you must go around and collect.

 


avi1 avi2
Summersend:
An independent study exploring the application of improvisational acting to game characters. We built a procedural animated system that modified artist created animations based on properties like the character's status and relationship to other characters. We also implemented a textual conversation system, responses of which drove character animation. This work was further improved upon by Project Improv

Undergraduate Work at L.D. College of Engineering


avi

ISRO:
My undergraduate project as an intern at the Indian Space Research Center. A 3D visualization tool for digital elevation models generated from satellite imagery.
more
  
wmv  pdf

Facial Expression Synthesis for Entertainment Robots:
An enhanced version of the Keith Waters facial animation model with mouse-based expression creation and saving. I hooked up "Bezz" with a souped up A.I.M.L. based chat-bot that sent expression information to the 3D face along with textual responses in the chat window.

 

  
wmv  zip

Aerokombat 3D:
Pod-racer type game demo... with the "Screaming Engines Expansion Pack" that basically used mic input to drive the pods- the louder you scream, the faster it goes!

wmv

TrueShare:
An online stock portfolio management software. We tried to make a point by designing a super-slick interface for some rather boring business software. unreleased
Of Historical Interest
Aerokombat 2D:
My first real game.A top-down, 2D, two player aircraft dog-fighting game made in Visual Basic. I made this in high-school. and had the honor of working with the likes of Mr. Rahul Nanavati who did all the sprites... you will now enjoy his work on the latest Madden Football games. screenshots

Key:
zip, exe - a playable demo, game or tool
doc, pdf - a whitepaper or report about the project
wmv, avi - a screen capture of the project

* Get the DivX codec required to view some of the videos
* Get the
OpenGL dlls required to run some of the apps