Hacker News new | past | comments | ask | show | jobs | submit login
Python for Feature Film: Programming Images to Life (dgovil.com)
187 points by dagmx on Dec 4, 2016 | hide | past | favorite | 37 comments



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.


This is greag content. Thanks for sharing. Where else in the fil industry do you see python being used in the next 3 years?


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 :)


Well my company does for certain projects: http://www.imageworks.com/jobs.php?p=job-postings&s=vancouve...

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.


Thanks thats really useful info.:)


Some London companies are using it for their production tools.


Should be back up now. Reddit hugged my RAM to death. Set up a cacher and upgraded my VPS for the time being

Sorry about the site going down. How embarrassing. Mirror here: http://webcache.googleusercontent.com/search?q=cache:QEt3EVS...

I was totally not expecting that much traffic in such a short period of time and failed to set up a cacher properly.


> 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.


'Kiribati' is a film currently being developed with Blender, but mostly its usage is for short films and TV ads.


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.

Next step: you're done.


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.


map and filter return iterators. This is easy to fix (list(map(...)). reduce is at functools.reduce.


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.


From my limited experience, the code that needs the most work is that involving reading text files -- the whole unicode vs bytes thing.

For the rest, the 2to3 tool does the vast majority of the job.


just tried 2to3 on a small code-base and it seriously BROKE logic, i.e. introduced bugs!


could you be more specific


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!


No one in the industry uses blender though, sadly. C4d supports python scripting but that is python 2


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 =)


Glad you found the breakdown of the stages interesting. It's a lot of moving pieces at one time.



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.



this is very cool.

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

A good example is Disney who do research in various fields: https://www.disneyresearch.com/publications/

> 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.


Technical director is one too: https://en.wikipedia.org/wiki/Technical_director#Film_.26_Ga...

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!


Hi awongh,

Have a look at the jobs boards for VFX companies.

For example: https://www.wetafx.co.nz/jobs

Web development is very much needed!


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.

We are hiring across all of those roles: http://www.dneg.com/jobs/


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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: