Navigate back to the homepage

Quick Shows:Guardians of the Galaxy

Dhruv Govil
April 7th, 2017 · 4 min read

This post was originally part of my series on Python for Feature Film on my personal site, but is being ported here with minor changes. The dates have been adjusted to match release dates for the projects.

In this supplemental post, Part 6 of this series on Python for Maya, I cover the work I contributed in part to for shows I was crewed to for a smaller period of time.

Sometimes you get put on projects to float you between shows or just because they need someone for a short period to tide them over.

It’s usually not enough time to do much work but you can still often get to doing some interesting tasks while you’re on them. It’s hard to take on big projects, but I think it is a good time to shore up the loose threads from previous shows.

In this post, I hope to highlight some of the kinds of tasks that one can do when crewed to a project for a month or two.


Guardians of the Galaxy

In the first half of 2014, we had a lot of downtime between big projects. My friend and I were kept on in the department in Vancouver but went almost 6 months with no major projects.

Fortunately, one of the other studios on this show was struggling to keep up with the load so we managed to pick up some of the overflow work to get the results. Marvel really loved the results and this netted us more projects in the future.

A trailer for Guardians of the Galaxy

So what did we do here? Truthfully not a lot. We had a couple weeks for a bunch of shots at the end of the film. The real challenge here was that Marvel had us lock down our computers with very strict security measures.

This mean that it was harder for artists to receive their notifications on their main work machine via email. So the way around this was effectively building a highly customizable, air gap friendly RSS reader.

Artists and production staff could specify their exact filters, and the app would let them know as soon as there were things that needed their attention.

My one fun story from this time was, I was sitting at my desk after hours to work on some shots, and an old man walks by who was not an employee. This was very odd. Turns out, it was Clint Eastwood! We were simultaneously working on American Sniper, and he had decided to drop in for a review.


Posts in this Series:


Alice Through The Looking Glass

After Hotel Transylvania 2, I was between shows for a bit, so my manager put me on this show to lend a hand for a month

A trailer for Alice Through The Looking Glass

Sometimes when you join a show, all the people crewed are just pushed to the limit and a lot of processes start falling apart in terms of speed.

For example, processes that usually should take 5 minutes start crumbling under the weight of a lot of temporary hacks put in place and start failing or taking hours. This is really nobodies fault, it’s just the pile up of the natural cruft that accumulates during a rushed production.

The perks of joining as a floater person, is that you are really not given much to do so you can make the most of it. In this case, I spent my time optimizing algorithms in applications I’d written several shows ago. For example my depth compositing tool had slowed to a crawl due to changes in the metadata system it read from. What used to be an instant listing of sequences, was now a 20-30 minute wait time.

Fortunately, people are happy to have floaters self manage, and are more than happy to get performance boosts. So if you are ever stuck between shows and have nothing better to do, start trying to identify things you can speed up.

Check out the amazing effects work on this film

Smurfs: The Lost Village

This was a show I actually worked on before Guardians of the Galaxy where I was helping the Pipeline supervisor with setting up the show and the tests.

A trailer for Smurfs: The Lost Village

We didn’t really have strict deadlines for this project, since it was tests for a show that was a long way away. This was a perfect time to try and update our pipeline for this show and others.

So let’s look at the updates we did:

Katana 2: Porting Python to Lua

Around this time, we were updating our studio to Katana 2. Katana is the industry standard lighting package that was originally developed here at Imageworks, but had since been sold to The Foundry. As part of their major 2.0 release, they’d changed OpScript nodes from Python to Lua for performance boosts.

A screenshot of the Katana interface
Katana is the industry standard lighting tool, using node based setups to construct scenes. Python is heavily used for the tooling.

However, we had a lot of Python OpScript nodes in our publish rendering setups that needed to be ported. Over the course of a month, I updated quite a few nodes over. Lua definitely is an odd language, but with a lot of regression testing and help from the OG Katana devs, we got through it.

The final rendering of the pretty environments in this show

Simplified Show Setup

Imageworks has one of the smoothest pipelines I’ve seen but they’re always looking to improve. One of these areas was the speed at which we could spin up new shows.

Traditionally, while show setup was already quite streamlined, there were still a lot of manual steps to go through to get it just right and only relatively experienced devs could take care of it. However, since we were going into a future with lots of smaller shows coming up, we needed to be able to setup shows very quickly, often with more junior Pipe folk.

Imageworks has a very nice XML configuration layer for the shows that can blend show constants along with dynamic logic. My supervisor assigned a goal to try and make it so that new shows could be setup by just setting a boolean value to toggle between Visual Effects and Animation shows. Visual Effects pipelines are fairly similar to Animation pipelines but add a few extra stages (like compositing and matchmove), and have different defaults (like camera shutters, resolution, etc) than our animated features did.

We would also enable various tools for artists if we detected it was a VFX show.

1<!--Define the show Type-->
2<showType>vfx</showType>
3
4<!--Set a default value-->
5<enable_mocap>False</enable_mocap>
6
7<!--Set a value based on the showType-->
8<enableMocap showType="vfx">True</enableMocap>
An example of the show configuration xml. It's like a programming language, but was lazy evaluated.

This involved going through tons of code to make sure they’d look at this switch and do the right thing. In the end this made it a lot simpler to setup new shows because you could flip a toggle and get the right behaviour out of the box for the kind of show it was. Even nicer, it was really easy now to enable single sequences as VFX sequences for example when doing commercials for an animated feature.

Join my email list to get my courses and new content!

Be the first to receive my latest content and receive discounted access to my courses. You can unsubscribe any time, and I won't spam you or share your email with any third parties.

More articles from Graphics

Suicide Squad

A look back at working on Suicide Squad

August 1st, 2016 · 4 min read

Hotel Transylvania 2

A look back at working on Hotel Transylvania 2

September 25th, 2015 · 5 min read
© 2013–2020 Dhruv Govil. All images and videos used under fair use.
Link to $https://twitter.com/dhruvgovilLink to $https://github.com/dgovilLink to $https://instagram.com/dhruvgovilLink to $https://www.linkedin.com/in/dhruvgovil/