Some time ago i was lucky enough to get on the beta of Solid Angle’s Arnold renderer. This is a renderer that caught my eye back in 2000, when a short film named Pepe was all the rage at Siggraph. I managed to acquaint Marcos Fajardo, founder and lead developer of Arnold. Back then I was extremely excited over the fact that Arnold would be included with PMG’s Project Messiah.
Years went by and Arnold kind of disappeared from the public eye. Then, out of nowhere it made a big come back when it was chosen as the renderer for Monster House. Since then Arnold has grown by leaps and bound. Little by little it has begun to penetrate the industry and several small and big studios are beginning to jump on board.
Once I got into the beta, i was anxious to play with the renderer. Problem was that the only available turn key solution was a plugin for XSI. Since I dont own a copy of XSI, I started looking at what other options are out there. I found that Solid Angle was also working on a Maya exporter, but it was still to early in development for my taste. I figured the best way to learn a new renderer and its API would be to write an exporter. Thats how I learned RenderMan so it must also work with other renderers, right? Since I didn’t want to duplicate efforts done by others in the community I decided to do an exporter for Blender.
BtoA for Blender 2.49
I began to write the exporter for Blender 2.49. I must say that Blender’s Python API made things quite simple. Things where pretty straight forward except for the GUI. Writing a gui for Blender pre 2.5 was a royal pain in the ass! I got it to work, but it was not pretty. Since I knew that Blender 2.5 was about to hit beta, and the Python API was going to be completely updated, I decided to stop development until 2.5 was closer to release.
On that first attempt I took a RenderMan approach where I would write out an .ass file and then invoke kick (the cmd line renderer) to render the image. As I said before, this worked, but once I tried to render a very heavy scene, the export would take 7 minutes while the render would take only 8 seconds. Needles to say, I had created a huge bottle neck. For this reason I decided to try to write directly to the process using the Arnold python API.
Here are some of the images that I was able to render from BtoA 2.49
Blender 2.5x went alpha, then beta and finally at version 2.57 I decided that it was time to do a retake on the abruptly abandoned exporter. I was extremely surprised, almost giddy, when I read how easy a new renderer could be integrated, how users could easily extend the system with new classes and how now I had python access to the GUI! I was pretty happy with most of what the Blender community had done. So now time to look at Arnold again.
I opened the docs and gave the API another read. Then I went through the python code provided by Arnold. The python bindings looked pretty good, but i still had no idea how to write anything with it. As I dugg deeper through the code samples from all of Arnold’s open source projects, (yeah, open source!! thats so smart of them!) I had gathered enough information on how the task could be executed. I began to recode using the Python bindings of the Arnold API. Getting a file to render to disk was pretty straight forward, but figuring out how to render to the render buffer proved to be a bit harder. Thats when Angel, from Solid Angle, stepped in to give me the necessary guidance to get the system working.
Here is a screenshot if the current version (0.1) of BtoA