Skip to main content
Added link to a patch which solved this problem for me.
Source Link

I just grabbed Blender 2.72b source files to check this issue.

In short: with current Blender (2.72b and older) it is only possible to draw to the "combined" and "vector" passes of a multilayer OpenEXR file with Blender's paint tool.

Reason: Blender's low level paint tool C algorithms (filling, painting a stroke, etc.) are all solely working on 4 channel interleaved float buffers internally. The "combined" and "vector" passes are always stored as 4 channel layers to .exr files by Blender, so those are fine, but most other render passes are stored as 3 channel layers or even 1 channel layers to .exr files and when Blender opens those other layers from .exr files it allocates 3 channel (or 1 channel respectively) interleaved float buffers internally for them.

It also does not make any difference BTW whether you select "RGB" or "RGBA" in the render settings, you will get the same .exr file and end up with the same problem.


UPDATE: I wrote a patch against Blender 2.72b which solved this problem for me. Feel free to test it, forward it to Blender developers or whatever you think might be appropriate. Please note that this patch is neither optimized, nor thoroughly tested, so make sure you have a backup of your .exr file(s) before painting to them.

I just grabbed Blender 2.72b source files to check this issue.

In short: with current Blender (2.72b and older) it is only possible to draw to the "combined" and "vector" passes of a multilayer OpenEXR file with Blender's paint tool.

Reason: Blender's low level paint tool C algorithms (filling, painting a stroke, etc.) are all solely working on 4 channel interleaved float buffers internally. The "combined" and "vector" passes are always stored as 4 channel layers to .exr files by Blender, so those are fine, but most other render passes are stored as 3 channel layers or even 1 channel layers to .exr files and when Blender opens those other layers from .exr files it allocates 3 channel (or 1 channel respectively) interleaved float buffers internally for them.

It also does not make any difference BTW whether you select "RGB" or "RGBA" in the render settings, you will get the same .exr file and end up with the same problem.

I just grabbed Blender 2.72b source files to check this issue.

In short: with current Blender (2.72b and older) it is only possible to draw to the "combined" and "vector" passes of a multilayer OpenEXR file with Blender's paint tool.

Reason: Blender's low level paint tool C algorithms (filling, painting a stroke, etc.) are all solely working on 4 channel interleaved float buffers internally. The "combined" and "vector" passes are always stored as 4 channel layers to .exr files by Blender, so those are fine, but most other render passes are stored as 3 channel layers or even 1 channel layers to .exr files and when Blender opens those other layers from .exr files it allocates 3 channel (or 1 channel respectively) interleaved float buffers internally for them.

It also does not make any difference BTW whether you select "RGB" or "RGBA" in the render settings, you will get the same .exr file and end up with the same problem.


UPDATE: I wrote a patch against Blender 2.72b which solved this problem for me. Feel free to test it, forward it to Blender developers or whatever you think might be appropriate. Please note that this patch is neither optimized, nor thoroughly tested, so make sure you have a backup of your .exr file(s) before painting to them.

Source Link
Blub
  • 101
  • 5

I just grabbed Blender 2.72b source files to check this issue.

In short: with current Blender (2.72b and older) it is only possible to draw to the "combined" and "vector" passes of a multilayer OpenEXR file with Blender's paint tool.

Reason: Blender's low level paint tool C algorithms (filling, painting a stroke, etc.) are all solely working on 4 channel interleaved float buffers internally. The "combined" and "vector" passes are always stored as 4 channel layers to .exr files by Blender, so those are fine, but most other render passes are stored as 3 channel layers or even 1 channel layers to .exr files and when Blender opens those other layers from .exr files it allocates 3 channel (or 1 channel respectively) interleaved float buffers internally for them.

It also does not make any difference BTW whether you select "RGB" or "RGBA" in the render settings, you will get the same .exr file and end up with the same problem.