色彩管理¶
色彩管理对于创建物理上准确且在多个显示设备上看起来很棒的渲染和资源非常重要。它既用于确保管道的所有部分正确解释颜色,也用于进行曝光和颜色分级等艺术变化。
Blender的颜色管理基于 "开放色彩IO<https://opencolorio.org/>`__库。通过在多个应用进程中使用相同的 OpenColorIO 配置,将使用相同的色彩空间和转换来获得一致的结果。
工作流程¶
场景线性色彩空间¶
为了获得正确的结果,需要不同的 色彩空间 来渲染,显示和存储图像。渲染和合成最好在 场景线性 色彩空间中完成,该空间更接近自然,并使计算在物理上更准确。
如果颜色是线性的,则意味着如果实际上我们将光子数加倍,则颜色值也会加倍。换句话说,如果我们有两张照片/渲染器,每张照片/渲染器都有两个灯光中的一个,并将这些图像添加到一起,结果将与两个灯光都打开的渲染/照片相同。由此得出,这种辐射测量线性空间最适合照片级渲染和合成。
然而,这些值并不直接对应于人类感知或显示设备的工作方式。和图像文件通常存储在不同的色彩空间中。所以我们必须小心地进行这种场景线性色彩空间的正确转换。
显示变换¶
将场景线性颜色转换为显示涉及技术和艺术选择。
正确显示渲染需要转换到显示设备色彩空间。计算机显示器与数字电影放映机或HDTV的工作方式不同,因此需要不同的转换。
还有艺术选择。部分原因是显示设备无法显示全部色彩,只有有限的亮度,因此我们可以挤出颜色以适应设备的色域。除此之外,给渲染器一个特定的外观也是有用的,例如好像它们已经印在真实的相机胶片上。默认的电影转换执行此操作。
图像色彩空间¶
在加载和保存媒体格式时,记住色彩管理非常重要。诸如PNG或JPEG之类的文件格式通常将颜色存储在准备显示的色彩空间中,而不是存储在线性空间中。当它们在渲染中用作纹理时,它们需要首先转换为线性,当保存渲染以在Web上显示时,它们也需要转换为显示空间。
对于生产中的中间文件,建议使用OpenEXR文件。它们始终存储在场景线性色彩空间中,不会丢失任何数据。这使它们适合存储以后可以合成,颜色分级并转换为不同输出格式的渲染。
图像还可以包含实际上不是颜色的数据。例如,法线图或位移图仅包含矢量和偏移。此类图像应标记为非彩色数据,以便不会在其上进行色彩空间转换。
设置¶
参考
- 编辑器
属性
- 面板
- 显示设备
正在查看的图像的设备。
大多数计算机显示器都配置为sRGB色彩空间,因此在计算机上工作时,通常应将此选项保留为默认值。当在连接到计算机的另一个显示设备上查看图像时,或者当写出要在另一个设备上显示的图像文件时,通常会改变它。
Rec709 is commonly used for HDTVs, while XYZ and DCI-P3 are common for digital projectors. Color management can be disabled by setting the device to None.
- 查看变换
这些是在同一显示设备上查看图像的不同方式。
- 标准
除了显示设备的转换之外,没有额外的转换。通常用于非照片级真实结果或视频编辑,其中特定外观已经烘焙到输入视频中。
- 电影
用于逼真的结果和更好地处理高动态范围的颜色。可以通过更改电影视图变换的Look选项来调整对比度。
- 电影日志
转换为电影日志色彩空间。这可用于导出到颜色分级应用程序,或通过展平非常黑暗和明亮的区域来检查图像。
- 原始
用于检查图像,但不用于最终输出。Raw在没有任何色彩空间转换的情况下提供图像。
- 假色彩
显示图像强度的热图,以显示动态范围。
- 胶片效果
从一组测量的胶片响应数据中选择艺术效果,这些数据大致模拟某些胶片类型的外观。在色彩空间转换之前应用。
- 曝光
Used to control the image brightness (in stops) applied before color space conversion. It is calculated as follows: \(output\_value = render\_value × 2^{(exposure)}\)
- Gamma
在色彩空间转换后应用额外的伽马校正。请注意,默认显示变换已经执行了适当的转换,因此这主要作为艺术调整的附加效果。
- 序列容器
The color space that the Sequencer operates in. By default, the Sequencer operates in sRGB space, but it can also be set to work in Linear space like the Compositing nodes, or another color space. Different color spaces will give different results for color correction, crossfades, and other operations.
图像文件¶
使用图像文件时,默认色彩空间通常是正确的色彩空间。如果不是这种情况,可以在图像设置中配置图像文件的色彩空间。例如,需要手动更改的常见情况是使用或烘焙法线贴图或置换贴图。这样的地图实际上不存储颜色,只是编码为颜色的数据。这些图像应标记为非彩色数据。
Image data-blocks will always store float buffers in memory in the scene linear color space, while a byte buffer in memory and files in a drive are stored in the color space specified with this setting:
- 色彩空间
The color space of the image file on a drive. This depends on the file format, for example, PNG or JPEG images are often stored in sRGB, while OpenEXR images are stored in a linear color space. Some images such as normal, bump or stencil maps do not strictly contain 'colors', and on such values, no color space conversion should ever be applied. For such images, the color space should be set to Non-Color.
By default only renders are displayed and saved with the render view transformations applied. These are the Render Result and Viewer image data-blocks, and the files saved directly to a drive with the Render Animation operator. However, when loading a render saved to an intermediate OpenEXR file, Blender cannot detect automatically that this is a render (it could be e.g. an image texture or displacement map). We need to specify that this is a render and that we want the transformations applied, with these two settings:
- 预览为渲染结果
使用视图变换,曝光,伽马,RGB曲线显示图像数据块(不仅仅是渲染)。用于查看线性OpenEXR文件中的渲染帧与直接渲染时相同。
- 另存为渲染图
图像保存操作符中的选项可应用视图变换,曝光,伽玛,RGB曲线。这对于将线性OpenEXR保存为显示空间中的PNG或JPEG文件非常有用。
OpenColorIO配置¶
Blender 带有标准的 OpenColorIO 配置,其中包含许多有用的显示设备和视图转换。使用的参考线性 色彩空间 是具有 Rec.709 色度和 D65 白点的线性色彩空间。
However, OpenColorIO was also designed to give a consistent user experience across multiple applications, and for this, a single shared configuration file can be used. Blender will use the standard OCIO environment variable to read an OpenColorIO configuration other than the default Blender one. More information about how to set up such a workflow can be found on the OpenColorIO website.
Blender目前使用以下色彩空间规则:
scene_linear
用于在内存中渲染,合成和存储所有浮点精度图像的色彩空间。
data
非颜色数据的色彩空间。
XYZ
Standard linear XYZ color space. Used for effects such as blackbody emission to convert from physical units to the scene_linear color space.
color_picking
Defines the distribution of colors in color pickers. It is expected to be approximately perceptually linear, have the same gamut as the scene_linear color space, map 0..1 values to 0..1 values in the scene linear color space for predictable editing of material albedos.
default_sequencer
序列编辑中使用默认的色彩显示空间。如未指定,则为 scene_linear。
default_byte
字节精度图像和文件的默认色彩空间,如果未指定,则为 texture_paint。
default_float
浮点精度图像和文件的默认色彩空间,如未指定,则为 scene_linear。
标准的Blender配置包括支持以`ACES <https://www.oscars.org/science-technology/sci-tech-projects/aces>`__(代码和文档)色彩空间保存和加载图像。然而,ACES的色域比Rec.709的色域要大,所以为了获得最佳效果,应该使用ACES特定的配置文件。OpenColorIO提供了一个`ACES配置 <https://opencolorio.readthedocs.io/en/latest/configurations/_index.html>`__文件,尽管它可能需要再做一些调整才能在生产中使用。