Abhishek Venkatesh (venky@gatech.edu)
20002004(BE): Netaji Subhas Institute of Technology (formerly D.I.T) 20042007: Microsoft India R&D (Services for UNIX) 2008: Electronic Arts (Summer Intern)
1) 3D Complexity 2) CUDA programming 3) Theory and Algorithms 4) Masters Project under Prof Jarek Rossignac Fall 2007 Courses 2) Inexpensive 6degreee of freedom mouse for computers under Prof Jarek Rossignac (See Tetracker >) 3) GPU programming for Video Games 4) Real Time Systems
 GLHanging(OpenGL)This project demonstrates the use of opengl model view transformations , projection, camera , texture mapping, fast rendering of large triangle meshes, animation, Minkowski Morphing, twisting deformation, picking using Zbuffer, shadows, lighting. The user interface is basic but within minutes we can create complex hierarchy of mobiles hanging as show in the accompanying image. The created scence can be saved and loaded.
See Video: http://www.youtube.com/watch?v=B9_PKaS5NJY Download VC++ Source Code:GLHanging.zip Technical Paper:GLHanging.pdf realtime 2D Fluid Simulation2D Fluid Simulation based on Delaunay Triangulation
paper: FluidSimulation.pdf
video: http://www.youtube.com/v/j3jQ9vbDP3A reduced quality and frame rate)
VC++ code: FluidSimulation.zip
TetrackerInexpensive 6 degree of freedom input device.
video: http://www.prism.gatech.edu/~avenkatesh3/specialproblem/tetraballMouse.avi tetracker.divx Technical Paper comming shortly(email me)
Fast Accurate VisibilityIn this paper we present a technique to compute the visibility of multiple disks from arbitrary view point. The location of disks is assumed to be fixed. One naive solution is shooting a ray from the viewpoint towards every direction (2*PI). But it suffers from inaccuracies which we point out in the paper. The method we describe in this paper computes accurate visibility and achieves this computation by shooting finite number of rays depending upon the number of disks. We also compare our approach with the naïve solution in terms of execution time and number of rays required to detect the exact visibility.
Applet: http://www.prism.gatech.edu/~avenkatesh3/Graphics7491P2Visibility/visibility.html Technical Paper:Visibility.pdf First Person Shooter using DirectXOct,1st, 2007
Application: easy and fast creation of 3D 1) Identify All Loops in a user drawn curve Processing source code + Java files 3DSketch.zip Technical Paper:3DSketch.pdf
This a Opengl based 2 player, 3d ping pong game built on Ubuntu. Each player controls his shot using a Nintendo wiimote. The realtime readings of the accelerometers is also displayed in red and blue(as shown in the screen shot). libwiimote is used for accessing the wiimotes from Ubuntu. video: http://www.youtube.com/watch?v=EZHkk5XU8AE Download code ( C code + opengl):Wii_table_tennis.zip Report:Wii3dtt.pdf Cell ProgrammingFor the exact problem description refer to the following link:
This program demonstrates the dma transfer between the ppu and spu on the cell beast(playstation processor). It also uses intrinsic extensions like spu_add, spu_mul, spu_extract for quaternion multiplication. A polymorphic Quaternion_vec union is defined which can be used as a vector, or reference individual elements like.w,.x,.y,.z. It also has a vector float array so the instances of the union can be even used as spu vectors.
Once the final quaternions have been computed the main ppu program organizes them into batches and sends it to another spu program to compute the corresponding rotation matrix from the quaternions. All data transfer between ppu and spu is done using mfc_get and mfc_put calls. To compile the code run make in the extracted directory( You will need the cell SDK from IBM). The zip file contains the complete source code including the makefiles
There are three source files. Hello.c: PPU source code
qu2R.c: SPU source code (generates the rotation matrix from quaternions) example1b_spu.c: SPU source code (computes quaternions) Delaunay Triangulation of point cloud, Smoothing and Refining (VC++ + OpengGL)
1) O(n) (expected)implementation of Delaunay Triangulation of point cloud
2) Voronoi Diagram
3) Alpha Shapes
Press 'V' switching between Delaunay, Voronoi and Alpha shapes Download VC++ Source Code Delaunay.zip
Computer Graphics(6491) P1
1) Intersection of line segment with 2) Intersection of triangle with a triangle 3) Calculate the union, intersection and The problem seems trivial but it can get complicated for boundary conditions. Link to Applet Paper: LineTriangleIntersection Multicore Xbox game1) MultiCorification: The game had the following three sub components: Collision Detection, Creating the enemy fighter jets and updating their position and the last is to show the explosion when a collision occurs. All these were being done by the main thread. I have created separate threads for each of them and set the processor affinity to use different cores on the Xbox. Some data was being shared between these components. I have added a simple locks to ensure the threads access the data structures sequentially to ensure integrity. 2) Shader: I have taken the basic shader code from http://msdn2.microsoft.com/enus/library/bb313868.aspx and added it to the game. The shader is applied to the background and clouds to give a wavy\rippple effect.Download Source Code: F14XNAMultiCore+Shader.zip
Please note: This game was not written by me. I have just added threads, locks and a shader effect for fun and ofcourse for the following assignment :http://users.ece.gatech.edu/~lanterma/mpg/hw/ece4893hw4.html.
The original game is available at http://aroganworld.blogspot.com/2006/09/f14xnagame.html
Download:multiCorification+PixelShader.pdf vtk: example for Iterative Closest Point Transform(ICP)
ICP is the standard algorithm to align 3d volumes. I searched all over the internet but could not find a working C++ example of ICP in vtk. So I decided to port the tcl example to C++. It is trivial to port once you figure out the tcl code, but there are many who do not want to learn tcl and want to stick to C++. The complete VC++ project can be downloaded below. I have oriented the cylinders in a different position than that in Download VC++ code for ICP using vtk vtkICPCxx.zip Sept 21th, 2007
Face detection and recognition As an example of new way of human interacting with the computer, a user can control the rotation of a virtual wheel (red black wheel on the UI screen shot) by simply looking into the webcam and changing his angle of eyes with respect to the horizontal. Download:RealTimeFaceRecognition.pdf
In recent years the resolution of Image processing is the art and Download: This is an 2 player 3D game Download:
