Abhishek Venkatesh (venky@gatech.edu) 

  • Abhishek_Venkatesh.pdf
  • Publications
  • Projects
  • Gatech-College Of Computing

    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

    1) Computer Graphics

    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


  • GL-Hanging(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 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

    real-time 2D Fluid Simulation

    2D Fluid Simulation based on Delaunay Triangulation
    video: http://www.youtube.com/v/j3jQ9vbDP3A reduced quality and frame rate)


    Technical Paper comming shortly(email me)

    Fast Accurate Visibility

    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

    First Person Shooter using DirectX

    Download Binaries


    Email me for source code(VC++)

    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

    3D Ping Pong using Opengl and Nintendo Wiimotes

    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


    Cell Programming

    For 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
    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

    Multi-core Xbox game

    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

    Check the newsletter:

    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
    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

    Real Time Face detection and Recognition(2004)

    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.



    Satellite Image Classification(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.

    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 Tool for Windows(2003)

    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
    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:\

    Report ImageShop.pdf

    3D OpenGL Game(2002)

    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).


    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