I'm using the well known workaround for retrieving render results in python by creating a CompositorNodeViewer and connecting that to the Render Layers:
view_node = scene.node_tree.nodes.new('CompositorNodeViewer') render_node = scene.node_tree.nodes['Render Layers'] scene.node_tree.links.new(render_node.outputs['Image'], view_node.inputs['Image']) bpy.ops.render.render(write_still=True) pixels = np.array(bpy.data.images['Viewer Node'].pixels)
This is working very well, but I'm now facing an issue which is probably caused by color space conversions. I am interested in a linear color space output, but I seem to get something else. The output images seem to saturate at a specific value (sometimes it is 15.0, sometimes it's 27.0 depending on the scene I'm rendering). When I increase the emission strength of the light (using cycles renderer), I don't get larger values in the output. When the light levels are lower, I don't see said saturation effects.
I already tried to change the various color models for the scene, but the problem persists.
I also tried to save the output as .exr file suspecting that the effect might be caused by automatic color space conversion but it seems that the .exr files also show the saturation effect (besides being very uncomfortable to work with).
Does anyone know what causes these non-linear responses in blender? And maybe someone can give some tips to prevent them?
Thanks in advance!
EDIT: Unfortunately I can't reproduce the effect with the default scene. Maybe this is a sign that the effect is not related to color space conversion but to something else...