Hello,
I'm testing the new features of Gaffer 1.6, especially the Merge EXR feature.
I’ve created a simple setup where I define some default outputs that all share the same file path. This setup works fine, and I can see all the layers in my EXR.
However, when I try to customize my outputs by changing the filter or preserve layer name parameters, I get the following errors:
ERROR [Render] Render.task : Mismatch in combined output driver for file name ".../renders/gaffer_simple_setup_v001/layer01/multiExr.0001.exr" : value of parameter "filter"
ERROR [Render] gaffer execute : executing Render : See previous message for details
ERROR [Render] Execution failed for frame 1
It seems that all the outputs must share exactly the same parameters to avoid errors.
This is problematic because I want to include denoised AOVs in my EXR using a variance filter.
Am I missing someting or is it a limitation ?
Thx,
Seb
--
You received this message because you are subscribed to the Google Groups "gaffer-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to gaffer-dev+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/gaffer-dev/deb47a0e-b5e7-4682-81dc-afd987038509n%40googlegroups.com.
Hello John,
I’ve tested the new Gaffer 1.6.1.0 and the EXR merge seems to work fine. I can merge multiple AOVs and denoise them with the Arnold Noice command line.
There’s only one thing I can’t get to work as expected. If I enable layerPerLightGroup in my beauty AOV to generate the light groups, the RGBA channel doesn’t appear in the EXR file.
When I check the file in Nuke, I can see the light group channels, but the rgb and rgba channels are empty.
I found a workaround by creating a custom output with Arnold light path expressions, which makes the rgb and rgba channels visible. However, this breaks the EXR channel metadata and the denoiser no longer works.
Do you have any idea how I can fix this, or is it a bug?
Thanks,
Seb

To view this discussion visit https://groups.google.com/d/msgid/gaffer-dev/83695d6e-6bff-443b-a75e-21e1ea534692n%40googlegroups.com.
I guess the outputs are written and merged into a single-part EXR by default, otherwise Arnold Noice wouldn’t work.
But is there an option in Gaffer to merge the outputs into a multi-part EXR? In Maya, there is an option to render the EXR as multi-part.
If I use the Arnold denoiser, I have to write another EXR file, and then I can choose multi-part EXR. But if I don’t need the Arnold denoiser, it would be nice to render directly to multi-part EXR to avoid the extra post-process step.
Thx,
Seb
It was simple as that... I had indeed created a layerPerLightGroup attribute for the lightgroup output, but I hadn’t created it on the beauty, thinking it wasn’t necessary.Now it works perfectly !
But is there an option in Gaffer to merge the outputs into a multi-part EXR? In Maya, there is an option to render the EXR as multi-part.
Thx, I’ll give multi-part a try to see if it works.
I’m also trying to see if I can get the Arnold Noice denoiser to work. It works fine as long as I don’t use the temporal flags, but when I do, I get this warnings in the logs:
- Frame numbering from metadata is not consistent, using default indices.
I checked, and it seems Noice uses the "EXR/arnold/frame" metadata for temporal denoising. When I inspect my EXR metadata, the "EXR/arnold/frame" value stays at 0 across all frames.
Is there a way to fix this? I checked in Maya, and the "EXR/arnold/frame" metadata is dynamic there, I can see the correct frame number.
Thx,
Seb
Is there a way to fix this? I checked in Maya, and the "EXR/arnold/frame" metadata is dynamic there, I can see the correct frame number.
Thx for the metadata workaround !
I just have one remark about it: since the multipart parameter must be the same for all outputs in case of merge exr, wouldn’t it be a better idea if the multipart option lived in the Arnold render options instead of in each output?
Far from being an expert on any OpenEXR standards (if there are any in relation to this issue) but I would assume the channel order should be set in an alphabetical order, as you suggest, with R,G,B,A always being on the 'top of the stack' (in the most simple terminology).
That is what I was referring to with the term "correct". I might be completely wrong but, from what I can tell, that would be most compatible (or expected input) with other image readers out there.
In the example I added here above (legacy - all options off), you can clearly see that this is the case. R,G,B,A come first and then the rest of the AOVs in an alphabetical order - Although only a single subimage (non multipart) it might still be an indication of the 'standard' way of doing this.
Just out of curiosity, what is the mechanic within the imageWriter node? In our "post merge" process method, we're not deliberately feeding separate AOV renders alphabetically into the CollectImages node and yet the output does come out "correct".
I can not immediately see a use-case wherein we would ever want the order to be something specific beyond that rule, or any options being necessary for a custom output - rendering deep data or anything else. Perhaps someone else here might be able to chime in on that.
I've taken a stab at fixing this in https://github.com/GafferHQ/gaffer/pull/6668. It ensures that the RGB/RGBA part comes first, and the other parts come after, sorted alphabetically by layer name.
I think `oiiotool` is doing the sorting for you here - `exrheader` would give you a more truthful readout of the order within the file.
--
You received this message because you are subscribed to a topic in the Google Groups "gaffer-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/gaffer-dev/nAnRyHTLCUI/unsubscribe.
To unsubscribe from this group and all its topics, send an email to gaffer-dev+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/gaffer-dev/CAB8pVg%2B_ufv0mrmeBMRdx%2B%2B2NLApnmzq9bCLfxQW5ypzC0AUcg%40mail.gmail.com.