|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 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
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
Download N U K E here
The online documentation is here
L I E S
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
To have butterflies inside your
web browser, try the Butterfly
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
The VRML + Java demo of Escher was selected for the Web3D RoundUp at VRML99
(Feb 23 - Feb 26), Paderborn, Germany. Experience it HERE:
SGI IMAGE PLUGIN:
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
PROJECTS [NON -
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
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.
3D MESH LIBRARY:
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
SCRATCH REMOVAL SYSTEM :
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.
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
- 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
- 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
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).
SGI IMAGE LIBRARY:
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