BtoA – Blender to Arnold


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

BtoA 2.59

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

20 responses to BtoA – Blender to Arnold

  1. Oh my got! I didn’t know that somebody works on such an exporter! I’m looking forward to hearing more from you soon! Good luck!

  2. This is fantastic! Thank you for your work on this! Can’t wait to see it in a finished state. By the way, how did you happen to come upon GETTING the renderer?

    • Hi Joel
      Thanks for your words. I got access to the renderer because I am on the beta team.
      Stay in touch!

  3. Hey is there anyway we can help with testing you Blender to Arnold bridge. We are in the Arnold for softimage Beta so we already have access to Arnold and are spending the rest of this year doing and in depth evaluation of transitioning from Softimage to Arnold. It would be Awesome to be able to keep using Arnold.

    please contact us we are very interested in this.

    • Hi James
      Thanks for your interest. The BtoA exporter is available in github. Feel free to download it and run it with the lattest version of Blender.
      Note: Its is still very early in development. Not meant for production use yet

  4. Hey Rudy,

    I was browsing through my Arnold Mailing list and I saw your name. I was one of the IT guys at DNA. I now do a little python programming, and I am working for Element X Creative in Dallas. I hope things are going well. Congrats on your 10th wedding anniversary.

    Greg

    • Hi Greg!
      So good to hear from you dude! How are the peeps in Texas? Still doing the Linux thing? Thanks for the well wishes. Keep it touch dude

  5. Wow! This is a seriously promising project. Do not give up, please.

  6. This looks very interesting! I don’t have access to Arnold, but if you need Blender scenes to test it with, I’d love to be able to compare some complex arch. viz scenes with Arnold versus Vray/Indigo in terms of use and render times!

    Drop me a line if you’re interested. It’d be great to see how Arnold holds up against other render engines I use.

    • Hi Tom.

      Thanks for the offer! You bet 100% that once the exporter is ready I will take you up on this offer. Great work on your site dude!

  7. Just one question; when the exporter is ready will it be released to community? I don’t know how to help you (except posting your webpage at blenderartist :) ) but perhaps you need some sort of donations or something?

    • The exporter is developed as open source code available at github. I plan to keep it free to help make blender stronger and to help popularize Arnold.

  8. Very nice!

    if you have any questions about renderer integration, you can post on the bf-python mailing list: http://lists.blender.org/mailman/listinfo/bf-python

    A few of us who are working on exporters for other renderers are on there too.

    • Awesome! I have run into a couple of walls, but the guys at siggraph where able to help me out!

  9. Hello!

    I’m on the SitoA and Mtoa list and I’m very interested in getting the BtoA working. I would like to know a bit what kind of environment variables that are needed to get BtoA running.

    best regards
    stefan andersson

    • I have not done an “Install” process at the moment, but I believe you need to make sure that the python folder that ships with Arnold is in PYTHONPATH.

      I also had to make small changes to the Arnold Python files since they where not Python 3 compliant. I dont think I can post them (I must ask Marcos first) but this is what I did.

      I copied the arnold/python folder into arnold/python3
      Replaced all the Arnold import statements to use the new Python 3 relative imports. So instead of


      from ai_allocate import *
      from ai_array import *

      I used

      from .ai_allocate import *
      from .ai_array import *

      do this on every import statement in all files in the new python3 directory
      Set PYTHONPATH to the new python3 directory

      To use the add-on jus download it and place it in the blender add-ons folder

  10. This is the best thing I’ve heard about blender developement in the last years! Thanks!

    (I hope i need to buy arnold soon. :D )

  11. Rudy the githib link (https://github.com/fxjeane/BtoA) gives a 404

    • Yeah. I had to make the repository private because of NDA restrictions. If you are on the Arnold beta or if you are an Arnold customer I can give you access to the repository.
      Cheers

  12. Very impressive :) Your book “The RenderMan Shading Language Guide” is also very interesting. I’m blender user and I can’t wait for results of your work :) I remember D.N. Lara’s animations. Arnold and blender – that’s sounds great :) Thanks a lot and Good Luck!