Annotated frames dark when using OCIO Source Setup

we are using a slightly adjusted OCIO package for RV 7.2.0 (behaviour happens in RV6 as well) and it seems that annotated frames (uploaded through SG Review) are just running through the the RVLinearizeGroup (or no group at all - still need to check) and are not affected by the Look or Display Group.

Our OCIO source setup is slightly adjusted to put the OCIO Display Transforms into the RVLookPipelineGroup. The RVDisplayPipelineGroup is just a pass-through where nothing happens, as you can see here:

We would prefer that annotations are taken after running through all groups (Linearize, Look, Display) to simply save the exact same picture as seen on screen. Thats the way when actually using the new Snapshot feature of SG Review where you can draw a rectangle around the desired area. Slight differences that might occur due to different displays (P3 vs. rec.709) are negligible compared to the offset we are seeing right now. Many paint strokes simply coudn't be seen as linear clipping JPGs.

10 comments

That is indeed odd. You say you have slightly modified your setup, do you use the $OCIO variable for your config, or do you seek this out programmatically?

The export for annotated frames utilizes RVIO, which means it must save your session for export, then re-read the session in RVIO while exporting frames. The RV session does not capture the state of which OCIO config is loaded, so my leading theory is that you might not have your OCIO nodes properly initialized in the RVIO session.

You said that you have moved most of your nodes away from the display group; the export will actually uses the defaultOutputGroup, so it would be useful to see what the exported rv file looks like with your defaultOutputGroup.

Something that we often use when debugging exports is to use the following flag when launching rv:

-flags debug_export

This should leave the RVIO .rv file on disk; you can find it by looking at your terminal for a message that looks similar to this:

So in short, if you are doing something fancy to load your OCIO config dynamically, you may need to set the OCIO variable for the subprocess to pick up the config correctly. If the OCIO config is purely generated at run-time, you will need to use PyOCIO to write the config to a tempfile and then set the OICO variable for the subprocess. Additionally, check to see if any display conditioning you need to do pre-file writing is applied to the exported .rv session file using the -flags debug_export.

If you expand those variables into each node's context variables, then those should be stored on the node and not needed in the environment. That would cause problems if you have different SEQ/SHOT for each source and they aren't fully baked. You can validate you are set properly if those context variables show up as fully defined under the associated nodes in the exported session.

If you rely on environment variables for your context variables, then yes, you would need to define those, but in that case, they should already be in your environment.

I tested your recommendations today and unfortunately it didn't even export a frame. Even after re-enabling all plugins and testing on different machines I cant repdroduce the too dark (linear) output I mentioned initially. RV is hangig while saying that it is rendering annotated frames:

But after using the debug flag I am at least able to give you some more insight.

This grab from the RV Console shows which contexts and colorspaces are fed into the Linearize / Look / Display Pipeline Groups of RV.

Obvious "mistakes" in here are for me the missing OCIO Look and Linearization Nodes. Only the display node is in here, which uses the wrong context, as I am alway passing SEQ: 0000 and SHOT: 0000 as context when the ocio_node_from_media gets None as media

Very strange!!! Does the problem also exhibit itself when not running from the commandline (obviously that would make running the debug flag harder)? I ask because when looking up those errors, I found this python bug on Windows: