Just sharing a series of posts I wrote recently about how Python is used in the film industry.
The post linked outlines the pipeline in general, and there are individual case study posts for films I've worked on.
They're less technical and more of an overview but I thought it would be of interest nonetheless.
I could see it maybe being used to develop on set controllers. Things like programming of lights etc could potentially use it.
I also see it being commonly used for web servers that are also used by the film industry. Django is quite common so I suspect that's another area.
Unfortunately I think that's about it. The de facto tools that are used outside of VFX and animation each have their own APIs on other languages and I don't see them converging on any particular language.
As a Django consultant its nice to know about this info. Do you happen to know the name of companies using Django? Id like to approach them for work :)
I believe Disney Animation do as well for certain projects too, and probably Pixar too. ILM also have a web department though I don't know if they use django but I suspect they would.
It's not really front and center on any of the job listings I see, even on ours but we do definitely use it for some of our backend.
> Additionally, it’s important to note that the film industry uses Python 2.7 and not Python 3. There has been significant code developed with Python 2 and it’s not easy to switch forward yet,
It's worth mentioning that Blender has adopted Python 3 as its scripting language since 2.5 (2011), but maybe represents a small set of 'the industry', with smaller studios.
Yes, I should add that in there as a note. I don't really know of any studios doing feature film work with Blender to be honest, but it is important.
Of interest, vfxplatform.com is the group that sets the loose guidelines of what packages everyone should be using, and currently they're on py2, so blender is the exception unfortunately, as much as I would love to be on py3, even if just for native async.
While I'm guilty of staying with an "aging" 2.7 codebase (due to lack of time, and my employer not being really sure about Py3), with 3.6 I've been looking more and more into porting and it doesn't look that complicated. Am I missing something when people say that "it's not easy to switch"?
Personally, I develop for py27 and py35 at home, and outside of a few edge cases, most things are covered by six to the point that I don't think it's hard to develop new code that is compliant with both.
What is hard is updating code bases that stretch back almost 2 decades. It's just a lot of code.
IMHO the industry should start updating now rather than digging a bigger hole but c'est la vie.
How much unicode do you work with? If your answer is "none", then the answer to "is it easy to switch" is "not that hard".
I would start by taking your 2.7 code, adding "from __future__ import print_function" and fixing any SyntaxErrors. This is trivial by byte compiling all the files.
Then, add "from __future__ import division". Now, run all your tests (you have tests right?). If none fail, and you're sure your tests actually test your division code locations, then proceed.
I can think of a few spots where we've used filter or map which should require a bit of work too. Other than that, your Hitchikers Guide to Python 3 seems about as easy as it can be.
Hmmm I knew there were some changes in both map and filter but didn't dig into them. If the only change is that they return iterators instead of lists, it would even help on some parts of a few projects I maintain. I still have to check it up though, can't be certain until I see what happens and if it breaks anything.
My guess is people are afraid they're going to end up with difficult to debug edge case type bugs and have to sink loads of time into it beyond the standard porting steps.
> but maybe represents a small set of 'the industry', with smaller studios
The tech tools in the biz are downright ancient. ;) At my place of work we just got C++11... on an old ass version of GCC. We are also stuck on Qt4 (uughhh!) for the foreseeable future. Also no Python 3. Version control? Enjoy those merges in Perforce!
Thanks for sharing, my favorite part wasn't even the one about Python. It's that you included a step by step list of the Animated feature film pipeline, I had no idea how it worked =)
Thank you for sharing that. It seems I got reddit hugged to death. I was totally not expecting that many concurrent hits and failed to setup proper caching.
what are some of the names of the jobs that are programming based (as opposed to 3d artist based)?
I am also very curious about what the breakdown is between people who write the pipeline code and those who write the stuff being put into and out of these pipelines- is the difference very big? (i.e. how deep in the stack does each role go?)
And what kinds of experience do they look for, and how would you say a regular old web dev programmer would go about getting that experience?
> what are some of the names of the jobs that are programming based (as opposed to 3d artist based)?
We have a lot. A few of the top of my head:
* Render developer. It's less artist focused and more about the math and optimizations.
* Web infrastructure developer (we use oracle dbs, django, various RPC services etc)
* Computer Vision
> I am also very curious about what the breakdown is between people who write the pipeline code and those who write the stuff being put into and out of these pipelines- is the difference very big?
This depends on the studio a lot. At our studio, there's a wide variety of people. We never expect an artist (Animator, lighter, etc) to be able to program. They just need to know how to hit a button to open a publish UI and then hit publish in there.
But for the programmers we don't expect them to have an artistic background. They often just need to know how to develop.
That said the best people are the ones who can do both. Artists who understand the technical aspect often work faster, and developers who understand the artistic side often make better tools because they understand the mindset
> And what kinds of experience do they look for, and how would you say a regular old web dev programmer would go about getting that experience?
The experience really depends on the role to be honest.
If you're a web developer, studios often have dedicated web development teams for both backend and frontend web development who really don't need experience in the film industry.
The kinds of projects include:
* Our production tracking software is all web based. A similar project is: https://www.shotgunsoftware.com/
* Our payroll systems are all web based
* Similarly all our media management also has dedicated servers to fascilitate creation and acquisition of media.
There's always room to move departments too and many people have as well once they get more hands on in the studio.
Vfx companies need web devs too! I'm a lead for a team which delivers web based tools for vfx production management. Quite a few bits of our apps and back ends have to integrate with pipeline tools and asset management systems, so there is an interesting cross over. Also for that reason we have python services and web stacks.
That is to say, you could join a vfx company using your existing web dev skills and once you are familiarized with the vfx environment and pipeline, transfer onto a pipeline team.
I was a TD for a number of years before going moving into creative full time. It was a great path and a learning experience which gave me an edge later on.
TD is a great position if you're both into programming and art, because it blends the two. Some of the best TDs I've seen and had pleasure to work with could be described as demo coders with significant resources behind them!
Outside being a web developer in a vfx/feature animation studio (IMS developer) there are programming-centric roles where experience with python, http APIs and dbs/orms comes in handy.
Roles like Assistant Technical Director (ATD), Pipeline Technical Director (Pipeline TD) and Pipeline Developer require familiarity with the applications used by 3d/2d artists (Maya, Nuke and Houdini to name a few) and their APIs to deliver the kind of functionality presented in the article.
Almost all those applications have a python interpreter that they use to expose their scripting api, and have a C++ SDKs as well. Most of them use Qt (and PyQt/Pyside) as the ui framework, which is the core skill for roles like UI Developer.
it's interesting that there are seemingly so many different kinds of jobs in the field that happen to involve python.
is the level of proficiency / familiarity with maya the same as an artist position? (i.e. how crucial is it that you are very familiar with all of it's functionality, not just the APIs)
how does the pay compare to a python job at an internet company?
how common is it to have someone move from a role like assistant technical director (or something more senior) to R&D programmer type position?
In my experience a clear understanding of how the applications work and how are used by artists is very important, so being able to complete simple tasks with them-independently of the quality of the results-is pretty important.
Pay should be comparable.
Companies are generally pretty supportive of their employees moving between positions internally. Demand for new developers and workload heavily affect the timing of internal moves.