色彩管理

    同一张渲染图像的不同曝光情况

    在Blender中实现色彩管理, OpenColorIO (OCIO) 库已经集成到Blender。该库提供了更精确的控制,在不同的 LUT 通过集成用户的颜色配置文件,来实现用户在其他软件上工作的无缝对接。

    为了得到正确的效果,需要不同的 来呈现渲染效果以及存储图像。渲染和合成选择在 线性 色彩空间中操作效果更佳,因为它的处理更贴近自然,而且让计算的指令执行得更精准到位。

    ../../_images/render_post-process_color-management_linear-workflow.svg线性工作流示例

    线性色彩实际上意味着当我们加倍全局光的数量,那么颜色值也将加倍。换句话说,如果我们有两张图片/渲染图,分别有一或两束光打在上面,然后将这些图像拼接在一起,结果将是一张图像/渲染图拥有双方的光源。因此,根据辐射度来测量线性空间,可以实现图像般逼真的渲染和合成效果。

    然而,这些值并不能直接被人眼或是显示设备所感知,而且图像文件经常存储于不同的色彩空间,因此我们应该留意这些线性色彩空间的正确的转入和转出。

    指引

    为了正确地显示渲染,颜色空间会通过转换到不同的播放设备,此处可以进行设置。电脑显示器的工作原理和数字电影投影仪HDTV有所差异,场景属性有如下设置:

    • 显示设备
    • 正在查看的图像的设备。

    大多数显示器配置为 sRGB色彩空间,所以在电脑上作业时,此选项通常为默认值。除非有另外的显示设备连接到这台电脑去查看图像,又或是将图像文件输出到另一台设备上显示时,则这块的选项需要改变设置。

    Rec709 通常用于高清电视,XYZ 和 DCI P3 是常见的数字投影仪。

    设置为空时,色彩管理不可用。

    从线性空间到显示设备空间的转换。

    用户可以有一个较为艺术的渲染选择:由于显示设备不能直接播放全波段光谱,并且显示的亮度范围有限,因此我们筛选出有效的颜色去适应全部的设备。此外,渲染也常用于让显示的画面更独特,就像实际在电影中播放的效果一样。

    另一个常见的用例是当你想检查渲染情况,在黑暗的阴影或明亮的亮点可以查看细节,或识别渲染错误。这样的设置只能暂时使用,而不用于最终渲染。

    • 视图
      • 默认
      • 除了显示设备的转换外,没有其他额外的转换
      • Filmic
      • For more photorealistic results and better handling of high dynamic range.The contrast can be adjusted by changing the Look option for the Filmic view transform.
      • 使用ACES指引的渲染转换方式来模拟电影般的效果。
      • 胶片
      • 使用一种称为电影仿真技术,使渲染看起来类似于胶片相机的效果。这通常是通过黑色粉状颗粒和降低图像的对比度来实现胶片效果。
      • Raw
      • 用于检查图像而不是用于最终输出。RAW给出的图像不作任何色彩空间转换。
      • 对数
      • 用于检查图像而不是用于最终输出。对数的功效类似于Raw,区别在于对数提供的图像效果更为平缓,没有过于昏暗或者强光的区域。
      • False Color
      • Shows a heat map of image intensities, to visualize the dynamic range.
    • 曝光度
    • 用于控制色彩空间转换前的图像亮度(in stops),计算公式为 (output_value = render_value × 2^{(exposure)})
    • 伽玛
    • 在色彩空间转换后的额外的图像伽玛校正应用。注意,伽玛校正可应用在绝大部分情况,但除了以下这种:默认的sRGB或Rec709颜色空间转换已经包括了约2.2的伽玛校正(除 RawRaw 视图)。
    • 效果
    • 在色彩空间转换之前,可以从一组标准的电影响应数据中选择一种艺术效果,这些数据大致模拟某些类型的影片的效果。
    • 在色彩空间转换之前调整RGB曲线来控制图像颜色。阅读更多关于使用 曲线部件
    • 色彩空间
    • 序列编辑中的色彩显示空间:默认情况下,序列编辑在色彩显示空间中的sRGB空间运行,但它也可以被设置在线性空间中运行,譬如合成节点又或者是另一个色彩空间运行。不同的色彩空间将产生不同的效果,例如颜色校正、交叉渐变等操作效果。

    在加载和保存媒体格式时谨记色彩管理。PNG或JPEG类的文件格式显而易见的需要存储颜色信息,因此会在色彩显示空间存储以备呈现,而不是在线性空间。例如渲染中使用纹理效果,首先需要转换为线性。当用于web上显示时,它们还需要被转换为显示空间。其他的文件格式如OpenEXR等存储在线性色彩空间,是产生的中间文件。

    使用图像文件时,通常色彩空间使用默认设置即可。否则,可以在图像设置中配置图像文件的色彩空间。常见的需要手动设置的一种情况是:使用或者烘烤凹凸贴图或位移图时,例如。这样的贴图实际上不存储颜色信息,只是将数据编译为颜色。在这种情况下,它们应该被标记为 非颜色数据

    线性色彩显示空间场景中,图像数据块将始终以浮动缓存的方式在内存中存储,而内存中的字节缓存和驱动器中的文件都存储在指定的色彩显示空间中,设置如下:

    • 色彩空间
    • 驱动器上的图像文件的色彩显示空间。取决于文件的格式,比如PNG或JPEG图像通常存储在sRGB,而OpenEXR图像存储在线性色彩显示空间。一些图像,如法线,凹凸或模板贴图不完全包含 '颜色' 信息,这种情况下没有进行色彩显示空间转换。因此对于这些图像,色彩显示空间应设置为 ../../_images/render_post-process_color-management_image-settings.png色彩管理的图像设置。

    默认情况下只有显示和保存时渲染视图需要用到转换。这些渲染结果、查看器图像数据块以及文件被直接保存到渲染动画操作的驱动器上。然而,当加载一个已存储在中间OpenEXR文件的渲染对象,Blander不能自动检测出这是一个渲染(如图像纹理或位移图)。我们需要指定这是一个渲染对象,且希望应用转换操作,则设置这两个:

    • 预览为渲染结果
    • 显示图像数据块(不仅是渲染)情况如视图转换,曝光,伽玛,RGB曲线应用。和直接渲染一样,常用于查看在线性OpenEXR文件中渲染完成的帧。
    • 另存为渲染图
    • 图像的选项免除了用户的操作设置如视图变换,曝光,伽玛,RGB曲线。常用于在显示空间储存线性OpenEXR如PNG或JPEG文件。

    Blender中OpenColorIO的标准配置,包含一系列常用的设置,例如显示设备和视图变换。参考用于 Rec. 709色度以及 D65白点的 线性色彩显示空间的 。

    然而,OpenColorIO也被设计用来提供一致的用户体验,通过 多重应用 方式,共享的配置文件即可使用。Blender将使用标准的 OCIO环境变量读取OpenColorIO配置。更多关于如何建立这样一个工作流的信息可以在 中查看。

    目前使用的色彩显示空间规则如下:

    • 场景线性色彩显示空间
    • 用于渲染、合成以及在内存中存储所有浮点精度图像的色彩空间。
    • 默认序列编辑设置
    • 如果没有指定 线性场景 ,则在序列编辑中使用默认的色彩显示空间。
    • 默认字节设置
    • 字节精度的图像和文件的默认色彩显示空间,如果没有指定纹理涂料,则字节精度图像和文件使用默认的色彩显示空间。
    • 如果没有指定 线性场景 ,浮动精度的图像和文件则使用默认的色彩显示。Blender标准配置还包括对 ACES ()的支持,虽然我们有不同的线性颜色空间。通过线性ACES色彩空间,可以加载和保存EXR文件,RRT视图变换可用于查看图像的标准显示转换。然而,ACES色域大于709色域,所以最好是使用ACES。OpenColorIO 提供 ACES功能。