人气 814

[图文教程] [教程] 如何在 Blender 中配置 ACES 工作流 [复制链接]

Snallolla 2022-3-26 20:35:01

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
一、准备配置文件

已经给大家配好一份整合了 ACES 和 Blender 内建显示转换的文件:
https://github.com/Ginurx/Blender-ACES-Config​github.com/Ginurx/Blender-ACES-Config
到目前为止(2022.3.26),虽然你也能找到其他号称整合了 Blender 内建 filmic 显示转换的配置,但那些配置都是不对的。那些配置文件简单的复制粘贴拼合,不做恰当的色彩空间转换,会导致单纯显示一张 sRGB 图都会变暗。看在辛勤劳动的份上请给个 star :)
装了 git 就直接把仓库 clone 到本地,没装的直接下载 zip 解压。
DQzR3nSqNtSwfTnE.jpg

二、使用配置文件

有了一份起始的配置文件,下一步就是要把配置文件用起来,用起来有不同的方式,推荐大家用方法2。
方法1,替换法

先到你 Blender 安装目录,在 datafiles 目录下能看到 colormanagement 目录,备份 colormanagement
将仓库中以下文件或文件夹粘贴到 Blender 的 colormanagerment 目录:

  • aces_luts
  • filmic
  • luts
  • config.ocio
启动 Blender,在 Render Properties 下检查 Color Management 面板,Display Device 中是否已经有 ACES,有的话就说明成功了。
N8y778cL8c7cZ8jJ.jpg

方法2,批处理启动
这里讲的是 Windows 的做法(Mac OS X 可以用 Automator,Linux 可以用 bash 脚本实现一样的目的)。
打开记事本,粘贴以下文字:
set OCIO=D:\Blender-ACES-Config\config.ociostart "Blender (ACES workflow)" "C:\Program Files\Blender Foundation\Blender 3.1\blender.exe"
把其中的两个路径根据你的实际情况做修改:

  • 把 D:\Blender-ACES-Config\config.ocio 改成下载解压后包中的 config.ocio 的路径
  • 把 C:\Program Files\Blender Foundation\Blender 3.1\blender.exe 改成你电脑上 blender.exe 所在的路径。
将文件保存后,把 .txt 后缀修改成 .bat 后缀。
如果没看到 .txt 就把后缀显示出来再改。
笔记分享大全:Win10系统如何将文件后缀名显示出来?
接下来把这个 bat 放到一个你觉得方便的地方,例如桌面。用这个 bat 启动 Blender 就会激活 ACES 工作流模式。这种方式有一个好处,用原有 Blender 快捷方式启动时完全不受影响。
方法3,环境变量法
Blender 的色彩管理基于 OpenColorIO , 可以用环境变量 OCIO 来指定配置文件所在路径。但这种方式会影响所有其他同样也是基于 OpenColorIO 做色彩管理的软件。容易搞的一团糟,所以非常不推荐。
三、调整配置文件

用记事本或 VS Code 等纯文本编辑工具打开 config.ocio 并修改。
需要调整配置主要就四个:
配置项作用default_byteBlender 中导入位图(SDR、LDR 图)的默认色彩空间,默认值是标准 sRGB,可以把这个参数调整成你的主要位图色彩空间,个别不一样的可以单独修改(见第四节)。default_floatBlender 中导入浮点图(HDR图)的默认色彩空间,例如 .EXR 文件,.HDR 文件。默认值是 sRGB 色域,线性存储的色彩空间。可以根据自己的工作流程调整成大多数 HDR 素材所使用的工作空间,例如你在剪辑软件中导出的素材都以 ACES 交换格式导出的,那可以配置成 ACES - ACES2065-1。
和 default_byte 一样,个别不同的素材可以单独修改。default_sequencerSequencer 中图片合成时所用的色彩空间,这个选择主观性比较大。

线性还是伽马取决于自己的审美判断。例如 Photoshop 是在伽马空间做合成的,大家早已习惯;而线性空间能合成能获得更加“正确”的结果,但未必是审美上“正确”的。

色域选择要看最终的输出,如果最终结果输出只有 sRGB 或 Rec709 资源,那色域和他们匹配会比较好;若你最终要输出多个色域的资源,那建议选大一点的色域,或者用 AP1 (ACEScg 的色域)。color_picking这个决定了 Blender 中拾色器的颜色显示。
需要注意的是你在面板上直接填写的 RGB 值,不要默认它就是你熟悉的 sRGB primaries,RGB 值代表了什么色域取决于另一个配置选项 scene_linear,在 ACES 工作流中,这个为 ACEScg,即 AP1 的色域。

你的显示器一定没法直接显示 AP1,所以需要经变换后显示才能在你的显示器上拾取到相对接近的颜色。默认值 Utility - sRGB - Texture,这能让你的拾色器和原版的更接近。如果你的显示器工作在 P3 色域下,那可以把它调整成显示器所用的色彩空间会更好些。

如果你期望不是和传统的拾色器更接近,而是与 ACES 工作流下的显示更接近可以选用 Output - 前缀的色彩空间,例如 Output - sRGB,这个色彩空间包含了 ACES 的 RRT+ODT,这和 Utility - sRGB - Texture 是不一样的。其他选项 reference、scene_linear、rendering、data、aces_interchange 不要动(正确性要求)
还有一些其他的选项是 OCIO 中定义的,但 Blender 没用使用的,color_timing、compositing_log、default、matte_paint、texture_paint 也不用修改。
四、Blender 中配置色彩空间的简单介绍

贴图的色彩空间会根据上面的配置设置为默认值。但你也可以手工修改:
k5yihyX04SPCCmSy.jpg

有大量的色彩空间都是你用不上的,例如你没有 ARRI 摄像机的素材,那对于针对 ARRI 的 IDT 显示在长长的列表里会非常麻烦,甚至一屏都显示不下:
LNY050M9hsw0aNAU.jpg

这个时候你可以把根本不可能用的色彩空间去掉,介绍两种方式:
方法1,删除色彩空间

例如你不需要 Input - ARRI - V3 LogC (EI800) - Wide Gamut , 可以在配置文件中找到它:
F0IW3dvd99SVW99Z.jpg

然后把关于这个色彩空间的定义整个删除。
方法2,通过环境变量隐藏

OCIO 有一个内建的环境变量 OCIO_INACTIVE_COLORSPACES,用这个环境变量可以隐藏掉色彩空间,这种方法不需要修改配置文件。如果需要隐藏多个色彩空间,用冒号分隔(请不要用中文冒号)
OCFBqoqUa929guzO.jpg

五、其他

虽然 reference 和 scene_linear 这两个 role 不用修改,但很有必要拿出来说下:
Reference
reference 的色彩空间是配置文件中所有色彩空间变换的桥梁,可以看到配置文件中色彩空间或是有 from_referecne 或是有 to_reference 或是都有。通过 from_reference、to_reference 定义了如何从 reference 变换到当前定义的空间,或从当前空间如何变换到 reference 空间。
在我们的配置文件中,reference 实际上是 ACES-ACES2065-1,即 AP0 + linear。但 reference 填写的是 Utility-Raw。Utility-Raw 根据定义 isdata: true,即认为它是数据不是颜色,一个 sRGB to_reference 的过程中经线性化,color primary 变换转到 ACES-ACES2065-1,已经是 AP0+linear 数据,reference 本身不需要参与到变换,Utility-Raw 即可。
而数据和颜色有一个很大的区别,ColorSpaceTransform 的默认行为不一样,如果其中一个是数据空间的话,默认情况下它是不会做任何变换的(除非 dataBypass 为 false)。因此想用 ColorSpaceTransform 的地方有一侧想用 reference 空间,即 AP0 + linear,则有两种写法,一种是 Utility-Raw,dataBypass: false,更好的是写 ACES-ACES2065-1,它就是 reference 但它是颜色空间,会参与变换。
此外,Blender 默认的色彩管理配置文件使用的 reference 是 rec709 + linear,其他的 display 和 view 变换都是基于 rec709 的,将它们直接拷贝到 ACES 的配置文件中当然是有问题的。一张 sRGB 图导入时在ACES的情况下变换到 AP0,最终以 Blender 的 Standard (即sRGB) 显示的时,都没有从 AP0 转到 sRGB,结果怎么可能对?所以 Blender 中拷贝过来的色彩空间一定要额外增加 ColorSpaceTransform
Scene Linear

scene_linear (同 rendering),即渲染时所使用的色彩空间,ACES 下,要求是 ACEScg,即 AP1 + linear,关于线性,这没什么好说的,写实渲染追求正确性则必然是线性的。而 AP1 其实会带来一些潜在的问题,最终屏幕若显示的 sRGB,色域更小,(ACES 1.3 以前,还没有引入 gamut compression 的 look transform) 多出来的颜色直接 clip,如果素材用的颜色有非常饱和的 AP1 color primary,就会产生 artifacts,见 Colour artefacts or breakup using ACES
agyXYs2wBb2YSyCx.jpg



关于 Blender 的改进建议


  • 应当增加启动参数直接指定色彩管理配置文件路径,而不是基于 OCIO 环境变量。
  • 让用户定义拾色器的空间,内部再转换到 scene_linear。例如 scene_linear 是 ACEScg,但拾色器上让用户可以填写以 sRGB color primaries 定义的 RGB 值。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|小黑屋|九艺游戏动画论坛 ( 津ICP备2022000452号-1 )

GMT+8, 2024-3-29 16:03 , Processed in 0.127554 second(s), 26 queries .

Powered by Discuz! X3.4  © 2001-2017 Discuz Team.