There is something very odd with how deep image coordinates are handled - I reported this to support in September:

The main issues are:

1) Channel names are not sanitized for layers (e.g diffuse.R doesn't get
corrected to "diffuse.red")

2) EXR's where the data window is larger or smaller than the display
window (i.e overscan) do not read correctly. Specifically it didn't
account for non-origin displayWindow as the exrReader plugin does, nor
the black outside pixel


I modified the supplied exrReaderDeep.cpp to address these points, which
revealed a few more confusing problems:

3) Deep images seem to appear in the viewer about 1/4 of a pixel offset.
For example, in if I view a nondeep EXR, put the colour-picker box on a
pixel, then view the deep stream, the colour picker is no longer aligned
to a pixel! (see attached deep_stream_misalignment_example.png)

This didn't seem to cause any actual problems - the pixels seemed ot
composite correctly, just the viewer made it look offset

4) The NDK API DeepReader::setInfo method takes a "width and height".
However calling setInfo(100, 50, ...) produces an image format which is
99x49px.
I tried doing setInfo(100+1, 50+1, ...) which produced the correct
format, but the format description in the viewer infostrip read differently

The infostrip one seemed correct (matched what "input.width" etc
returned), while the viewer format size was wrong. See
format_infostrip_viewer_mismatch.png

The first item is this "Bug 51029 - DeepRead2 deep exr with overscan not lining up properly with normal render "

The other three items: "Bug 51029 - DeepRead2 deep exr with overscan not lining up properly with normal render"

Some of this may be ~fixed in the Nuke 10 (the NDK exrReaderDeep.cpp example now has the channel name remapping, and -1 bbox adjustment along with a comment explaining why)


On 19/05/16 06:50, Josh Imbruglia wrote:
I'm curious if anyone is able to provide some clarity on what the
function boxToBox does, can be seen in the sample deepExrReader[1],
snippet below.

     Box displayBox = boxToBox(header.displayWindow(), header.displayWindow());
     Box dataBox = boxToBox(header.dataWindow(), header.displayWindow());

I've noticed that if I pass a display and datawindow that are identical,
eg. -64, -32, 2194, 888, i get two box's back which are of size -64, 0,
2194, 921.

Any idea why it's setting the height to be 0, max.y-min.y+1? This seems
to be the same behaviour when viewing these deep exrs in rv too.

Any insight would be greatly appreciated.

Thanks,
Josh

1 -
https://www.thefoundry.co.uk/products/nuke/developers/100/ndkreference/examples/exrReaderDeep.cpp


_______________________________________________
Nuke-dev mailing list
Nuke-dev@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev


--
ben dickson
2D TD | ben.dick...@rsp.com.au
rising sun pictures | www.rsp.com.au
_______________________________________________
Nuke-dev mailing list
Nuke-dev@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev

Reply via email to