<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>EddieOffermann dot com &#187; visual effects</title>
	<atom:link href="http://eddieoffermann.com/blog/category/visual-effects/feed/" rel="self" type="application/rss+xml" />
	<link>http://eddieoffermann.com/blog</link>
	<description>The reel, resume and contact resource for Eddie Offermann, Pipeline TD, Visual Effects Scripter, CG VFX and Integration Artist</description>
	<lastBuildDate>Thu, 03 Jun 2010 05:51:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Transform matrices: using matrix multiplication for transforming coordinates in 3d space</title>
		<link>http://eddieoffermann.com/blog/2008/09/18/transform-matrixes-matrix-multiplication-transforming-coordinates-3d-space/</link>
		<comments>http://eddieoffermann.com/blog/2008/09/18/transform-matrixes-matrix-multiplication-transforming-coordinates-3d-space/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 07:09:39 +0000</pubDate>
		<dc:creator>Eddie</dc:creator>
				<category><![CDATA[geektalk]]></category>
		<category><![CDATA[visual effects]]></category>
		<category><![CDATA[visual effects pipeline]]></category>
		<category><![CDATA[3d Package]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[Coordinates]]></category>
		<category><![CDATA[Dramatic Transformation]]></category>
		<category><![CDATA[Dual Images]]></category>
		<category><![CDATA[Element]]></category>
		<category><![CDATA[Eye Camera]]></category>
		<category><![CDATA[Game Engine]]></category>
		<category><![CDATA[Left Eye]]></category>
		<category><![CDATA[Little Bit]]></category>
		<category><![CDATA[Matrix Multiplication]]></category>
		<category><![CDATA[Matrix Transformation]]></category>
		<category><![CDATA[Maya]]></category>
		<category><![CDATA[Relationship]]></category>
		<category><![CDATA[Relative Depth]]></category>
		<category><![CDATA[Scratch]]></category>
		<category><![CDATA[Translate]]></category>

		<guid isPermaLink="false">http://eddieoffermann.com/blog/2008/09/18/transform-matrixes-matrix-multiplication-transforming-coordinates-3d-space/</guid>
		<description><![CDATA[As I'd promised earlier, I'll be doing a quick run-through of how matrix multiplication can be used to rotate, scale and translate coordinates through 3d space.  First, though, I'm going to write a little bit about a tool I've been working on and just launched.  Sorry: the actual code for it is proprietary, [...]]]></description>
			<content:encoded><![CDATA[<p>As I'd promised earlier, I'll be doing a quick run-through of how matrix multiplication can be used to rotate, scale and translate coordinates through 3d space.  First, though, I'm going to write a little bit about a tool I've been working on and just launched.  Sorry: the actual code for it is proprietary, so I can't share it, but a brief discussion of the tool and what it needed to be able to do will help illustrate why matrix transformation is so important, even when you're not creating a 3d package from scratch or developing a game engine.</p>
<p><strong>I needed a way to quickly create a usable "right eye" camera to correspond to a "left eye" camera.</strong> I needed to be able to specify interocular distance (the distance between the left and right eye), as well as the convergence distance (where the eyes were focusing).  Our eyes naturally "converge" on objects that are in front of us - this is part of how we judge relative depth as this convergence affects the apparent relationship if the dual images our eyes perceive of *other* objects that are not at the point of convergence.  But that's a subject for another entry.</p>
<p>Anyway, the tool needed to be able to take a tracked "left eye" camera and apply that tracking data to generate the "right eye" camera using convergence and interocular information that was either derived from a track, noted on set, or dynamically assigned in Maya.  I wanted a right eye camera that could be created instantly and that would automatically follow any changes I made to the left eye camera.  If I smoothed that camera's path, I needed the right eye to follow suit, if I performed some dramatic transformation to that camera's path, perhaps extending its animation or re-animating an object that was part of the track while conforming the camera to that object's new path: I needed the right eye camera to keep up.  If a cg element was being added, moving toward the camera, I needed to be able to selectively lock the convergence to "look at" that object's depth without diverting the cameras to actually look directly at it - similar to changing the focus depth.</p>
<p>It's all about control and instantaneous response, with a camera whose path is known with some degree of certainty and a second camera that will follow that one in a way that will produce realistic cg and will enable artists to quickly and accurately duplicate the second camera position when the original interocular distance and convergence information is not known.</p>
<p><strong>Matrix multiplication, as a mathematical operation, isn't complicated</strong> - it's simple multiplication and addition, just repeated a number of times to generate the required result matrix. Since there are already more-than-ample tutorials online about how to actually *perform* matrix math (if you were cursed to do it by hand or develop procedures to support it in programming environments that don't already have matrix math support)  I won't be covering that in detail.  If my simple explanation doesn't quite do it for you, put "matrix multiplication" into Google if you're stumped.</p>
<p>I'm also going to avoid covering application in a specific language.  Most recently, I was doing this in MEL for a project I'll discuss in a moment, but there are Python libraries for doing matrix math, TCL/tk support for it, PHP and Perl support - you'll rarely find yourself with no built-in or easily-added matrix support, though you may want to write (as I did) a number of routines to make it a little more accessible.</p>
<p><img src="http://eddieoffermann.com/blog/wp-content/uploads/2008/09/01_translation.gif" alt="3D Translation Matrix" align="left" /><em>To the left, you can see the standard format of a translation matrix.</em>  This matrix (when multiplied by a coordinate matrix as represented on the right-hand side of the equation) will translate that coordinate into a new space, offsetting it by (tx, ty, and tz).  In the typical way of matrix multiplication, the element in each row of the coordinate matrix [x y z 1] is multiplied by a column of the translation matrix, as shown here:</p>
<p><img src="http://eddieoffermann.com/blog/wp-content/uploads/2008/09/02_translation.gif" alt="Translation Matrix Explained" align="right" />The rows of this matrix are then added together (in typical matrix multiplication fashion) to give the resulting (x',y',z') location.</p>
<p>But there's more to matrix transformation than simple translation.  If you wanted to find the new (x', y', z') for a translation like this one, simple addition would be enough.  But manipulating points in 3d space is rarely that simple!</p>
<p><em> Fortunately, it's just as easy to scale a point using matrix math! </em> Always away from the origin - we'll talk about how to scale a point away from somewhere other than the origin shortly. All matrix operations work with a similar setup, so you'll get used to seeing a similar notation here.  <img src="http://eddieoffermann.com/blog/wp-content/uploads/2008/09/03_scaling.gif" alt="Scaling matrix" align="right" /></p>
<p>This matrix is multiplied in the same fashion as the one we see above,  rows against columns, with row sums producing (x',y', z') for the new location.</p>
<p>I'll admit, though.  I don't use matrix math for scaling things very often.  You know what I do use it for, though?</p>
<p><em>Rotating a point in space with respect to the origin!  </em>Isn't that exciting?  I <em>LOVE</em> rotating things!  Well, ok, so it's not that big of a deal - but when we start combining some of these things, it can turn a complicated object tree in your scene into a relatively simple expression.</p>
<p>I have to warn you, though, rotation is a bitch. Ever notice how your favorite 3d software has this whole "rotation order" thing?  That's because if you rotate something 10 degrees in X, then 15 degrees in Y, it's not the same as rotating it in Y first and then in X.  There's also a different matrix for each axis of rotation, so let's take a look.   Same matrix math process as translation and scaling, but from this one we get rotation around the Z axis.</p>
<p style="text-align: center"><img src="http://eddieoffermann.com/blog/wp-content/uploads/2008/09/04_zrot.gif" alt="Matrix for z-Rotation" /></p>
<p>And now here:</p>
<p align="center"><img src="http://eddieoffermann.com/blog/wp-content/uploads/2008/09/05_xrot.gif" alt="Matrix for x-rotation" /></p>
<p align="left">That one rotates in X!  And lastly, as you'd expect, there's a matrix for rotating around the Y axis:</p>
<p align="left">&nbsp;</p>
<p style="text-align: center"><img src="http://eddieoffermann.com/blog/wp-content/uploads/2008/09/06_yrot.gif" alt="Matrix for y-rotation" /></p>
<p align="left"> Now, combining these matrix transformations together is as simple as multiplying the matrices with each other.  Now, you build the series of multiplications in order from right to left, but they're carried out from left to right.  For instance, for "zxy" rotation order, you would create an expression similar to the following: (I'll use MEL for this example: $xRot, $yRot, and $zRot are each 4x4 matrices that already contain transformation data for x, y and z rotation):</p>
<p align="left"><code>matrix $r[4][4] = $yRot * $xRot * $zRot;</code></p>
<p align="left">Provided proper matrix variables are supplied, MEL supports basic matrix operations with some limitations that you'll find as you stretch your legs.</p>
<p align="left">These can be strung together into much longer expressions generating much more complex matrices.  To rotate an object about a point other than the origin, for instance, subtract the values of that coordinate from the coordinates of the object (transform it in {-cx, -cy, -cz} where {cx,cy,cz} was the center to rotate it around), perform the rotation, the transform it back {+cx,+cy,+cz}.</p>
<p align="left">It may take some time learning to visualize and plan out a complex matrix transform - but what makes it powerful is the ability to combine any number of transformations into a single operation.  Some basic trigonometry and a well-applied matrix transform can accomplish all kinds of things!</p>
]]></content:encoded>
			<wfw:commentRss>http://eddieoffermann.com/blog/2008/09/18/transform-matrixes-matrix-multiplication-transforming-coordinates-3d-space/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Freakin Maya Transform Matrices</title>
		<link>http://eddieoffermann.com/blog/2008/09/12/fucking-maya-transform-matrices/</link>
		<comments>http://eddieoffermann.com/blog/2008/09/12/fucking-maya-transform-matrices/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 09:05:55 +0000</pubDate>
		<dc:creator>Eddie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[geektalk]]></category>
		<category><![CDATA[mel scripting]]></category>
		<category><![CDATA[visual effects]]></category>
		<category><![CDATA[visual effects pipeline]]></category>
		<category><![CDATA[Axis]]></category>
		<category><![CDATA[Convergence]]></category>
		<category><![CDATA[Conversion]]></category>
		<category><![CDATA[Decimal Number]]></category>
		<category><![CDATA[Equilateral Triangle]]></category>
		<category><![CDATA[Good Resources]]></category>
		<category><![CDATA[Line Of Sight]]></category>
		<category><![CDATA[Matrix Math]]></category>
		<category><![CDATA[Matrix Multiplication]]></category>
		<category><![CDATA[Orientation]]></category>
		<category><![CDATA[Pi]]></category>
		<category><![CDATA[Right Triangles]]></category>
		<category><![CDATA[Significant Digits]]></category>
		<category><![CDATA[Stereo Cameras]]></category>
		<category><![CDATA[Trig]]></category>
		<category><![CDATA[Vector]]></category>

		<guid isPermaLink="false">http://eddieoffermann.com/blog/2008/09/12/fucking-maya-transform-matrices/</guid>
		<description><![CDATA[Matrix math is a bitch.  And it's nigh impossible to find any good resources online.  Every "transform matrix tutorial" or "matrix multiplication lesson" online explains in detail how to multiply matrices together.
That hasn't been my problem for about 25 years now.  I get it.  This is how you multiply a matrix [...]]]></description>
			<content:encoded><![CDATA[<p>Matrix math is a bitch.  And it's nigh impossible to find any good resources online.  Every "transform matrix tutorial" or "matrix multiplication lesson" online explains in detail how to multiply matrices together.</p>
<p>That hasn't been my problem for about 25 years now.  I get it.  This is how you multiply a matrix with a vector. This is how you multiply two matrices together.  Neither of those things actually *accomplishes* anything if you don't know what the data in those matrices represents or what adding, subtracting or multiplying them would do.</p>
<p>My problems always center around something more like this: I have a point at &lt;10,20,30&gt; with orientation &lt;15,30,45&gt;.  Where is the point if I rotate it 15 degrees in y then translate it 100 units in the X axis?</p>
<p>What's screwed up is that I've so frequently solved this by doing trig that I know off the top of my head that pi/180 is estimated at 57.29577951.  Some people pride themselves on the number of digits they know pi to: I find the radian conversion number to be far more handy.  But for reference, pi to me is 3.14159265.  Note the 8 significant digits behind the decimal number: can you tell what decimal significance I grew up programming in?</p>
<p>The thing is, I'm working on a number of tools for managing stereo cameras in Maya. I need to quickly determine from the transforms of one camera (derived from a track of live footage) the location and orientation of a second camera if we know (or can estimate or otherwise determine) the interocular distance (the distance between the eyes)  and the convergence (how far in front of these cameras their line of sight intersects). Determining the angle of the second camera relative to the first is a straightforward bit of trig: think Pythagoras and arctangents and it'll come to you, or go find a good trig reference online - this part's easily found in a million places. Diagram that out for yourself, making an equilateral triangle with cameras at each base corner with convergence being the length of a line bisecting the triangle into two right triangles. If it's not immediately clear, work on it a bit: it might wake up parts of your brain that haven't seen the light of day since highschool.</p>
<p>The tricky bit is figuring out where a right-eye camera would be if it was offset along a line that isn't quite perpendicular to the left-eye camera.</p>
<p>I'm very nearly there - based on a given camera, I can find a point offset along that camera's X axis and apply a convergence factor to the resulting camera location by canting it back in along the Y.  But rotating a known transform matrix by an additional value in the y axis *before* doing that x translation... still fussing with that bit. I can make that happen less elegantly - by actually transforming nulls through space in Maya - but I'm searching for the magical transformation matrix that'll make it happen in a simple series of math statements.</p>
<p>It's late.  It'll probably be plenty clear to me in the morning.</p>
<p>UPDATE: Got it! Sleep did wonders - my tired brain just didn't quite get the matrix arrangement right before.  I'll write an entry this weekend covering concatenated matrix transforms.  Damn handy.  Damn powerful.</p>
]]></content:encoded>
			<wfw:commentRss>http://eddieoffermann.com/blog/2008/09/12/fucking-maya-transform-matrices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Improving tracking/matchmoving on motion blurred footage</title>
		<link>http://eddieoffermann.com/blog/2008/06/20/improving-trackingmatchmoving-motion-blurred-footage/</link>
		<comments>http://eddieoffermann.com/blog/2008/06/20/improving-trackingmatchmoving-motion-blurred-footage/#comments</comments>
		<pubDate>Fri, 20 Jun 2008 11:12:47 +0000</pubDate>
		<dc:creator>Eddie</dc:creator>
				<category><![CDATA[geektalk]]></category>
		<category><![CDATA[visual effects]]></category>
		<category><![CDATA[Crosshair]]></category>
		<category><![CDATA[Fincher]]></category>
		<category><![CDATA[Hd]]></category>
		<category><![CDATA[Lighting]]></category>
		<category><![CDATA[Mann]]></category>
		<category><![CDATA[Matchmoving]]></category>
		<category><![CDATA[Motion Blur]]></category>
		<category><![CDATA[Ntsc]]></category>
		<category><![CDATA[Personal Projects]]></category>
		<category><![CDATA[Resolution]]></category>
		<category><![CDATA[Shutter Speeds]]></category>
		<category><![CDATA[Skin Blemishes]]></category>
		<category><![CDATA[Smudges]]></category>
		<category><![CDATA[Stone]]></category>
		<category><![CDATA[Tracking]]></category>
		<category><![CDATA[Vfx Supervisor]]></category>

		<guid isPermaLink="false">http://eddieoffermann.com/blog/2008/06/20/improving-trackingmatchmoving-motion-blurred-footage/</guid>
		<description><![CDATA[Read this question on cgtalk tonight and thought I'd kick the question and my response out here since I've repeated much this same advice many, many times.
I use Boujou for matchmoving but am tracking 640x480 camera resolution all of the time... I often have shots with handheld very shaky camera and motion blur. Boujou has [...]]]></description>
			<content:encoded><![CDATA[<p>Read this question on cgtalk tonight and thought I'd kick the question and my response out here since I've repeated much this same advice many, many times.</p>
<blockquote><p><font size="-2"><strong>I use Boujou for matchmoving but am tracking 640x480 camera resolution all of the time... I often have shots with handheld very shaky camera and motion blur. Boujou has trouble tracking it. Is it just that there's to much blur/shakiness or would a higher camera resolution help?</strong></font></p></blockquote>
<p>and my response:</p>
<blockquote><p><font size=-2>Well, it looks like there are a number of issues to overcome:</p>
<p>First, the quality of the footage: handheld/shaky/moblurred footage is just awful to work with.  If you're just the artist, ie, you get what's handed to you: you work with what you have.  There's no telling Mann, Fincher or Stone they have to reshoot because your job is hard.  Their job is harder and it's them the client paid for, not you.  If it's for your own projects, ie, you're the director or at least the vfx supervisor on a smaller project: you have to take this into your hands (so to speak) and fix it before it gets past the camera!  Since you're working with 640x480 footage, I have to assume you can address it at this stage: these are obviously personal projects, not features or broadcast.  Fix the source first!  Don't shoot/allow to be shot footage that's going to suck to do post on!</p>
<p>Second, the resolution of the footage: Until you've worked in HD or film res, it's hard to appreciate just how much easier it is to work with on a tracking level.  A dot that is so small it'll disappear into noise at NTSC is an obvious crosshair at 2k.  Smudges on the wall and skin blemishes become usable tracking points.  If you have the option to work with higher resolution footage, insist on it!</p>
<p>Third: Lighting.  Again, this is only something you can influence if you're shooting your own projects, but remember to light for contrast not final levels.  More light means faster shutter speeds means less motion blur.  Light for the type of shadows you want, not how dark you want the scene when you're shooting for visual effects.  If your key and fills are set properly, you can always make the shot darker when grading.  This isn't as much of an issue when shooting film or deep color digital like the Arri Digital cameras since their shadow detail is good enough to boost for tracking detail.  But if you're shooting with consumer or prosumer cameras, you've got jack but noise in the shadows and the low light levels will mean excessive blur and bad noise overall.</p>
<p>Fourth: Manual vs Auto.  Boujou has a reputation as being the fire-and-forget solution for people that don't understand tracking.  The really hard shots are going to need manual solutions.  I don't mean hand-keyed (necessarily) but we're talking careful selection of usable tracking detail and improved setting of constraints.  Personally, I recommend SynthEyes - unbelievably good price point and an unbeaten feature set.  I know there are shots that people say they can click a button and get a solve on in Boujou that they can't get in SynthEyes, but the reverse is true far more often than it's not.  When the footage is hard to work with, throw away the automatic solutions.  Give them one run at it if you've got the time and processor power to spare, then move to something where you have some control.</p>
<p>Fifth: Tracking techniques.  Track the center, not the edges.  When doing a supervised track of moblurred features, follow the center of those blurs.</p>
<p>Sixth: Rendering techniques.  Moblurred footage is hard to render to match because what you have to match is a particular slice of time.  Think of it this way: you're placing tracking points on each frame, generally spaced apart at the rate of 24, 25 or 30 frames per second.  Between frame 1 and frame 2, there's a fraction of a second where anything could happen.  The camera could jump up a couple centimeters and back down for instance, before hitting frame 2.  This will show in the motion blur but not in the keyframes.  You can't easily fix for this!  (See tip 1).  More often, though, the problem is the phase of the render.  How to address this will depend on your renderer.  You may be able to adjust this in the renderer, you may have to adjust it in the actual animation keyframes depending on what 3d software you're working from.  Basically, you need control of the shutter timing and shutter offset: when in that frame it opens and how long it stays open.</p>
<p>For high end vs. low end facilities, #6 can often be the difference between them.  For all the skill you can buy from freelancers in tracking, modeling, animation, textures, etc: having the resources to do test renders and tweak that setting (and having someone on staff who can make sure you're addressing this) makes all the difference.</font></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://eddieoffermann.com/blog/2008/06/20/improving-trackingmatchmoving-motion-blurred-footage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Visual Effects Society Knows What to Call You</title>
		<link>http://eddieoffermann.com/blog/2008/05/24/visual-effects-society-call/</link>
		<comments>http://eddieoffermann.com/blog/2008/05/24/visual-effects-society-call/#comments</comments>
		<pubDate>Sat, 24 May 2008 00:06:06 +0000</pubDate>
		<dc:creator>Eddie</dc:creator>
				<category><![CDATA[kvetching]]></category>
		<category><![CDATA[movies and tv]]></category>
		<category><![CDATA[visual effects]]></category>
		<category><![CDATA[Accountant]]></category>
		<category><![CDATA[Animation Artist]]></category>
		<category><![CDATA[Animation Director]]></category>
		<category><![CDATA[Chunk]]></category>
		<category><![CDATA[Collective Efforts]]></category>
		<category><![CDATA[Effects Artists]]></category>
		<category><![CDATA[Eric Roth]]></category>
		<category><![CDATA[Exec Director]]></category>
		<category><![CDATA[Important People]]></category>
		<category><![CDATA[Lead]]></category>
		<category><![CDATA[Photographer]]></category>
		<category><![CDATA[Production Supervisor]]></category>
		<category><![CDATA[Sway]]></category>
		<category><![CDATA[Touchstone]]></category>
		<category><![CDATA[Visual Artist]]></category>
		<category><![CDATA[Visual Effects Industry]]></category>
		<category><![CDATA[Visual Effects Producer]]></category>
		<category><![CDATA[Visual Effects Production]]></category>
		<category><![CDATA[Visual Effects Society]]></category>
		<category><![CDATA[Visual Effects Supervisor]]></category>

		<guid isPermaLink="false">http://eddieoffermann.com/blog/2008/05/24/visual-effects-society-call/</guid>
		<description><![CDATA[So this week, the Visual Effects Society (VES) published the first ever set of guidelines for titles in the visual effects industry. They assure us that Many Very Important People have looked over the list and given it the thumbs up. 
 "Through these collective efforts, a harmonized master list of titles has been created [...]]]></description>
			<content:encoded><![CDATA[<p><span class="NEWSdefault"><font class="NEWSdefault" face="arial" size="2"><span id="intelliTxt">So this week, the Visual Effects Society (VES) published the first ever set of guidelines for titles in the visual effects industry. They assure us that Many Very Important People have looked over the list and given it the thumbs up. </span></font></span></p>
<blockquote><p><em><span class="NEWSdefault"><font class="NEWSdefault" face="arial" size="2"><span id="intelliTxt"> "Through these collective efforts, a harmonized master list of titles has been created that should be useful as a touchstone for all effects stakeholders," says VES Exec Director, Eric Roth. "We think it represents a major step forward for our craft in standardizing the use of titles in the credits process for effects artists."</span></font></span></em><br />
<span class="NEWSdefault"><font class="NEWSdefault" face="arial" size="2"><span id="intelliTxt"></span></font></span></p></blockquote>
<p><font size="2"><font face="arial">Of course, I'll interject here that if the Visual Effects Society actually carried any weight, someone would care. I'll further interject that if they'd actually attached descriptions to these titles it would mean a bit more - but since a good chunk of these are too nonspecific to mean anything (or at least vague enough to get people to fight over them) they've basically left us where we were before.  (Except that since my responsibilities shift and sway on a regular basis, I can dig through the list for suggestions of what I should be calling myself - like this weekend, I think I'm calling myself the Visual Effects Photographer) </font></font></p>
<p><span class="NEWSdefault"><font class="NEWSdefault" face="arial" size="2"><span id="intelliTxt">Questions regarding these guidelines can be addressed by calling the VES at 818-981-7861. Credits/Titles to be submitted in accordance with VES Guidelines follow after the cut:<br />
</span></font></span><span id="more-42"></span></p>
<p dir="ltr" style="text-align:left">
<p dir="ltr" style="text-align:left"><span style="font-weight:bold;font-family:'Arial'">PRODUCTION</p>
<p dir="ltr" style="text-align:left">
<table cellpadding="0" border="0" rules="all" style="width:100%;border:0pt;border-collapse:collapse;empty-cells:show;table-layout:fixed;border-style:solid">
<colgroup>
<col />
<col />
    </colgroup>
<tbody style="border:inherit">
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Senior Visual Effects Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Production Assistant</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Accountant</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Senior Animation Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Plate Supervisor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Additional Visual Effects Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Plate Producer</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Co-Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Editor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Associate Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Assistant Editor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Animation Director</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Previz Lead</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Animation Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Previz Artist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Senior Visual Effects Producer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Previz Editor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Producer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Previz Sound Editor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Associate Producer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Data Coordinator</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Production Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Data Assistant</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Coordinator</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Vendor Coordinator</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Assistant Coordinator</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Consultant</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
<p>Visual Effects Production Associate</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-bottom-color:#000000">
</td>
</tr>
</tbody>
</table>
<p dir="ltr" style="text-align:left">
<p dir="ltr" style="text-align:left"><span style="font-weight:bold;font-family:'Arial'">FACILITY [PRODUCTION]</p>
<p dir="ltr" style="text-align:left">
<table cellpadding="0" border="0" rules="all" style="width:100%;border:0pt;border-collapse:collapse;empty-cells:show;table-layout:fixed;border-style:solid">
<colgroup>
<col />
<col />
    </colgroup>
<tbody style="border:inherit">
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Senior Visual Effects Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>CG Supervisor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Visual Effects Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Compositing Supervisor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Additional Visual Effects Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Senior Visual Effects Art Director</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Co-Visual Effects Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Visual Effects Art Director</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Visual Effects Associate Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Concept Artist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Visual Effects Plate Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Storyboard Artist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Visual Effects Consultant</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Visual Effects Editor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Senior Animation Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Assistant Visual Effects Editor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Animation Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Projectionist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Senior Visual Effects Producer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Color Grading Artist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Visual Effects Producer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Color Grading Supervisor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Visual Effects Executive Producer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Previz Supervisor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Visual Effects Associate Producer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Previz Artist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Visual Effects Coordinator</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>I/O Supervisor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Production Associate</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>I/O Operator</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Production Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>I/O Neg Cutter</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Visual Effects Production Manager</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>I/O Coordinator</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Visual Effects Plate Producer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Scan/Record Technician</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Visual Effects Plate Coordinator</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>Still Photographer</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
<p>3D Stereoscopic Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000;border-top-color:#000000">
</td>
</tr>
</tbody>
</table>
<p dir="ltr" style="text-align:left">
<p dir="ltr" style="text-align:left"><span style="font-weight:bold;font-family:'Arial'">FACILITY [DIGITAL UNIT]</p>
<p dir="ltr" style="text-align:left">
<table cellpadding="0" border="0" rules="all" style="width:100%;border:0pt;border-collapse:collapse;empty-cells:show;table-layout:fixed;border-style:solid">
<colgroup>
<col />
<col />
    </colgroup>
<tbody style="border:inherit">
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>CG Sequence Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Lead Texture Artist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Digital Production Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Senior Texture Artist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Animation Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Junior Texture Artist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Animation Producer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Motion Capture Supervisor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Animation Production Manager</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Motion Capture Producer</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Animation Coordinator</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Motion Capture Engineer</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Technical Animation Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Motion Capture Technician</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Technical Animation Lead</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Dustbuster</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Digital Effects Producer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Lead TD</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Digital Effects Production Manager</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>TD</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Digital Effects Coordinator</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Assistant TD</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Character Setup Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Lighting Supervisor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Character Setup Lead</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Lighting Lead</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Character Rigging Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Lighting Artist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Character Rigging Artist</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>FX Animator</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Rigging Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Character Animation Lead</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Rigging Artist</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Character Animator</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Look Development Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Animation Lead</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Look Development Lead</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Animator</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Compositing Sequence Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Layout Supervisor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Compositing Lead</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Layout Artist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Compositor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Modeling Supervisor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Matte Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Modeling Lead</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Matte Painter</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Modeler</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Matte Artist</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Simulation Supervisor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Matte Painting Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Simulation Lead</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Lead Digital Matte Painter</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Simulation Artist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Senior Digital Matte Painter</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Matchmove Supervisor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Digital Matte Painter</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Matchmove Lead</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>R&amp;D Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Matchmove Artist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>R&amp;D Artist</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Rotoscope Supervisor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Senior Technical Developer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Rotoscope Lead</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Software Development Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Rotoscope Artist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Software Developer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Digital Artist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Systems Manager</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>CG Artist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Systems Coordinator</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Paint Supervisor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Systems Engineer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Paint Lead</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Integrators</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Paint Artist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Pipeline Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Digital Paint Lead</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Pipeline Engineer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Plate Restoration Supervisor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Shading Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-right-color:#000000">
<p>Plate Restoration Lead</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Shading Artist</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Plate Restoration Artist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Texture Paint Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Technical Associate</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Texture Lead</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Technical Assistant</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Texture Painter</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Render Coordinator</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Texture Paint Artist</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
</td>
</tr>
</tbody>
</table>
<p dir="ltr" style="text-align:left">
<p dir="ltr" style="text-align:left"><span style="font-weight:bold;font-family:'Arial'">MOTION/PERFORMANCE CAPTURE UNIT</p>
<p dir="ltr" style="text-align:left">
<table cellpadding="0" border="0" rules="all" style="width:100%;border:0pt;border-collapse:collapse;empty-cells:show;table-layout:fixed;border-style:solid">
<colgroup>
<col />
<col />
    </colgroup>
<tbody style="border:inherit">
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Capture Line Producer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Capture Camera Operator</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Capture Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Capture Pipeline TD</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Capture Producer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Capture Pipeline Engineer</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Capture Systems Technician</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Capture Stage Manager</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Capture Systems Engineer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Capture Coordinator</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Capture Systems Operator</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Capture Assistant</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Capture Real Time Operator</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Capture Production Assistant</p>
</td>
</tr>
</tbody>
</table>
<p dir="ltr" style="text-align:left">
<p dir="ltr" style="text-align:left"><span style="font-weight:bold;font-family:'Arial'">VFX PHYSICAL PRODUCTION UNIT</p>
<p dir="ltr" style="text-align:left">
<table cellpadding="0" border="0" rules="all" style="width:100%;border:0pt;border-collapse:collapse;empty-cells:show;table-layout:fixed;border-style:solid">
<colgroup>
<col />
<col />
    </colgroup>
<tbody style="border:inherit">
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Visual Effects Director of Photography</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Visual Effect Data Capture</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Visual Effects Photographer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Visual Effects 2nd Assistant Camera</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Visual Effects Camera Operator</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Visual Effects Camera Loader</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Visual Effects 1st Assistant Camera</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Digital Camera Engineer</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Visual Effects Survey Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Digital Camera Assistant</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Visual Effects Surveyor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
</td>
</tr>
</tbody>
</table>
<p dir="ltr" style="text-align:left">
<p dir="ltr" style="text-align:left"><span style="font-weight:bold;font-family:'Arial'">SPECIAL EFFECTS UNIT</p>
<p dir="ltr" style="text-align:left">
<table cellpadding="0" border="0" rules="all" style="width:100%;border:0pt;border-collapse:collapse;empty-cells:show;table-layout:fixed;border-style:solid">
<colgroup>
<col />
<col />
    </colgroup>
<tbody style="border:inherit">
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Senior Special Effects Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Special Effects Best Boy</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Special Effects Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Senior Special Effects Stage Technician</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Senior Special Effects Coordinator</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Special Effects Stage Technician</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Special Effects Coordinator</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Senior Special Effects Rigger</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Special Effects Technician</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Special Effects Rigger</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Pyrotechnic Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Senior Special Effects Workshop Technician</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Pyrotechnic Technician</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Special Effects Workshop Technician</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Head Special Effects Electronic Engineer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Head Special Effects Maintenance Engineer</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Special Effects Electronic Engineer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Special Effects Maintenance Engineer</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Special Effects Electronic Technician</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Head Special Effects Machinist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Head Special Effects Stage Technician</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Special Effects Machinist</p>
</td>
</tr>
</tbody>
</table>
<p dir="ltr" style="text-align:left">
<p dir="ltr" style="text-align:left"><span style="font-weight:bold;font-family:'Arial'">MOTION CONTROL UNIT</p>
<p dir="ltr" style="text-align:left">
<table cellpadding="0" border="0" rules="all" style="width:100%;border:0pt;border-collapse:collapse;empty-cells:show;table-layout:fixed;border-style:solid">
<colgroup>
<col />
<col />
    </colgroup>
<tbody style="border:inherit">
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Control Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Control Camera Assistant</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Control Producer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Control Previz</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Control Cameraman</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Control Technician</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Control Operator</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Motion Control Crane Operator</p>
</td>
</tr>
</tbody>
</table>
<p dir="ltr" style="text-align:left">
<p dir="ltr" style="text-align:left"><span style="font-weight:bold;font-family:'Arial'">MODELS / MINIATURES UNIT</p>
<p dir="ltr" style="text-align:left">
<table cellpadding="0" border="0" rules="all" style="width:100%;border:0pt;border-collapse:collapse;empty-cells:show;table-layout:fixed;border-style:solid">
<colgroup>
<col />
<col />
    </colgroup>
<tbody style="border:inherit">
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Models/Miniatures Director of Photography</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Models/Miniatures Supervisor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Models/Miniatures Producer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Senior Modelmaker</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Models/Miniatures Gaffer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Chief Modelmaker</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Models/Miniatures Coordinator</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Modelmaker</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Models/Miniatures Sr. Camera Operator</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Models/Miniatures Sculptor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Models/Miniatures Camera Operator</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Senior Plasterer</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Models/Miniatures 1st Assistant Camera</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Senior Painter</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Models/Miniatures 2nd Assistant Camera</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Graphic Artist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Models/Miniatures Camera Loader</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Creature Supervisor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Models/Miniatures Technical Apprentice</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Senior Creature Tech</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Digital Camera Engineer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Creature Tech</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Digital Camera Assistant</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Supervising Mechanical Engineer</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Models/Miniatures Stagehand</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Mechanical Engineer</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Models/Miniatures Production Manager</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Chief Scenic Artist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Modelshop Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Scenic Artist</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Models/Miniatures Effects Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Assistant Scenic Artist</p>
</td>
</tr>
</tbody>
</table>
<p dir="ltr" style="text-align:left">
<p dir="ltr" style="text-align:left"><span style="font-weight:bold;font-family:'Arial'">STOP MOTION UNIT</p>
<p dir="ltr" style="text-align:left">
<table cellpadding="0" border="0" rules="all" style="width:100%;border:0pt;border-collapse:collapse;empty-cells:show;table-layout:fixed;border-style:solid">
<colgroup>
<col />
<col />
    </colgroup>
<tbody style="border:inherit">
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Head Stop Motion Animator</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Stop Motion Lead Sculptor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Stop Motion Animator</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Stop Motion Sculptor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Stop Motion Assistant Animator</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Stop Motion Lead Model Rigger</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Stop Motion Puppet Coordinator</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Stop Motion Model Rigger</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Stop Motion Puppet Wrangler</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Stop Motion Lead Mold/Mould Maker</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Stop Motion Junior Puppet Wrangler</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Stop Motion Mold/Mould Maker</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Stop Motion Lead Armature Engineer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Stop Motion Camera Manager</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Stop Motion Armature Engineer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Stop Motion Camera Operator</p>
</td>
</tr>
</tbody>
</table>
<p dir="ltr" style="text-align:left">
<p dir="ltr" style="text-align:left"><span style="font-weight:bold;font-family:'Arial'">ANIMATRONICS UNIT</p>
<p dir="ltr" style="text-align:left">
<table cellpadding="0" border="0" rules="all" style="width:100%;border:0pt;border-collapse:collapse;empty-cells:show;table-layout:fixed;border-style:solid">
<colgroup>
<col />
<col />
    </colgroup>
<tbody style="border:inherit">
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Animatronics Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Animatronics Foam Latex Technician</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Animatronics Coordinator</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Animatronics Mold/Mould Makers</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Animatronics Designer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Animatronics Sculptor</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Animatronics Mechanical Supervisor</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Animatronics Seamstress</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Animatronics Technician</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Animatronics Hair/Fur Technician</p>
</td>
</tr>
<tr style="border:inherit">
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
<p>Animatronics Control Systems Designer</p>
</td>
<td style="padding: 0.00pt;border:inherit none inherit;border-left-color:#000000">
</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://eddieoffermann.com/blog/2008/05/24/visual-effects-society-call/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XML, Python and the Visual Effects Pipeline</title>
		<link>http://eddieoffermann.com/blog/2008/05/16/xml-python-visual-effects-pipeline/</link>
		<comments>http://eddieoffermann.com/blog/2008/05/16/xml-python-visual-effects-pipeline/#comments</comments>
		<pubDate>Fri, 16 May 2008 00:49:21 +0000</pubDate>
		<dc:creator>Eddie</dc:creator>
				<category><![CDATA[geektalk]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[visual effects]]></category>
		<category><![CDATA[visual effects pipeline]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[Animated Character]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[Animator]]></category>
		<category><![CDATA[Core Routines]]></category>
		<category><![CDATA[Description Formats]]></category>
		<category><![CDATA[Houdini]]></category>
		<category><![CDATA[Independent Objects]]></category>
		<category><![CDATA[Maya]]></category>
		<category><![CDATA[Modeling Team]]></category>
		<category><![CDATA[Nuke]]></category>
		<category><![CDATA[Pipeline]]></category>
		<category><![CDATA[Proprietary Tool]]></category>
		<category><![CDATA[Realflow]]></category>
		<category><![CDATA[Rig]]></category>

		<guid isPermaLink="false">http://eddieoffermann.com/blog/2008/05/16/xml-python-visual-effects-pipeline/</guid>
		<description><![CDATA[I was talking to a friend today about what I'm doing with regards to managing data through an animation pipeline using XML. The more I work with it and the farther I get into the project, the more flexible and powerful the whole thing seems.  Of course the goal to doing the implementation in [...]]]></description>
			<content:encoded><![CDATA[<p>I was talking to a friend today about what I'm doing with regards to <a href="http://eddieoffermann.com/blog/2008/05/14/xml-violence-solve-problem/" title="Yesterday's thoughts on XML and Python in VFX" target="_blank">managing data through an animation pipeline using XML</a>. The more I work with it and the farther I get into the project, the more flexible and powerful the whole thing seems.  Of course the goal to doing the implementation in Python is that virtually every software package in the vfx industry is python-friendly - so once the core routines are written, everything from <a href="http://www.thefoundry.co.uk/pkg_overview.aspx?ui=CBC2593A-2C9F-4EF9-84BE-C198B0171453" title="The Foundry's Nuke" target="_blank">Nuke</a> and pyShake (the python plugin for <a href="http://www.apple.com/shake/" title="Apple Shake" target="_blank">Shake</a> - if you haven't seen it yet, <a href="https://open.rsp.com.au/projects/pyshake" title="pyShake info page" target="_blank">check it out here</a>) to <a href="http://usa.autodesk.com/adsk/servlet/index?id=7635018&amp;siteID=123112" title="Autodesk Maya" target="_blank">Maya</a>, <a href="http://www.sidefx.com/" title="Sidefx Houdini" target="_blank">Houdini</a> and <a href="http://www.realflow.com/" title="Next Limit RealFlow" target="_blank">RealFlow</a> will be able to make use of them.  I think most places are doing that these days, with a few nods to TCL/tk here and there - but broadly supported scripting languages are King and open description formats like XML are Queen.</p>
<p>My friend marveled at how nice it would be if one day, a couple years from now, everything was able to talk that smoothly: that a character animated in Maya could be pulled into Houdini, for instance, as something other than an OBJ sequence or a separately rigged character that you had to tediously (or with a lot of specific coding) link to exported channel data.</p>
<p>I wonder if that interoperability thing will ever extend beyond each individual studio's implementation.  Everybody has a way of getting software to talk amongst themselves, some solutions being more elegant than others, but when you invest in creating something as elaborate as this it becomes your own proprietary tool.  If you develop a tool that an animator can take an animated character with a complex rig on it, arbitrarily select additional elements that were never *really* meant to be animated and animate them anyway, and the modeling team can modify the model and issue a new version of it - and the animation gets seamlessly transferred over to the new model, even able to be read into RealFlow, substituting a different set of low poly independent objects that are driven by the data in that XML file: you don't put that pipeline tool on the internet for everyone to download for free.</p>
<p>That tool becomes your secret weapon. As a studio with an investment in a powerful and unique proprietary tool, even charging for it may not mean as much to you as the edge you gain during the heat of production.</p>
<p>Being XML based and implemented in Python does put my current project a wee bit closer to being an open standard, though.  Even Shake will take Python scripts now - and they're really powerful in it and getting more so as development continues.  The readability thing for XML is a gigantic plus, and the way it represents data is great.  I can build a module that will write out the translation of a locator in both world and local space, as a baked set (every frame has a value) <em>and</em> as a set of keyframes (values only for those frames where the value was explicitly set by the artist), as well as screenspace UV values - so the same XML file could reconstruct a scene for a lighter to light and render from or another animator to tweak the animation curves, or for RealFlow to drive low-poly proxy objects with to disturb a drifting mist, or for a compositor in Toxic to link an effect to.  And it's all one XML file - not a half dozen formats (often multiple versions of each) and a hundred-unit sequence of geometry exports.</p>
]]></content:encoded>
			<wfw:commentRss>http://eddieoffermann.com/blog/2008/05/16/xml-python-visual-effects-pipeline/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>XML is like violence.  If it doesn&#8217;t solve your problem, you&#8217;re just not using it enough.</title>
		<link>http://eddieoffermann.com/blog/2008/05/14/xml-violence-solve-problem/</link>
		<comments>http://eddieoffermann.com/blog/2008/05/14/xml-violence-solve-problem/#comments</comments>
		<pubDate>Wed, 14 May 2008 07:36:31 +0000</pubDate>
		<dc:creator>Eddie</dc:creator>
				<category><![CDATA[geektalk]]></category>
		<category><![CDATA[mel scripting]]></category>
		<category><![CDATA[movies and tv]]></category>
		<category><![CDATA[visual effects]]></category>
		<category><![CDATA[Animation Data]]></category>
		<category><![CDATA[Curious Case Of Benjamin Button]]></category>
		<category><![CDATA[Houdini]]></category>
		<category><![CDATA[Lockdown]]></category>
		<category><![CDATA[Lunar Landing]]></category>
		<category><![CDATA[Nasa]]></category>
		<category><![CDATA[Pipeline]]></category>
		<category><![CDATA[Platforms]]></category>
		<category><![CDATA[Python Code]]></category>
		<category><![CDATA[Res Versions]]></category>
		<category><![CDATA[Security Doors]]></category>
		<category><![CDATA[Shuttle]]></category>
		<category><![CDATA[Writing Software]]></category>
		<category><![CDATA[Xml File]]></category>

		<guid isPermaLink="false">http://eddieoffermann.com/blog/2008/05/14/xml-violence-solve-problem/</guid>
		<description><![CDATA[I don't know where I read that, but it amused me and stuck in my head.
Hi!  I haven't been updating the vfx blog because I've been crazy busy.  Work has me deep in MEL and Python code most of the day, writing software to manage animation data, shuttle it this way and that and process [...]]]></description>
			<content:encoded><![CDATA[<p>I don't know where I read that, but it amused me and stuck in my head.</p>
<p>Hi!  I haven't been updating the vfx blog because I've been crazy busy.  Work has me deep in MEL and Python code most of the day, writing software to manage animation data, shuttle it this way and that and process it in interesting ways.  There's also the secret project that everyone isn't talking about but is quietly and excitedly waiting for (assuming they have any idea what it is).   We're on super-special-secret-lockdown at work, I'm guessing for the rest of the month.  I can scarcely go to the bathroom or grab a soda without passing through at least two security doors now.</p>
<p>Ok, I admit it, we've been contracted to create the lost tapes of the lunar landing.  Seems NASA has gotten enough flack about the original landing with people claiming they can prove it wasn't real that they've decided to create more proof to put the concerns to rest.</p>
<p>Or at least that's my amusing cover story until I'm allowed to talk about the other thing.</p>
<p>Between all the other little tasks, I'm in the process of working up a new tool for moving complex animation data around the pipeline.  The idea is to be able to read and write an XML file that contains as much data as anyone would care to put onto a model.  The model can be updated, have new elements added to or removed from it, all sorts of parts of that model can be animated at a whim by the artist and passed along to subsequent versions of the model, low res or high res versions, keeping all of the data intact, allowing for scaling of the animation data if it's transferred to a different model entirely, even passing along worldspace location and orientation of parts of the model (and maybe even eventually the full animation) to other platforms like Houdini and Realflow.</p>
<p>It's a little important for what we're doing on The Curious Case of Benjamin Button, but the existing tools I developed are working ok there (even if they're still a little limited and occasionally awkward - they're getting better on a weekly basis).  There's already a small test of what I'm doing in a broader sense: we have a particular element with a moderately complex rig on it that I'm publishing and subscribing the animation data on.</p>
<p>The Big Goal for this tool will be on T4 which we should be working on soon.  That'll be a huge show and we've got some really epic-scale work on it: most likely we'll be needing the more sophisticated animation tools for managing our data throughout the pipeline - so that's what I constantly keep in the back of my mind as I script the current version of the tools.  They need to serve the current project in the most complete way possible, and they need to be able to expand to do more than I'd currently dream of asking them to do.</p>
<p>It's a lesson that's come up recently because of a little tool I wrote that I've mentioned here before "CurveBaby" - CurveBaby allows me to take a scene with an animated camera and one or more animated objects, preserve the camera's relationship to one of those objects but change that object's animation - or, conversely, reanimate the camera and have the animation of the object automatically adjust to still look the same from the camera.  It's a powerful tool, and one that I can barely imagine how I'd get through half a day without using it at least once.</p>
<p>Big tools make big projects go a lot more smoothly.</p>
]]></content:encoded>
			<wfw:commentRss>http://eddieoffermann.com/blog/2008/05/14/xml-violence-solve-problem/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Relighting real-world imagery using interactively assigned surface normals.</title>
		<link>http://eddieoffermann.com/blog/2008/04/17/relighting-realworld-imagery-interactively-assigned-surface-normals-2/</link>
		<comments>http://eddieoffermann.com/blog/2008/04/17/relighting-realworld-imagery-interactively-assigned-surface-normals-2/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 07:15:47 +0000</pubDate>
		<dc:creator>Eddie</dc:creator>
				<category><![CDATA[geektalk]]></category>
		<category><![CDATA[shake tools]]></category>
		<category><![CDATA[visual effects]]></category>
		<category><![CDATA[3d Application]]></category>
		<category><![CDATA[Cg]]></category>
		<category><![CDATA[Color Image]]></category>
		<category><![CDATA[Compositing Application]]></category>
		<category><![CDATA[Compositing Tool]]></category>
		<category><![CDATA[Diffuse Lighting]]></category>
		<category><![CDATA[Farmhouse]]></category>
		<category><![CDATA[Gamma Correction]]></category>
		<category><![CDATA[Imagery]]></category>
		<category><![CDATA[Lighting]]></category>
		<category><![CDATA[Matte]]></category>
		<category><![CDATA[Pipeline]]></category>
		<category><![CDATA[Real World]]></category>
		<category><![CDATA[Surface Normals]]></category>
		<category><![CDATA[World Environment]]></category>

		<guid isPermaLink="false">http://eddieoffermann.com/blog/2008/04/17/relighting-realworld-imagery-interactively-assigned-surface-normals-2/</guid>
		<description><![CDATA[A few weeks ago, I posted a video covering the process of relighting rendered CG elements in a compositing tool like Shake using a surface normals pass.
Since that covered normals-based relighting of rendered cg elements, I thought I'd write an article that takes the concept a little farther and should stretch the reader's mind on [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago, I posted a video covering the process of relighting rendered CG elements in a compositing tool like Shake using a surface normals pass.</p>
<p>Since that covered normals-based relighting of rendered cg elements, I thought I'd write an article that takes the concept a little farther and should stretch the reader's mind on what's possible with this sort of approach.</p>
<p>The earlier tutorial covered something that naturally can be accomplished by going back to the original scene in your 3d application, adjusting lighting and re-rendering: but I think there are times when we want to adjust the lighting primarily in the compositing application but want more than some masked-off gamma correction, lifts and crushes.  So it's handy, then, to be able to apply an effect more similar to real-world lighting and that's what a rendered surface normals pass will enable us to do.</p>
<p>But what about real world imagery?  Can this same technique be applied to live action footage just as it can be on a CG element?</p>
<p>Absolutely!</p>
<p>You'll want to start with a few elements like the following:</p>
<p><a href="http://eddieoffermann.com/blog/wp-content/uploads/2008/04/farmcolor.jpg" title="An image of a farmhouse"><img src="http://eddieoffermann.com/blog/wp-content/uploads/2008/04/farmcolor.jpg" alt="An image of a farmhouse" /></a></p>
<p>A full-color image like the above picture of a farmhouse.  Under ideal conditions, you'd have an image with very diffuse lighting: something with a lot of bounce light or an exterior on an overcast day.  The idea here is that there are relatively few real shadows in the image.  The reality is that you won't have that very often and you'll have to use what you've got.  You may decide that the shadows that do exist need to be painted out before you continue.  I haven't done that for this example, but you'd be hard pressed to find a high end effects project that relit a real world environment and didn't remove the existing shadows at some point in the pipeline.</p>
<p><a href="http://eddieoffermann.com/blog/wp-content/uploads/2008/04/farmmatte.jpg" title="A matte for your farmhouse image."><img src="http://eddieoffermann.com/blog/wp-content/uploads/2008/04/farmmatte.jpg" alt="A matte for your farmhouse image." /></a></p>
<p>The above image is a matte of the farmhouse pictured above.  You'll probably need to generate something like this for your scene if you haven't already.</p>
<p><a href="http://eddieoffermann.com/blog/wp-content/uploads/2008/04/normalsphere.jpg" title="A polysphere with rendered surface normal data."><img src="http://eddieoffermann.com/blog/wp-content/uploads/2008/04/normalsphere.jpg" alt="A polysphere with rendered surface normal data." /></a></p>
<p>A surface normals pass of a polysphere with its shading set to be as unsmooth as possible.  I prefer this because I have a better feeling of where these surfaces are facing than I do straight from a sphere. It makes it like a special kind of color palette so I can perform the next step:</p>
<p><a href="http://eddieoffermann.com/blog/wp-content/uploads/2008/04/farmhousenormals.jpg" title="Farmhouse surface normals"><img src="http://eddieoffermann.com/blog/wp-content/uploads/2008/04/farmhousenormals.jpg" alt="Farmhouse surface normals" /></a></p>
<p>Next, I roto out a super-simple normal map of the surface in the image.  This can be more or less complicated, depending on how much detail you want in the relight. If the surfaces are softer, you may want to blur the resulting image some: this will soften the transitions. Pick colors for each of your surfaces from the faces of the polysphere normal pass, making sure to keep parallel faces the same color as you interactively create a normal pass for your real-world element.</p>
<p>Then, I set up the  OpaqueWhite OneLight Plus node as described in the <a href="http://www.shakeartist.com/shaketools/onelight1.html" title="Video about how to use the OW_OneLight+ node to relight an existing render." target="_blank">normals relighting video here</a>.  Shake users can <a href="http://www.shakeartist.com/shaketools/index.html" title="Download from the tools page." target="_blank">download the tool for free here</a>.</p>
<p>It'll look similar to this:</p>
<p><a href="http://eddieoffermann.com/blog/wp-content/uploads/2008/04/picture-11.png" title="Shake node tree for relighting live footage."><img src="http://eddieoffermann.com/blog/wp-content/uploads/2008/04/picture-11.png" alt="Shake node tree for relighting live footage." /></a></p>
<p>Over on the right, you see where I've created the interactive surface normals pass.  Those are groups with a few quickshapes and Mult nodes layered to create the interactive normals. In this case, since I didn't build out the ground and the barn next to the farmhouse, I chose to use the alpha from the interactive normals as the matte for the OW_OneLight+ node instead of the matte extraction I showed above.  A smoothly blended surface for the ground, and a couple blurred normal shapes for the trees could make this quite convincing.</p>
<p>On the left, the fade leading into the over and the mix node to mix the whole thing back together is just one way of tweaking the levels of relighting that you're doing.</p>
<p>I posted a really short render of the light source moving across so that you can get an idea of what can be done.  I kept it fairly subtle, and keep in mind that a little more work to create normals data for the ground, barn and trees would be required for a real project.</p>
<param name="movie" value="http://www.youtube.com/v/7tV_lDJb8iU"></param>  <embed src="http://www.youtube.com/v/7tV_lDJb8iU" type="application/x-shockwave-flash" height="350" width="425"></embed><br />
Moving footage naturally requires animated roto work to generate the interactive surface normals pass (keep the colors the same unless the element itself is moving!), and more complex objects with broader camera moves can be relit if you:</p>
<ol>
<li>Build 3d geometry to match the visible elements</li>
<li>matchmove  that geometry to match the footage</li>
<li>render a surface normals pass of those elements</li>
<li>use that rendered surface normals pass to relight the live footage.</li>
</ol>
<p>In a future installment, I'll describe a method to generate surface-normals data by painting a bump map onto an image.  In the meantime, I'll leave it as an exercise to the curious reader: how could you convert a simple greyscale height map into surface normals data in Shake?</p>
]]></content:encoded>
			<wfw:commentRss>http://eddieoffermann.com/blog/2008/04/17/relighting-realworld-imagery-interactively-assigned-surface-normals-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Crowd Generation Software?</title>
		<link>http://eddieoffermann.com/blog/2008/04/04/crowd-generation-software/</link>
		<comments>http://eddieoffermann.com/blog/2008/04/04/crowd-generation-software/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 08:33:39 +0000</pubDate>
		<dc:creator>Eddie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[geektalk]]></category>
		<category><![CDATA[mel scripting]]></category>
		<category><![CDATA[shake tools]]></category>
		<category><![CDATA[visual effects]]></category>
		<category><![CDATA[Camera Angle]]></category>
		<category><![CDATA[Camera Motion]]></category>
		<category><![CDATA[Cameras]]></category>
		<category><![CDATA[Crowd]]></category>
		<category><![CDATA[Element]]></category>
		<category><![CDATA[Fancy Animation]]></category>
		<category><![CDATA[Forests]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Matte Painting]]></category>
		<category><![CDATA[Pipeline Tools]]></category>
		<category><![CDATA[Plants And Trees]]></category>
		<category><![CDATA[Previs]]></category>
		<category><![CDATA[Realistic Behavior]]></category>
		<category><![CDATA[Relationship]]></category>
		<category><![CDATA[Sim Software]]></category>
		<category><![CDATA[Software Tool]]></category>

		<guid isPermaLink="false">http://eddieoffermann.com/blog/2008/04/04/crowd-generation-software/</guid>
		<description><![CDATA[I noticed the other day that my own 2d crowd generation software tool (DynaCyc) is ranking higher on google than Massive Software's listing for their incredible 3d crowd sim software.
In fact, if you google "Crowd Generation" there are two hits for my own websites before theirs comes up.
While DynaCyc is nowhere near as sophisticated for [...]]]></description>
			<content:encoded><![CDATA[<p>I noticed the other day that my own 2d <a href="http://www.shakeartist.com/shaketools/index.html" title="Crowd Generation in Apple Shake" target="_blank">crowd generation software tool</a> (DynaCyc) is ranking higher on google than Massive Software's listing for their incredible 3d crowd sim software.</p>
<p>In fact, if you google "<a href="http://www.google.com/search?q=crowd+generation&amp;ie=UTF-8&amp;oe=UTF-8" title="Crowd Generation" target="_blank">Crowd Generation</a>" there are two hits for my own websites before theirs comes up.</p>
<p>While DynaCyc is nowhere near as sophisticated for generating realistic behavior (it's more of a dynamic matte painting tool than a crowd generator - I created it for doing plants and trees to algorithmically make forests and such), it's pretty cool that I'm placing so well.</p>
<p>I really need to get the tutorial for my <a href="http://eddieoffermann.com/blog/wp-admin/Dynacyc%20-%20A%20Dynamic%20Matte-Painting%20tool%20that%20allows%20algorithmic%20propogation%20of%20multiple%20still%20or%20animated%20elements%20to%20form%20forests,%20crowds,%20or%20other%20aggregations%20of%20elements%20into%20complex%20multi-layered%20systems%20complete%20with%20a%20resulting%20z%E2%80%93channel." title="Retexturing using uv coordinate passes" target="_blank">uv remapping tool</a> recorded so that people can start using it.  At the moment, though, I'm working 12-14 hrs a day, 6 days a week scripting some fancy animation pipeline tools.</p>
<p>The funny bit is something I've come to realize of the last couple days: while I fully grasp the minutiae of what I do, some of what I'm doing just baffles me in the big picture.  I wrote a tool for "recasting" an animation from one space to another.  For instance, if there's an object in a shot done during previs, and that original object has a particular animation on it, and there's a camera with a camera angle that we like... but the object itself is given a different animation in our scene because it has to fit in the "world" relative to other objects and be moving at a certain speed, reach a certain place at a certain time... I can take the camera motion from the original animation and transform it to the new shot maintaining the relationship between the camera and the element... while replacing that element's animation.</p>
<p>That's tricky... but I know how to make it happen and I've embodied it in a deceptively simple tool.</p>
<p>Separately,  I worked out a method for stitching multiple animated shots containing a common object and many separate cameras together.  The object's motion remains constant, and the cameras follow it along the path.  Additionally, I developed a method for steering that element so that I can change its motion, adjusting the cameras to follow it.</p>
<p>That last one works using the first tool... so they end up all being connected to each other.</p>
<p>Once that happens, it feels like magic.  I no longer understand the big picture: how we now have nearly a hundred separate shots stitched seamlessly together, but with different animation... and still working with the cameras and tracked objects matching to the footage?   That starts to get away from me... I can conceptualize it as steps, as stages to reach a goal... I can break it down into its component parts: but the whole big process I understand only in that way: as big steps.  I don't hold the whole thing in my head at once, though I use the tools that make it happen several times a day.</p>
<p>What's also funny is how much I'm even animating at this point... and I'm no animator, believe me.  Let me write you a few expressions, though, and I can sometimes fake it.</p>
]]></content:encoded>
			<wfw:commentRss>http://eddieoffermann.com/blog/2008/04/04/crowd-generation-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visual Effects Crunch Time</title>
		<link>http://eddieoffermann.com/blog/2008/04/02/visual-effects-crunch-time/</link>
		<comments>http://eddieoffermann.com/blog/2008/04/02/visual-effects-crunch-time/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 09:08:51 +0000</pubDate>
		<dc:creator>Eddie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[geektalk]]></category>
		<category><![CDATA[mel scripting]]></category>
		<category><![CDATA[visual effects]]></category>
		<category><![CDATA[Accurate Location]]></category>
		<category><![CDATA[Animator]]></category>
		<category><![CDATA[Cameras]]></category>
		<category><![CDATA[Cg]]></category>
		<category><![CDATA[Common Element]]></category>
		<category><![CDATA[Continuity]]></category>
		<category><![CDATA[Crunch Time]]></category>
		<category><![CDATA[Driving A Car]]></category>
		<category><![CDATA[Elements]]></category>
		<category><![CDATA[Salt Flats]]></category>
		<category><![CDATA[Segment]]></category>

		<guid isPermaLink="false">http://eddieoffermann.com/blog/2008/04/02/visual-effects-crunch-time/</guid>
		<description><![CDATA[I am officially in crunch...
It's mini-crunch, though, because we're just working to get things together for the trailer.  Most of the staff isn't actually working overtime, but there's a few of us... the dynamics/fluid guys, an animator or two, the cg supe and me, piecing together the necessary bits to get the shots ready [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: 'Lucida Grande'; font-size: 14px" class="Apple-style-span">I am officially in crunch...</span></p>
<p><span style="font-family: 'Lucida Grande'; font-size: 14px" class="Apple-style-span">It's mini-crunch, though, because we're just working to get things together for the trailer.  Most of the staff isn't actually working overtime, but there's a few of us... the dynamics/fluid guys, an animator or two, the cg supe and me, piecing together the necessary bits to get the shots ready for the trailer.</span></p>
<p><span style="font-family: 'Lucida Grande'; font-size: 14px" class="Apple-style-span"></span><span style="font-family: 'Lucida Grande'; font-size: 14px" class="Apple-style-span">I wish I could be a little more clear on what exactly it is I'm doing... When the trailer comes out in a couple weeks I can at least indicate then what segment of the film I'm addressing - I'd rather leave that part as a surprise for when the trailer hits (not to mention that talking about things like that would get me in hot water).</span></p>
<p><span style="font-family: 'Lucida Grande'; font-size: 14px" class="Apple-style-span">In a sufficiently vague sort of way, I can say that there's a segment I'm working on right now that's around 76 shots long, each ranging from 50-300 frames, that has a common element that's travelling between them.  Our tracking team has been tracking that element, and its progress through each individual scene, for each of those 76 shots (and at least that many more as well that I'm not dealing with yet).</span><span style="font-family: 'Lucida Grande'; font-size: 14px" class="Apple-style-span"></span></p>
<p><span style="font-family: 'Lucida Grande'; font-size: 14px" class="Apple-style-span">The particular task I've been working on is basically a continuity script.  It's a MEL script that gathers all of that data: cameras, animated and matchmoved elements, and stitches them together end to end in a master shot.  This way, the element that's moving through the scene will maintain an accurate location relative to the CG environment.</span><span style="font-family: 'Lucida Grande'; font-size: 14px" class="Apple-style-span"></span></p>
<p><span style="font-family: 'Lucida Grande'; font-size: 14px" class="Apple-style-span">To coincide with what's happening in each shot, it's necessary on that big grandaddy master shot to make adjustments: turn something here, nudge something there... and that affects the path of that common element throughout all of the individual shots.</span><span style="font-family: 'Lucida Grande'; font-size: 14px" class="Apple-style-span"></span></p>
<p><span style="font-family: 'Lucida Grande'; font-size: 14px" class="Apple-style-span">Do you see where I'm going with this?</span><span style="font-family: 'Lucida Grande'; font-size: 14px" class="Apple-style-span"></span></p>
<p><img src="http://farm2.static.flickr.com/1348/687929629_150b9e9a3e_t.jpg" align="left" /><span style="font-family: 'Lucida Grande'; font-size: 14px" class="Apple-style-span">Basically, if we imagine that I'm talking about a man driving a car across the salt flats in Utah (not at all what's happening in this film), there are features on the horizon that we want to be consistently and realistically moving in relation to the view of the car.  If the driver swerves to miss a rock, we want to change the path he's taking across the salt flats (even though in the original plates, that driver would have been sitting in a stationary vehicle in front of a bluescreen, with some hydraulics underneath making the car tilt and sway to add realism).  Our view of the car from the camera should stay the same... Car and camera must maintain their relationship... but the position, speed, orientation, etc of the car and camera <span style="font-weight: bold" class="Apple-style-span"><span style="font-style: italic" class="Apple-style-span">combined</span></span> will need to change.  If there's a guy on one of those sail-carts out there, we need to make sure his path is realistic and that he's in the right place in the background of each shot...</span><img src="http://farm3.static.flickr.com/2265/2163719581_10c784e3b6_t.jpg" align="right" /><span style="font-family: 'Lucida Grande'; font-size: 14px" class="Apple-style-span"></span></p>
<p><span style="font-family: 'Lucida Grande'; font-size: 14px" class="Apple-style-span">Remember that the car, the driver, and the camera are often the only real things here... the sail-cart, other things on the horizon, in fact the entire salt flats... all are cg or augmented with cg.</span><span style="font-family: 'Lucida Grande'; font-size: 14px" class="Apple-style-span"></span></p>
<p><span style="font-family: 'Lucida Grande'; font-size: 14px" class="Apple-style-span">So I've been developing tools for funneling data from all of these shots... everything from camera data to object matchmoves, world-space offsets for each shot, and animation data... stringing it together into a seamless master scene, manipulating the paths and locations of elements in that master scene and transferring that data back into the individual shots.  If we need our hypothetical salt-flats driver to swerve this way and that across several separate shots, I'm making sure that it doesn't just "kinda look right" but that we can get that data integrated into the object and camera motion of several live camera plates.</span></p>
<p><span style="font-family: 'Lucida Grande'; font-size: 14px" class="Apple-style-span"></span><span style="font-family: 'Lucida Grande'; font-size: 14px" class="Apple-style-span">If somebody didn't ask me if I could do it, I'd probably have never thought it could even be done.</span></p>
<p><span style="font-family: 'Lucida Grande'; font-size: 14px" class="Apple-style-span"></span><span style="font-family: 'Lucida Grande'; font-size: 14px" class="Apple-style-span">If I'm kinda scarce around here in blogland, it's because I'm catching a much-needed nap in between long shifts.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://eddieoffermann.com/blog/2008/04/02/visual-effects-crunch-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shake Tools / Scripting</title>
		<link>http://eddieoffermann.com/blog/2008/03/16/shake-tools-scripting/</link>
		<comments>http://eddieoffermann.com/blog/2008/03/16/shake-tools-scripting/#comments</comments>
		<pubDate>Sun, 16 Mar 2008 08:49:23 +0000</pubDate>
		<dc:creator>Eddie</dc:creator>
				<category><![CDATA[geektalk]]></category>
		<category><![CDATA[shake tools]]></category>
		<category><![CDATA[visual effects]]></category>
		<category><![CDATA[Apple Shake]]></category>
		<category><![CDATA[Interface]]></category>
		<category><![CDATA[MEL tools]]></category>
		<category><![CDATA[Python Tool]]></category>
		<category><![CDATA[SynthEyes Sizzle]]></category>
		<category><![CDATA[Tools Download]]></category>

		<guid isPermaLink="false">http://eddieoffermann.com/blog/2008/03/16/shake-tools-scripting/</guid>
		<description><![CDATA[Spent most of the day today working on my website, building another tutorial, and refining the uv-pass retexturing tool.
I had a long time to wait on a couple renders that I'm using in the tutorial, so I kept tweaking the interface.  The original version of the tool was created about 3 years ago - [...]]]></description>
			<content:encoded><![CDATA[<p>Spent most of the day today working on my website, building another tutorial, and refining the <a href="http://eddieoffermann.com/blog/2008/03/13/retexturing-renders-uv-passes-compositing-shake/" title="Retexturing in Apple Shake using uv coordinate passes" target="_blank">uv-pass retexturing tool</a>.</p>
<p>I had a long time to wait on a couple renders that I'm using in the tutorial, so I kept tweaking the interface.  The original version of the tool was created about 3 years ago - and the underlying code hasn't changed.  I have gotten a little pickier about how my tools should work though.  If there's a process that I'm going to want to do most of the time I use the tool (whether it's a <a href="http://www.eddieoffermann.com/shaketools/index.html" title="Shake tools" target="_blank">Shake Tool</a>, a <a href="http://www.eddieoffermann.com/melgoodies/index.html" title="Maya tools in MEL or Python" target="_blank">MEL or Python tool in Maya</a>, a <a href="http://www.eddieoffermann.com/sizzlescripts/index.html" title="Sizzle Scripts for SynthEyes" target="_blank">Sizzle Script</a>, etc, that process should be built into the tool itself.  It saves time and annoyance and makes the tool complete.</p>
<p>As a result, I ended up with a tool I like even more.  Unfortunately... I won't be posting the real update tonight.  It's late, I haven't recorded the final version of the tutorial yet, and I still need to package the latest set of tools for download.</p>
]]></content:encoded>
			<wfw:commentRss>http://eddieoffermann.com/blog/2008/03/16/shake-tools-scripting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
