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.
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.
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
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.
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.
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.
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.
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>34<!--Set a default value-->5<enable_mocap>False</enable_mocap>67<!--Set a value based on the showType-->8<enableMocap showType="vfx">True</enableMocap>
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.