Abhishek Venkatesh (venky@gatech.edu)
2000-2004(BE): Netaji Subhas Institute of Technology (formerly D.I.T)
2004-2007: Microsoft India R&D (Services for UNIX)
2007-:(MS)Georgia Institute of Technology
2008: Electronic Arts (Summer Intern)
Courses at Gatech
Fall 2008
1) Advanced Operating Systems.
2) Design and Analysis of Netowrk/Router Algorithms and Hardware.
3) Masters Project: Fluid Simulation under Prof Jarek Rossignac.
Spring 2008
1) 3D Complexity
2) CUDA programming
3) Theory and Algorithms
4) Masters Project under Prof Jarek Rossignac
Fall 2007 Courses
2) Inexpensive 6-degreee of freedom mouse for computers under Prof Jarek Rossignac (See Tetracker -->)
3) GPU programming for Video Games
4) Real Time Systems
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 Z-buffer, 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:GL-Hanging.zip
Technical Paper:GL-Hanging.pdf
2D 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
Inexpensive 6 degree of freedom input device.
video:
http://www.prism.gatech.edu/~avenkatesh3/specialproblem/tetraballMouse.avi
Technical Paper comming shortly(email me)
In 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/Graphics-7491-P2-Visibility/visibility.html
Technical Paper:Visibility.pdf
Email me for source code(VC++)
Oct,1st, 2007
Application: easy and fast creation of 3D
cartoon like objects and characters. The
user draws his intended shape and the
program interprets and presents him a
shape represented as curves which can
now be edited and expanded to 3D.
1) Identify All Loops in a user drawn curve
2) Cleanup the curve by removing manifold loop
3) Generate Point Cloud.
4) Perform Delaunay triangulation.
5) Apply Ball transform and bulge into 3D
Processing source code + Java files 3DSketch.zip
Technical Paper:3DSketch.pdf
Sept 21th, 2007
This a Opengl based 2 player, 3d ping pong game built on Ubuntu. Each player controls his shot using a Nintendo wiimote. The real-time 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:Wii-3dtt.pdf
For the exact problem description refer to the following link:
http://users.ece.gatech.edu/~lanterma/mpg/hw/ece4893hw5.html
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)
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
1) Intersection of line segment with
a triangle.
2) Intersection of triangle with a triangle
3) Calculate the union, intersection and
difference of 2 triangles.
The problem seems trivial but it can get complicated for boundary conditions.
Link to Applet
Paper: LineTriangleIntersection
1) Multi-Corification: 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/en-us/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: F14XNA-MultiCore+Shader.zip
Please note: This game was not written by me. I have just added threads, locks and a shader effect for fun and of-course 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/f14-xna-game.html
Download:multi-Corification+PixelShader.pdf
Check the newsletter:
http://www.ece.gatech.edu/highlights/volume-04-issue-04/news/lanterman.html
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
the tcl example which demonstrates the power of ICP algorithm
in a better way.
Download VC++ code for ICP using vtk vtkICPCxx.zip
Sept 21th, 2007
Face detection and recognition is an active research topic in computer vision and image processing. This has wide range of applications which include security authentication and monitoring, new ways of human-computer interaction which will ultimately bring computer closer to human lives.This is my B.E final year project at, Netaji Subhas Institute of Technology(formerly D.I.T),:The algorithm combines a few independent research papers which deal with face detection and recognition, Image processing concepts and small tweaks. The below document describes the algorithm developed along with screen shots of the software captured live in action. (The document assumes prior knowledge about eigen -coefficients, Neural Networks and a few other concepts of Image Processing).
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
2004
In recent years the resolution of images that are obtained from satellites has increased manifold. Although this increase in resolution helps to classify images more accurately, it also requires substantial computational resources. In addition to the increase in resolution, satellite images can be collected using a pre-selected spectral band according to the intended target (like wheat regions, rice regions, urban areas etc). A single satellite image may consist of multiple numbers of bands which can be exploited by applying various Image Processing and pattern matching algorithms to do intelligent analysis of the images for the purpose of remote sensing.The following document describes the algorithm developed along with a walk through of the steps required for classifying the Satellite Image using the software.
Download:
Paper: SatelliteImageClassifier.pdf
Executable: SatelliteImageClassifier.exe (The executable can be run on Windows 98\XP\2000)
SampleSatelliteImage.jpg (sample satellite image used in the walk-through of the software)
Image processing is the art and science of manipulating digital images. It includes mathematics and aesthetics principles, and is an important component of Computer Graphics and its applications.ImageShop.exe is a Image Processing GUI application for Windows. It contains more than 30 Image Processing routines along with basic drawing tools for creating, editing, and retouching your images. Brief description of various features, screen shots and examples are given in the document in the download section. To try the texture effect, please unzip the Textures.zip under C:\
Download:
Report ImageShop.pdf
This is an 2 player 3-D game developed using OpenGL and VC++ 6.0. The character(scorpion) was created using 3D Studio Max. The moves are not smooth enough and there is no sound. I hope to improve this game in my free time. Currenlty it includes kicks, punches, jump, jump kick\punch and special power(spear to pull the other person closer).
Download:
Moves:
Player1 Player2
move left: A move left: left arrow
move right: D move right: right arrow
move down: S move down: down arrow
move up: W move up: up arrow
Kick: U Kick: NUM PAD 9
Punch: T Punch: NUM PAD 7
Jump left: Q Jump left: NUM PAD 1
Jump Right: E Jump Right: NUM PAD 3
Throw Spear: B Throw Spear: NUM PAD 2
you can press kick\punch while in air
Change view(camera) using F2