During a few weeks off work after a “fun” eight month job, I decided to chill out by writing an XSI exporter to yet another opensource unbiased renderer; sunflow.

I have known about sunflow for quite a few years, and one night got the idea that my XSI luxrender exporter might easily be cannibalised to export a new ascii scene file format for sunflow.

Sunflow is written in Java and seems to have been developmentally dormant since 2007. The extensible oo Java core would’ve been interesting if I’d had the gumption to learn Java and read the source, but due to relapses of Internets Disease and Taurean couch-potatoism I lost interest and moved on. (I think revisiting Shadow Of The Colossus in hard mode had something to do with it too)

Here are pictures from the development of the plugin:
(Most recent renders first)

And the first pixels rendered with the exporter:

details

I wrote the exporter mainly to see what the built-in hair primitve was like, and if I could easily export ICE strand particles to it. Its object instancing was also a motivation; it’s so easy to create thousands of particle instances in interesting arrangements using ICE.

Sunflow’s speed was pretty much on par with luxrender, but sunflow has a gnarly progressive-render mode (-ipr cmdline flag) which is a real bonus for rapidly tuning shaders, composition and lighting. I wonder what it’d be like if my exporter was written in C and hooked into XSI’s custom renderer mechanism, set to be in live IPR mode.

Like luxrender, the most mature 3d exporter is available for Blender. Yay for FLOSS.

There’s also cool stuff available for users of Processing1to export to sunflow here.

Miga’s XSI sunflow exporter

Michael Gangolf wrote a sunflow exporter for XSI years ago.
It can be found here.

Processing: let me take this oportunity to soapbox that “Processing” is an annoyingly generic name for an application to search for on teh googles. [↩]

2 Comments

That’s great! Your exporter seems to have pretty much everything covered! How do you handle render tree translation? I imagine you would only have to support the archmat and use that as an uber material to get all your shading parameters?

The issue I had with Michael’s exporter (which was otherwise great I should add!) was that it couldn’t handle Normal smoothing (Discontinuity in the Geom. Approx. property). Everything was faceted unless you subdivided it.

I’ve been stopping by the Sunflow site on and off for last 3 years hoping that it might restart development but it really does seem to have died. On the forums the developer actually mentions that he works for Sony Pictures as his day job working on their renderer (which is modified version of Arnold if I’m not mistaken…)

Hey Dan, thanks for the comment!
I added only a little bit of render tree translation for this exporter where I detect Constant, Lambert or Phong material nodes (and texture nodes atached to the colour ports). The architectural shader is a good idea though.
For my luxrender exporter I didn’t bother with any render tree parsing and just used a verbatim textbox property under the material.
Miga’s exporter’s lack of normal export was another reason I made my own exporter.
I didn’t know about sunflow author’s connection to Arnold! That’s cool! If only sunflow was still in development :/