Thanks for the response.
...I too mix up the nomenclature of these all the time so no reason to
excuse. ...I think we're all talking about the same thing here, so we
should be good ...hopefully haha.

Anyways, yes I agree ... this would be an excellent feature to have. In my
case I simply do not care about the number or names of the subimages
(parts) - I really just need OIIO, or any other tool, to do a 'passthru' of
subimage names and convert the whole thing into a more "optimized"
multipart image. Exactly as you described, really.
The other reason is because our output renders do not always have the same
layout of subimage names, one render could have 8 parts when another only
3, so setting up a "standard" command line is not really an option - would
simply not work for any arbitrary input image.

When I say parts ... I mean, within a single EXR are multiple RGBA parts.
These could be "beauty.RGB", "Specular.RGB", "Albedo.RGB" etc. (what Nuke
refers to as channels/layers). Not just a single channel R,G,B or A for a
single EXR.

Also when I say "optimized" I'm simply referring to the results I'm seeing
after doing this through Nuke. But what Nuke does exactly (when I re-write
the images) I do not fully understand. The docs say (as I mentioned before):

"Sets the interleave strategy for channels, layers ... file is created as
described by the following options, with layers and parts sorted
alphabetically" blahblah

Is it just the fact that subimages are sorted alphabetically before written
out again as a multipart image or is there some other magic to this? ... it
doesn't really make sense.
If that was the case ... I suppose one could write a small python script
that scans the file, list everything and write out again after sorting all
subimages alphabetically.
Or does the fact that things are somehow sorted alphabetically make no
difference here, there are other things happening 'under the hood' that
dictate whether the files are "more optimized for reading"?

In any case, it kind of defeats the purpose though as I would prefer not to
rely on writing custom tools or other third party solutions. I would just
like our render farm to run a simple "post operation" command for each
image - in and out. Similar to what we do when converting Tiled EXRs to
Scanline EXRs (which works fantastic).

I've not tried the ‘exrmultipart’ tool Jonathan mentioned but at a quick
glance it seems to require the same kind of input - knowing/a list of all
channels/subimages prior to repackaging so it doesn't appear as if OIIO is
any worse. I might be wrong though.

Thanks for your help - much appreciated.

cheers,
Matthias.

*--Matthías Bjarnason*
*VFX Supervisor*
RVX
Hólmaslóð 8
101 Reykjavík, Iceland
www.rvx.is


On Fri, May 7, 2021 at 5:29 PM Matthías Bjarnason <matthias.bjarna...@rvx.is>
wrote:

> Can someone please help explain how one goes about converting EXR (pre
> 2.0) that includes multiple channels (render engine output AOVs) to a
> "multi part" EXR, more optimized for reading, using OIIO?
>
> So far I have been using Foundry's Nuke for this purpose but that is
> obviously an overkill solution and extremely expensive use of licenses
> ...which I'd like to be not dependent on if possible.
>
> By reading the OIIO help, it seems like this is all possible but I can't
> for the life of me figure out how ...using a simple command. Am I missing
> something?
>
> *For reference Nuke's output(write) node documentation states:*
>
>
>>
>>
>>
>>
>>
>> *Sets the interleave strategy for channels, layers, and views with a
>> rendered .exr file. A single- or multi-part .exr file is created as
>> described by the following options, with layers and parts sorted
>> alphabetically:• channels, layers and views - creates a single-part .exr
>> file ensuring backward compatibility with applications that use OpenEXR
>> 1.x.• channels and layers - creates a multi-part .exr file with one part
>> per view. This can improve Read performance as Nuke only reads the part
>> associated with the specified view.• channels - creates a multi-part .exr
>> with one part per layer.*
>>
>
>
> It would be both the second and third option scenarios I'm most interested
> in recreating using OIIO but from what I can gather in the OIIO help, there
> is no simple flag/command to do this - a simple file IN file OUT.
>
>
> Is this at all possible using OIIO's basic tool commands?
>
> Any help appreciated - thanks.
>
> - M
>
_______________________________________________
Oiio-dev mailing list
Oiio-dev@lists.openimageio.org
http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org

Reply via email to