[Bf-committers] OpenEXR in Blender's CVS

Ton Roosendaal ton at blender.org
Sun Mar 13 13:33:37 CET 2005


Hi,

Thanks for the elaborate description. :)
Now you've described the background of openEXR, but for the integration  
in Blender I'd like to see more info.

1) Coders level
- why has openEXR become an optional #ifdeffed piece of code?
- it seems like you (or kent) choose to integrate it like quicktime,  
e.g. a plugin that establishes connection runtime. Is that true? Why  
not compile in the static openEXR lib?
- how is it integrated in the ImBuf for reading? Does it read "half" as  
well as 4x32 bits?

2) Installation level
- is installing openEXR for users well documented on openexr.org, and  
is that monkey-proof for using Blender with it? For all platforms?
- if the plugin isn't installed or found, how is that communicated?  
Does Blender run even without?

3) Using it
- how does EXR export react to settings like "B&W, RGB, RGBA" ?
- is only "half" supported for export now?
- when is the Z layer exported?
- are exported files compressed?

Stuff like that. :)
Sorry to be such a pest, this is also meant as educational issue for  
our team. It is very cool people work on adding new functionality to  
Blender, but the need for proper documentation is evident.

-Ton-


On 13 Mar, 2005, at 13:15, Gernot Ziegler wrote:

> Hej folks !
>
> After some stealth operations on #blendercoders I managed to sneak
> OpenEXR into Blender CVS, exploiting Kents' goodwill and not to  
> everyone's
> delight ;) ... To post-formalize the whole thing, I would like to  
> document
> a bit here:
>
> OpenEXR, as provided & documented on www.openexr.org , is a layer-based
> image format used introduced by Industrial Light & Magic and other film
> industry in Hollywood to store High Definition Range (HDR) Images.
>
> It's basic idea was to introduce a new, smaller 16bit floating point
> format they call "Half". This is what they usually use for their pixel
> components (float and unsigned int also exist, but are not always
> written/read by applications).
>
> The data can be compressed losslessly. There is also a lossy fileformat
> based on Wavelets.
>
> All data is stored in named layers, so there usually is a layer "R",  
> "G"
> and "B" in every file. "A" and "Z" (depth) are other possible layers.
> ---
> I have recently implemented a minimalistic OpenEXR output plugin to
> fulfill my own egoistic needs (which are: get depth data out of  
> Blender's
> renderer for some research ;) ), and found such good response to it
> that I worked together with Kent to put it into CVS.
>
> It is integrated into imbuf, and provides a new output format option,
> OpenEXR.
> Currently, it outputs losslessly compressed OpenEXR files with
> the components "R", "G", "B", "A" and "Z". All components are in the  
> range
> 0.0 - 1.0, where Z has near=0.0 and far=0.0 .
>
> NOTE: First when you activate "FBuf" you will be able to see the  
> strengths
> of the format, because then it will output the renderer's unclamped  
> float
> values !
>
> It is also capable of reading OpenEXR RGBA-channels (other layers are
> ignored), but I am not sure if I provide everything needed, please tell
> me if something is missing.
>
> Here are some shots (they need to be moved to the Blender site if they
> shall remain as docs):
> New option: http://www.lysator.liu.se/~gz/openexr/pluginshot1.png
> Loader in action: http://www.lysator.liu.se/~gz/openexr/pluginshot2.png
>
> these two shots show how OpenEXR captures HDR data:
> http://www.lysator.liu.se/~gz/openexr/cylblock_normalexp.png
> converted 0.0-1.0 to 0-255  - see the overexposed region ?
>
> http://www.lysator.liu.se/~gz/openexr/cylblock_lowexp.png
> converted 0.0-0.2 to 0-255 - the overexposed region actually contains  
> more
> data if "amplified" :-)
>
> The other two are the data files.
> It would be interesting to see if Cinepaint is capable of loading the
> EXR file.
>
> Implementation:
> I introduced a new openexr.cc in
> blender/source/blender/cv
>
> Blender devs:
> To use OpenEXR, you need to download and install OpenEXR libs
> (www.openexr.com). Then, in SCons, remove config.opts, start scons,
> interrupt, edit config.opts, activate use_openexr=true, start scons.
> Makefile integration was done by Kent.
>
> To test:
> .) load the .blend-file from above
> .) choose, OpenEXR, activate "FBuf" (!)
> .) render file - voila, a new .EXR-file !  (console gives debug output)
>
> Left to do:
> Documentation in CMS, under
> http://www.blender3d.org/cms/Changes_Since_2_36.496.0.html
> http://blender3d.org/cms/Installation_Policy.352.0.html
> (can the CMS people please contact me for this ?)
>
> Future directions:
> IEEE 32bit Float output ?
> More data channels, like normals ?
> _Several_ depth layers ?
> Matting layers ?
> Depth map loader ?
> Camera Meta-information in header ?
>
> We might want to ask the OpenEXR list or the CinePaint guys on what  
> they
> (thus: movie industry !) want to have.
>
> And: Python bindings ! If the Python guys contact me I can help them to
> integrate it. (actually I might need it myself soon)
>
> Servus,
>   Gernot
>
> PS: I have to warn that my job may require me to leave the list again  
> due
> to time constraints, but I am always available under the e-mail above.
>
> --  
> T----------------------------W-E-L-C-O-M- 
> E------------------------------T
> O  The Austria <=> Sweden <=> Germany <=> Netherlands connection.....   
>  H
> |  http://www.mpi-sb.mpg.de/~gziegler | http://lysator.liu.se/~gz       
>  E
> \-----------------------------F-U-T-U-R- 
> E-------------------------------/
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at projects.blender.org
> http://projects.blender.org/mailman/listinfo/bf-committers
>
>
------------------------------------------------------------------------ 
--
Ton Roosendaal  Blender Foundation ton at blender.org  
http://www.blender.org



More information about the Bf-committers mailing list