---
created_at: '2013-01-21T20:04:35.000Z'
title: Tron Legacy (2010)
url: http://jtnimoy.net/?q=178&utm_source=buffer&buffer_share=254f1
author: rsingla
points: 641
story_text: this is courtesy of Hilary Mason's twitter feed, @hmason.
comment_text: 
num_comments: 145
story_id: 
story_title: 
story_url: 
parent_id: 
created_at_i: 1358798675
_tags:
- story
- author_rsingla
- story_5093397
objectID: '5093397'
year: 2010

---
I spent a half year writing software art to generate special effects for
Tron Legacy, working at Digital Domain with Bradley "GMUNK" Munkowitz,
Jake Sargeant, and David "dlew" Lewandowski. This page has taken a long
time to be published because I've had to await clearance. A lot of my
team's work was done using Adobe software and Cinema 4D. The rest of it
got written in C++ using OpenFrameworks and wxWidgets, the way I've
always done it with this team ;) Uniquely however, Digital Domain's CG
artists were able to port my apps over to Houdini for further evolution
and better rendering than OpenGL could ever provide. Special thanks to
Andy King for showing me that what seasoned CG artists do at DD is
actually not so far off from what's going on in the Processing
community.

[Interview with GMUNK about the team's
process](http://www.inventinginteractive.com/2011/03/02/interview-gmunk/)

![](http://cdn.jtn.im/178/TRON_GFX_BR_08.JPG)

In addition to visual effects, I was asked to record myself using a unix
terminal doing technologically feasible things. I took extra care in
babysitting the elements through to final composite to ensure that the
content would not be artistically altered beyond that feasibility. I
take representing digital culture in film very seriously in lieu of
having grown up in a world of very badly researched user interface
greeble. I cringed during the part in Hackers (1995) when a screen saver
with extruded "equations" is used to signify that the hacker has reached
some sort of neural flow or ambiguous destination. I cringed for
Swordfish and Jurassic Park as well. I cheered when Trinity in The
Matrix used nmap and ssh (and so did you). Then I cringed again when I
saw that inevitably, Hollywood had decided that nmap was the thing to
use for all its hacker scenes (see Bourne Ultimatum, Die Hard 4, Girl
with Dragon Tattoo, The Listening, 13: Game of Death, Battle Royale,
Broken Saints, and on and on). In Tron, the hacker was not supposed to
be snooping around on a network; he was supposed to kill a process. So
we went with posix kill and also had him pipe ps into grep. I also ended
up using emacs eshell to make the terminal more l33t. The team was
delighted to see my emacs performance -- splitting the editor into
nested panes and running different modes. I was tickled that I got emacs
into a block buster movie. I actually do use emacs irl, and although I
do not subscribe to alt.religion.emacs, I think that's all incredibly
relevant to the world of Tron.

![](http://cdn.jtn.im/178/TRON_GFX_BR_07.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_BR_04.JPG)

HexVirus is a spherical map of the globe that features vector outlines
of the continents. These continent vectors are slowly eaten away by a
more hexagonal representation. Algorithmically, this is a path stepping
function which looks ahead for the closest matching 60-degree turns. The
HexVirus globe was used in the executive board meeting scene, and also
inside the grid as a visual aid in CLU's maniacal plan presentation. In
the board room interface, the globe element is surrounded by the lovely
work of my team.

![](http://cdn.jtn.im/178/TRON_GFX_BR_01.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_BR_02.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_BR_03.JPG)

The scoreboard was the first element I worked on. I created a
line-generator that produced bursts of lines which turned at adjustable
angles. The line generator had "radial mode" which arranged the geometry
in concentric circle form. This line generator was used to generate
generic elements and layers of style in different things, and is a GMUNK
favorite. At this point, I found myself moving to multisampled FBOs
because the non-antialiased polygons were just too ugly to work with,
and we needed to make film-resolution renders. In fact, this is the
highst res I've ever seen my apps render.

![](http://cdn.jtn.im/178/TRON_GFX_DG_03.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_DG_04.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_DG_16.JPG)

Fireworks, mmmm. I started with a regular physics simulation where a
particle has an upward force applied at birth, sending it upward while
gravity pulls it back down resulting in a parabola. I then added
particle-children, followed by various artistic styles, including what
our team has called "egyptian" across several jobs -- which is a
side-stepping behavior. We were trying to create fireworks that looked
enough like real fireworks but had interesting techno-aesthetic. As a
homage to the original Tron character Bit, we used icosahedrons,
dodecahedrons, and similar. I was disappointed that Bit isn't in this
one. After doing this simulation, I've grown more aware of how often
fireworks are used in movies.

![](http://cdn.jtn.im/178/TRON_GFX_FW_01.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_FW_03.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_FW_04.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_FW_05.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_FW_06.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_FW_poster.JPG)

For the portal climax, the TronLines app was used, but also apps like
"Twist" from our team's previous jobs. Once the look was mocked up by
gmunk, a houdini artist recreated the rig for deeper control.

![](http://cdn.jtn.im/178/TRON_GFX_PC_03.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_PC_04.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_PC_05.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_PC_06.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_PC_07.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_PC_09.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_PC_11.JPG)

I wrote a particle renderer that could make the head holograms slurp in
and out of the data discs. Special thanks to Keith Pasko for CLUing me
in about using exponential functions to create a sliding-gooey sort of
delay.

![](http://cdn.jtn.im/178/TRON_GFX_PC_12.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_RI_01.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_RI_03.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_RI_08.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_RI_poster.JPG)

When fixing Quorra, there was an element in the DNA interface called the
Quorra Heart which looked like a lava lamp. I generated an isosurface
from a perlin-noise volume, using the marching cubes function found in
the Geometric Tools WildMagic API, a truly wonderful lib for coding
biodigital jazz, among other jazzes. The isosurface was then drawn along
different axes, including concentric spheres. The app was mesmerizing to
stare at.

![](http://cdn.jtn.im/178/TRON_GFX_SS_04.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_SS_24.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_SS_25.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_SS_26.JPG)

![](http://cdn.jtn.im/178/TRON_GFX_SS_27.JPG)

After this project, I was fed up enough with wxWidgets and Carbon that I
was ready to author my own OpenGL based UI. The most important thing I
could use is a floating-point slider. I also got irritated with the way
the Carbon sliders would not slide all the way to the minimum and
maximum values. It totally messed with my zen thing. Also, after a job
like this, it's clear that a member of the Processing community working
within a CG community is greatly restricted by the differences of
realtime graphics rendering engines, and that probably messes with an
art director's zen thing.

"TRON: Legacy" © Disney Enterprises, Inc. All Rights Reserved.
