Make your own free website on

Jagannathan Sampath

Hi, welcome to my home page! I am a CG software developer at the Digital Animation Center of Pentafour Software and Exports Limited, Chennai, India. In association with Improvision Inc USA, Pentafour has developed a full length motion capture movie called Sinbad: Beyond the Veil of Mists. After the Star Wars hype subsides, Sinbad will release in theatres all over the US! We are now working on Mr. Right, again a full length motion capture movie based on the great Indian epic: Mahabharata. When completed, Mr. Right will be the first full length CG animated feature film from a totally Indian crew. I am looking foward to that!

My goal is to give our artists and animators at Pentafour tools to produce stunning CG work on screen!

From August 1997 to August 1998, I was a Production Software Engineer at EFX, a leading post production facility in Madras. As the sole member of their Research and Development Division, I designed and developed all their production software. All non-MAYA tools posted in these pages were developed at EFX. You can download some of these tools or enjoy online java demos. I am grateful to Mr. Sai Prasad, Director-EFX for allowing me to post the software developed at EFX.

I am also interested in creating realtime 3D applications for the web. Escher, a VRML + Java based realtime 3D design modeler is one such work. It was selected for the prestigious Web3D RoundUp at VRML99 (Feb 23 - Feb 26), Paderborn, Germany. Every year, the Web3D RoundUp features the best interactive 3D content available on the web.


N U K E:

N U K E is a plugin that allows Maya animators to use their Mouse as a timing tool. The animator begins by selecting one or more objects whose animation he wants to retime. Assume he has selected one such object (called Ball). Let Ball have keyframes at 1, 24, 48, 72 and 96. If he chooses to retime the animation segment (1, 24), the plugin sets the (MIN, MAX) range of a slider UI control to (1, 24). As the Animator drags this slider (ie) Scrubs, the scene updates in realtime to match the frame number returned by the slider. Suppose the time at which the animator visited the frames 1 and 24 were 0 seconds and 0.5 seconds respectively. If the animator is satisfied with the take, he clicks the Retime button. The plugin retimes the animation worth 1.0 seconds to 0.5 seconds. The altered keyframes are 1, 12, 36, 60 and 84. Note that the timing of the other segments remain unaltered.

The moment the plugin retimes an animation segment, it starts playing it. The animator is thus saved of typing playback ranges and can see the results immediately. Additionally, the animator can play all frames of the animation or play upto the retimed segment or stop the animation. If he doesnt like the retimed result, he can undo it too.

N U K E doesnt touch the controls (eg. Tangency) available through the Graph Editor (Animation Curves Editor) for retiming the animation. It just squashes / stretches keyframes based on how fast or slow the animator dragged the slider. You can think of N U K E as an assistant to edit the Dope Sheet. You Show it how to do with the Mouse and it does the rest.

Download N U K E here

The online documentation is here


F L I E S is a system for animating flying insects in Alias | Wavefronts MAYA. F L I E S is entirely written in the Maya Embedded Language (MEL). The workflow is very simple: the animator selects a Fly object and the Box object in which the flies will fly. F L I E S then generates unique random flight paths and assigns to each fly. Flies can be lauched in layers, made to fly fast or slow, jitter or glide smoothly. Everything happens in realtime -- the user can change any flight parameter and see its effect on the flies immediately.

Source code (MEL script) ;-) and documentation is provided. Download F L I E S
here The online documentation is here

If you are not MAYA ready,
Insectoids is a similar (but painful workflow-wise!) system for Alias Power Animator 8.X. It is written in Java and runs stand-alone on both IRIX and Windows NT.  


Insectoids is a system for animating flying insects in Alias Power Animator 8.X It is actually a random path generator; the random paths can be imported into Alias and assigned to 3D modeled insects as motion paths.  You can launch multiple insects, make them fly through precise locations, speed them up or slow them down and  make them flutter a lot or glide gracefully.

To have butterflies inside your web browser, try the Butterfly Applet

Insectoids is written in Java and runs on IRIX and Windows NT. Download Insectoids here


Escher is a system for modeling visually rich designs directly on the geometry of a 3D mesh imported from Alias Power Animator 8.x.  Escher does this by implementing a concept called Geometric Substitution pioneered by Dr. Andrew Glassner (now) of Microsoft Graphics Research Group.  It is very simple :  Any mesh is made of a collection of triangles.  To model a design on its geometry, you replace its triangles with a pattern.  This pattern is not a texture, but an another collection of triangles.  The resultant mesh thus has its integrity maintained and the arrangement of its triangles suggest a design to the eye.  The number of ways in which you can arrange a set of triangles is infinite and a pattern is defined as a particular arrangement of triangles -- therefore the user can create an infinite variety of patterns,  apply them to the mesh in layers and thus produce an infinite variety of designs.  

Escher is written in Java and runs on IRIX and Windows NT.  Download Escher


The VRML + Java demo of Escher was selected for the Web3D RoundUp at VRML99 (Feb 23 - Feb 26), Paderborn, Germany. Experience it


SGI Image Plugin reads and writes SGI (.rgb or .sgi) images inside Adobe Photoshop Version 4 and 5  on Windows 95 | NT.  As of this release, only images having a color depth of 8 bits can be read or written.  The plugin reads image data stored verbatim or compressed using the RLE scheme.  However, the plugin writes image data verbatim. 

Download the SGI Image Plugin here



XS is a simple but interactive eXplosion System for Alias Power Animator 8.x.  It reads the 3D mesh to be exploded from an SDL file.  The imported mesh becomes part of an Open Inventor scene graph.  An Examiner Viewer is fed this scene graph and it helps the user view the explosion.  The camera of the Examiner Viewer is matched with the camera read from the SDL file.  To explode the mesh, the user plants  a bomb near it.  She can control the position and strength of the bomb and observe the explosion change in real-time.  An editable gravity vector provides for physical realism.  XS outputs the explosion as a series of SDLs for Alias Renderer to render.   A static or an animated texture can be applied to the 3D mesh and XS makes sure that the exploding pieces take away the right texture chunk with them.  

XS is written in Java and uses Kahlua [a Java wrapper to the OpenInventor library] for the OpenInventor user interface.  With OpenInventor execution environments on IRIX and Windows NT (from TGS Software), XS can run on both these platforms.   


The 3D Mesh Library allows you to read a 3D mesh saved in Alias Power Animator 8.x in an OBJ or an SDL file.  You can create a mesh from scratch or modify an existing mesh and write it out to an OBJ file or an SDL file.  You can import the OBJ file in Alias for editing or pass the SDL file to the Alias Renderer for rendering.   When reading a Polyset from an SDL file, the reader  plucks the Polyset data and other information making up the SDL file is stored statically.  When writing, the polyset is plugged into the right place and padded by the previously stored information to complete the SDL file.  

The 3D Mesh library is written in Java and runs on IRIX and Windows NT.  I used this library for developing Escher and XS   


The Scratch Removal System removes straight, vertical or horizontal running scratches from a sequence of SGI images.  The user begins by specifying a window  enclosing the scratch and one of the following methods to remove the scratch.  

  • Linearly interpolate the pixels on the either side of the window to arrive at a color value for the (scratched) pixel inside the window.  The results look good on a static frame but you find the glass artifact when you view the sequence as a whole. 
  • When we analyze images scanned from the scratched film negative, we notice that the blue channel of the image is hit most.  The green channel comes in next while the red channel suffers least.   For most practical cases, the red channel can be assumed to be pure.  To restore the scratched pixel, we note the relationship of red to green and red to blue channels of the pixels on either side of the scratch window and  map this relationship to the (scratched) pixel inside the window.  This technique differs from the previous technique in that it does not create a color value for the scratched pixel from scratch (no pun intended!).  It uses the red channel of the scratched pixel to lift the green and the blue channels.  Though better than the previous technique, the glass artifact is not totally eliminated. 
  • A straight scratch is caused by a needle resting on the surface of the film as it whizzes past at 24 frames per second.   The needle acts like a spoon taking some   color information off the pixels at the area of contact.  If you look closely at the needle, you find that the tip looks like the letter U.  A lot of color information would be lost from the pixels in contact with the base of the needle.  Relatively less information would be lost from the pixels in contact with the sides.   By modeling the shape of the needle and lifting the color components of the pixel depending upon its point of contact with the needle, we can solve the problem

The Scratch Removal System (current version) is written in Java and runs on IRIX and Windows NT. 


Torrent is a resolution independent, script controlled, timeline based extensible 2D effects system.  Essentially it is a collection of Modifiers.  A Modifier takes an 8 bit SGI image sequence as input, modifies it in some way and produces an another 8 bit SGI image sequence as output.  The output of one modifier   usually becomes the input of another.  Thus several modifiers can be layered together to produce a complex effects shot.  The parameters of a modifier can be keyframed for finer control.  The following modifiers are available for Torrent as of now. 

Loads an input image sequence and maps it as the current output image sequence.

Pastes the input image sequence on the current output image sequence with a keyframable opacity value.   Used in combination with the Loader, the Paster becomes a Dissolver (that dissolves an input image sequence with the current output image sequence). 

Fades the input image sequence into a color and creates a fresh output image sequence.  The color and the amount of fading can be key framed.

Composites the input image sequence with the current output image sequence.  The matte may come from the input image sequence or the output image sequence.    


Flibber was designed for providing our artists with an interactive tool for viewing and analyzing an SGI image sequence on Windows NT.  When Flibber was designed,  there was no such tool on Windows NT.  Flibber is written in Java and can run on IRIX too.   Its GUI was developed using the Java Foundation Classes library to provide an uniform look and feel on both these platforms.   Flibber has the following features not found in other flipbooks: 

It is multithreaded and hence the user can alter the playback parameters [For example, frames per second] while the sequence is playing.   And once a parameter is altered, its effect can be immediately seen. 

Most flipbooks give the user one or two choices for the resolution at which the sequence will be played back.    In Flibber, you can set any resolution you want or choose from the list of choices (FILM, NTSC, PAL etc).  You can also change the playback resolution while the sequence is playing (refer previous feature). 


The SGI Image Library allows you to read and write SGI images in your Java programs.  You can read both 8 and 16 bit images whose image data may be stored verbatim or compressed using the RLE scheme.  Similarly, you can write 8 and 16 bit images with their data stored verbatim.   There are also convenience routines that convert an SGI image into a Java Foundation Classes (JFC) compatible image for interactive display and manipulation in JFC based Java programs.  

The SGI Image Library is written in Java and runs both on IRIX and Windows NT.    I used this library for developing the Scratch Removal System, Torrent and Flibber 

Last changed : April 12, 1999
Copyright (c) 1999
Jagannathan Sampath
All Rights Reserved
Dedicated to the luse