Working on Percy Jackson

Working on Percy Jackson

I’m starting a new series of blog posts, where I basically do a post-mortem analysis of the projects I’ve worked on and show the kind of things that can be built using just Python.

Today’s blog post will be about Percy Jackson and the Sea Of Monsters which I worked on at Rhythm&Hues. This was my very first feature film, and it was a great experience because it was like being thrown into the deep end immediately. Having to learn to swim on this show was the best learning experience I’ve had.

I had taught myself a little Python a few months before this job, but I really learned it and decided to leverage it while here.

Embracing Linux

Up till this point I’d mostly been a Windows and macOS user. I’d only used Linux once as a kid when I decided to dual boot and then realized I hate using it as a daily driver.

Unfortunately, like most major studios, Rhythm used Linux, and it’s not just Linux as an OS, you do almost everything from the command line.

 

There were no fancy desktop icons to launch the apps. You had to know how to type the commands in your Terminal and navigate to directories and files all via text. This was such a drastic change from what I was used to.

Fortunately it’s actually not that hard and you can get into it pretty quickly. Now I pretty much use the command line even when there are UI equivalents, just because I’m faster in it, and don’t have to take my hands off of my keyboard.

Another thing to note is that many studios use tcsh and not bash. This is important because bash is way easier, but oh well.

Resources

A good resource we were given to learn the command line was this book: The Linux Command Line. You can grab a free download here or buy the actual book here: The Linux Command Line Affiliate Link

LinuxDesktop

Voodoo and Parsley

Rhythm had their own proprietary animation software which had its’ own proprietary scripting language.
So after spending many years learning various 3D applications, I was now faced with one that you literally could not train for without joining this studio and similarly a language that had never seen the light of day outside of those walls.

Voodoo was a delight to use. It was limited in what it could do, similar to Pixar’s Presto and Dreamwork’s Premo, it could only be used for rigging, animation, some basic lighting and matchmove. You literally could not model inside it outside of creating a cube or a sphere. But the things it could do, it did incredibly well. It was a fantastic animation tool, and clearly build from the ground up for the artists at Rhythm.

Parsley was their in house scripting language. It’s pretty similar to MEL mixed with a bit of BASIC. It wasn’t hard to learn, but again, it was a bit more of a challenge than other languages because you can’t just go online to look for help.

So how do you prepare to start a job with a software package you’ve never even heard of before?

Well here are my tips:

  • When you learn any 3D package, don’t learn just where the buttons are and what they do. Instead, learn the fundamentals of what you’re doing. This will let you adapt quickly to other applications because it doesn’t where the features are in an application, it’s easy to get it to do what you want. Many people make this mistake and are utterly confused when they have to change applications.
  • Learn more than one 3D program and more than 1 programming language. Try and do the same thing in each of them. Make a simple animation or model in both applications, write a simple script in both languages. This way you really force yourself to abstract the concepts from their implementation.
  • Don’t be intimidated. There are people around you at work who are there to help you, not to judge you. Try to figure it out, but if after 15 minutes you cannot, then ask somebody. Nobody benefits from you being confused and it’s better to show the initiative of learning it than being bad at it later on.

 

 

Python Tools For Percy Jackson

Here are a few of the tools I built for the show using Python.
I was still fairly new to Python at this time, so the tools were nothing to write home about, so I’ll just give a brief overview of them here.

Python for Voodoo

This was a huge hack, but I tried it out as a proof of concept.

The pipeline team at Rhythm had a way to send Parsley commands to Voodoo over a network port. I used that to create a wrapper for every single Parsley command that let you use Voodoo straight from Python. When you initialized the module, it would connect to the Voodoo session you initialized it from, and then any commands issued would call out to Voodoo and convert values between Parsley and Python types.

Performance sucked, but it was a cool proof of concept, and could dynamically update when new parsley commands were added.

Ticket Submitter

At Rhythm, we had a program called JobTracker that was used to track all our tasks and tickets. It was pretty great, but one limitation was I could not submit tickets from other people. I was often getting messaged for requests and needed a way to submit tickets from specific users to speed up my day.

I built a custom UI using PyQt4 and the Jobtracker API that let me submit tickets quickly and it ended up saving me tons of time having to ask people to submit a ticket and then wait, when I could just do it myself much quicker.

Reference Reorder

Voodoo uses it’s own really amazing referencing system, where each reference could override the previous one. This was incredibly powerful, but it meant sometimes you need to reorder the references manually.

This used to either require a little Parsley inside Voodoo or editing the Voodoo ASCII file manually.

I built a PyQt UI that would allow you reorder the imports in the ASCII so you could quickly run through all these Voodoo files without opening them up.

Parsley IDE

We didn’t really have an editor for Parsley. We had syntax highlighting inside an editor, but no real tools other than that. There was nothing like PyCharm that would show you errors or give suggestions on how to fix the code.

I built a development environment using PyQt to help us edit Parsley. It was rudimentary but it would do a live analysis of the script and build a DOM that could then be analyzed to see where errors were happening.

Learn Python

If you're interested in learning more about Python, why not sign up for my course here?

This course takes you from learning the fundamentals of Python, to creating tools with advanced user interfaces, all while creating projects you can use immediately.
It will teach you many of the skills necessary to create tools like the ones in this article.

With over 700 students in its' first week, including artists from major studios, it is sure to provide valuable knowledge to everyone.



Python For Maya: Artist Friendly Programming - $70 $90

 

If you sign up from this link, it will save you $20 off the retail price using the coupon code: DGOVILCOM

Buy The Movie

If you’re interested in Percy Jackson and the Sea of Monsters (terrible film…don’t recommend it), you can buy the movie here:

 

Amazon Affiliate Link

 

Python For Maya Course

Python For Maya Course

Python For Maya: Artist Friendly Programming

 

$70 $90

 

code: DGOVILCOM

Dhruv Govil

Lead Pipeline Developer

I’m a Lead Pipeline Developer who started out as an artist teaching himself Python to make his job easier. From there it’s sort of taken off and I’m now responsible for tools that are used by hundreds of artists every day.

This course goes over the same methodology that I used to learn Python to take you from no knowledge at all to being able to craft advanced tools with ease.

Hi Guys,

I have a brand new course I’ve put up on Udemy. Python For Maya: Artist Friendly Programming ( Sign up here for $70 $90 )   [code: DGOVILCOM] .

The course aims to take you from no programming experience to creating advanced interfaces.

I go over creating real world tools that can be useful to different departments as the method for teaching, so it’s not just abstract Python concepts like many Python courses and tries to show you how it can be immediately useful for you.

Additionally it’s the only course that goes over the new changes in Maya 2017 with regards to interface design.

Projects that will be created:

  • Creating a prop rig
  • Scene Hierarchy Renamer
  • Making Procedural Geometry
  • An Animation Tweener UI
  • A Controller Liibrary UI with a gallery view using Qt
  • A Light Manager using Qt and PyMel, that can be docked in Maya and handles light presets
  • A command line file renamer utility that accepts regular expressions

Anyway the idea is that it takes you from the very basics of Python all the way to what a Pipeline TD would be expected to know, and show that it’s useful for artists to learn Python as well.

I’d appreciate it if you could share the link around!

If you sign up from my site, I’ll have a discount applied on checkout.

 

 

Spider-Man: Homecoming

Spider-Man: Homecoming

So starting next month, I should be finishing up some development projects at Sony Imageworks and will be rolling onto Spider-Man: Homecoming.

Since Suicide Squad wrapped in July, I’ve been busy developing projects at work for multiple shows to use. I’ve also been busy on several smaller projects that we’ll hopefully be able to talk more about soon, or not, depending on how things go. You know how it is.

I’m looking forward to Homecoming. We’ve obviously done every incarnation of the CG Spider-Man other than the one in Civil War and this will be a really cool new take on it. I think it’ll be a really great project, and will be my third movie with the lead for this show. I think so far we’ve made for a really great team.

It’s somewhat bittersweet, because I was slated to be Lead on my own show, involving giant mechas and monsters from the Pacific Ocean (I’ll let you guess), but sadly that fell through and I’ve been reassigned to working on Homecoming instead. A bit unfortunate because it will be a while before I get to lead a show I think, given our current lineup but we’ll see. I think it would have been a fun change, but c’est la vie.

In the meantime I’m still a Pipeline Lead at Imageworks but just not Lead Pipeline on a show if that makes sense. So still more responsibilities than before and it makes for some very interesting work as well as being part of the decision process that drives the company forward.

Anyway, it’ll be good to get back into the rhythm of a show again, and I can’t wait to start.

Pin It on Pinterest