Sony Pictures Imageworks Open Source Program
July 31, 2009

Sony Pictures Imageworks Open Source Program

Culver City, Calif. - Sony Pictures Imageworks, the visual effects and digital character animation unit of Sony Pictures Digital Productions, is launching an open source development program. Imageworks’ production environment, which is known for its photo-real visual effects, digital character performances, and innovative technologies to facilitate their creation, has incorporated open source solutions, most notably the Linux operating system, for many years. Now the company is contributing back to the open source community by making these technologies available. 
Five technologies will be released initially:

·         OSL, a programmable shading language for rendering

·         Field3d, a voxel data storage library

·         Maya Reticule, a Maya Plug-in for camera masking

·         Scala Migration, a database migration tool

·         Pystring, python-like string handling in C++

Imageworks’ production environment, which is known for its photo-real visual effects, digital character performances, and innovative technologies to facilitate their creation, has incorporated open source solutions, most notably the Linux operating system, for many years. Now the company is contributing back to the open source community by making these technologies available. 

To launch these open source technologies, Imageworks engineers will be at SIGGRAPH, the international conference of computer graphics held this year in New Orleans, August 3-8.  There will be a “Birds of a Feather” meeting around the topic of voxel data storage, on Thursday, August 6 at 9:30 AM in Room 287 at the Ernest N. Morial Convention Center.  Imageworks is also launching a Web site to keep the developer community updated on its open source projects at http://opensource.imageworks.com.

Highlights of the release include the following:

Field3D

Field3D is an open source library for storing voxel data. It provides C++ classes that handle storage in memory, as well as a file format based on HDF5 that allows the C++ objects to easily be written to and read from disk.

The library was initially developed at Sony Pictures Imageworks as a replacement for the three different in-house file formats already used to store voxel data. It is the foundation for Imageworks’ in-house simulation framework and volume rendering software. It is actively used in production.


Scala Migrations

Scala Migrations is a library to manage upgrades and rollbacks to database schemas.  Migrations allow a source control system to manage together the database schema and the code using the schema.  It is designed to allow multiple developers working on a project with a database backend to design schema modifications independently, apply the migrations to their local database for debugging and when complete, check them into a source control system to manage as one manages normal source code.   

The package is based off Ruby on Rails Migrations and in fact shares the exact same schema migration table to manage the list of installed migrations.  The Scala Migrations library utilizes the clean Scala language to write easy to understand migrations. Scala Migrations provides a database abstraction layer that allows migrations to target any supported database vendor.

OSL (Open Shading Language)

Open Shading Language (OSL) is a small but rich language for programmable shading in advanced renderers and other applications. OSL is similar to C, as well as other shading languages; however, it is specifically designed for advanced rendering algorithms with features such as radiance closures, BRDFs, and deferred ray tracing as first-class concepts.

The OSL project includes a complete language specification, a compiler from OSL to an intermediate assembly-like byte code, an interpreter that executes OSL shaders on collections of points in a SIMD manner, and extensive standard shader function library. These all exist as libraries with straightforward C++ APIs, and so may be easily integrated into existing renderers, compositing packages, image processing tools, or other applications. Additionally, the source code can be easily customized to allow for renderer-specific extensions or alterations, or custom back-ends to translate to GPUs or other special hardware.
 
 
Pystring

Pystring is a collection of C++ functions which match the interface and behavior of python’s string class methods using std::string. Implemented in C++, it does not require or make use of a python interpreter. Rather, it provides convenience and familiarity for common string operations not included in the standard C++ library. It’s also useful in environments where both C++ and python are used.
 
 
Maya Reticle

Originally developed at Sony Pictures Imageworks, spReticleLoc is a Maya C++ plug-in plus MEL code that creates a reticule for a camera.  It allows for various camera reference masks to be displayed when looking through the camera, such as filmback, projection gate, and pan and scan attributes  
 
The value of predefined parameters can be displayed in selectable areas, such as the camera focal length and name, current aspect ratio, frame number, name of the show and shot, Maya scene file name, current user name, etc.   Arbitrary textural information can be displayed as well.