History of python in CG


#1

I was just thinking about the history of Python in our Industry. Right now we pretty much take it for granted as the default scripting language for CG. Every software out there has a Python API and most of the tools developed for the industry are in python. Entire industry is depended on it in a huge way. Can anyone remember where it all started, what language was used before and what accelerated the adoption of Python.


#2

In the very old days — like, the SGI Workstation days of the early 90’s – a lot of work was done in shell scripts – for example, if you were running long renders you’d kick of a big job and maybe run a bash script to convert PowerAnimator RGB files to TGA or something like that. But there was nothing like a standard, it was very ad-hoc. One of my first production tools was written in Hypercard – it copied single rendered frames from an SGI to a mac, and then triggered a laser disk recorder to record the frames off the mac video output.

Scripting in graphics applications debuted, I think, with the original Maya in 1996. MEL was based on TCL, a language which is not very popular nowadays but was big in the early 90’s for some of the reasons Python was later popular – it was relatively simple and not as hacked-up as something like Perl. Tcl survives in part because of TKinter , the simple gui system you can use with Python – which was written originally for Tcl.

The original Maya released with MEL built in in 1996, and Max added MaxScript to keep up in 1997. Many of MaxScript’s famous quirks go back to the fact that it was an add-on to an existing program, not a built-in feature of the platform fom the beginning. Even as late as 2010 there were a lot of features in Max which were ‘scripted’ by basically controlling the UI from a script – so that things might not work if, for example the user had hidden the command panel. The late, lamented SoftImage|XSI supported VBScript, JScript (a Microsoft-specific version of JavaScript), Perl and Python – unfortunately none of these were sufficient to save the program from the clutches of Autodesk.

Photoshop also added scripting, I think in Photoshop CS (2003) or CS2 (2005). This was another add-on, and like MaxScript it shows it’s shallow roots. I think it actually evolved from support for AppleScript but was later extended to Visual Basic and then JSX, the Adobe flavor of Javascript.

Still, scripted apps were a big success, and as 3d production became more and more complex these simple automation tools were pressed into service as tools programming languages, even though they were originally designed for lightweight UI contol. I remember writing an XML parser/writer in MEL – an experience I would not wish on my worst enemies – because we needed to be able to read and write files that had nothing to do with Maya proper for our pipeline. There were also MaxScript based games, Photoshop scripts to write out metadata or upload files to servers… once people started fooling around with scripting they discovered all sorts of things they could do.

The success of app-specific languages made it very appealing to leverage fully-featured languages from the outside world. Python debuted in Maya in, I think, 2007. Max added support for .Net languages – which in practice meant C# – the same year. These two changest set off an earthquake in production management , since both of the programs could now be participants in a much more complex production environment – you could talk to web servers, read and write standard file formats like JSON or XML, and find existing solutions for lots of common computing problems.

It’s probably not a surprise that the next decade saw a huge jump in the complexity and sophistication of tech-art tools . In 2003 being able to give artists a dialog box for setting commonly used export options was the cutting edge – nowadays (just look at this site) TAs are doing database programming, computational geometry, network management, you name it.

It’s also not a surprise that the core pipeline tools almost always involve scripting, usually in a common language like Python. JavaScript is always about to become a tools language but never quite gets there; Lua is popular with programmers because it’s easier to integrate but less popular with TAs because it’s clunky to write. Proprietary languages are usually unpopular – ZScript, anyone? – but they still crop up because people like reinventing the wheel.

For me, a new tool has to be super specialized if it does not have a scripting language built in. I’d honestly exile Photoshop and it’s horrible scripting support in favor of, say, Krita if my artists would not revolt… Mari is a great 3d painting program with robust Python support-- but it’s too pricey.


#3

That’s a great summary @Theodox!
Its actually an extensive revision of the tooling in the CG industry, not just python! Thanks for that :smile:
From your memory, what was the first application to use python as the scripting language ?


#4

Maya is the first one I can think of (in graphics, anyway) but I highly doubt it’s really the first. I think the penetration really started in the Linux/Unix world where the big renderfarms and so on live, and it probably took off after Python 2.3 or 2.4 which kind of tie for the ‘breakout release’ when Python started picking up steam. That would have been around 2003 or 2004.


#5

Thanks for answering my curious questions @Theodox :smile:


#6

Just for fun pinged Ton from Blender Foundation about it and he says blender added python in 1999


#7

I feel old. :smiley:

I heard ILM pushed a lot Autodesk to put Python in Maya. Does anybody know if this is this True or False ?


#8

It is True.
First time I saw python script in Advanced RenderMan 3: Render Harder SIGGRAPH 2001 Course 48.
It was Tutorial On Procedural Primitives by Christophe Hery and Douglas Sutton, Industrial Light + Magic.
They are showing procedural RIB generation for Star Wars Episode I.
You can find it here:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.435.5263&rep=rep1&type=pdf

According to Vladislav Kazakov in The Role of Python in Visual Effects Pipeline:

2.4 ILM case study

Founded by George Lucas in 1975, ILM is one of the leading global visual effects company
with facilities in San Francisco, London, Vancouver and Singapore. It is famous for the projects
like Jurassic Park, Star Wars, Forrest Gump and Terminator 2. In past, ILM’s post-production
pipeline relied mostly on Unix shell scripting. As the amount of visual effects used in movies
started to grow, ILM started to research for more optimal ways of overseeing progressively
complex production processes. By that time, Python 1.4 was released as simple yet effective
programming language that could be utilized in place of Unix shell scripting. It caught the
attention of ILM, who was looking for more superlative solutions to replace their older scripts.
Due to the simplicity and smooth learning curve it was chosen by ILM, which appreciates the
speed of development. Besides that, Python could be integrated with more sophisticated software
systems and interact with other programming languages. Taking advantage of that, ILM
implemented Python into their proprietary tools. [18]
Python is everywhere at ILM. It’s used to extend the capabilities of our applications, as
well as providing the glue between them. Every CG image we create has involved Python
somewhere in the process.
Philip Peterson, Principal Engineer, Research & Development, Industrial Light & Magic. [18]
Indeed, not only Python was used to extend the content-creation tools, but it was also implemented
to enhance the user interface of ILM’s DAM system. After the embracement of Python
in 1996, it has been applied in many different ways in ILM – asset management and batch
control, software extensions, database development and many others. [18]
Python plays a key role in our production pipeline. Without it a project the size of Star
Wars: Episode II would have been very difficult to pull off. From crowd rendering to batch
processing to compositing, Python binds all things together.
Tommy Burnette, Senior Technical Director, Industrial Light & Magic. [18]

http://www.theseus.fi/bitstream/handle/10024/115922/Kazakov_Vladislav.pdf;jsessionid=6E252E0118334E32CA9DC4BA14C9BD86?sequence=1


#9

maybe i’ll forgive them for this