引言 视错觉 人类视觉系统 什么是光? 从光到颜色 1931年和1976年的CIE色度图 RGB色彩空间及其组成部分 色彩空间的属性 行业标准 场景线性工作流程 查找表(LUT) OCIO(OpenColorIO) 格式 文章和博客 |
介绍
谈论电影摄影时,不能不提色彩管理。了解你所使用的色彩空间以及你的显示目标至关重要。第 1 章和第 1.5 章是本书中唯一的技术章节。我们将在后续章节中专注于艺术层面。别害怕!
当然,你可以在完全的 sRGB 色彩空间中工作,不使用 LUT,仍然获得不错的效果……但我们还是别走那条路。
是的,色彩管理确实很麻烦,但它会为你后续构建正确的灯光打下坚实的基础。计算机图形中的灯光与技术紧密相连,因此对这些概念有良好的理解非常重要。
市面上有一些不错的入门课程,比如《电影色彩》 Cinematic Color,但每次看到第九页那些数学公式时我总是有点挫败感!所以我尽量让本章保持简单且对艺术家友好。感谢阅读!
如果你不想从技术章节开始,我完全理解。你可以直接跳到第二章。
——但也许这值得付出努力……
第一个也是最重要的决定
根据我的经验,选择一个色彩管理工作流程(CMW)是开始一个项目时必须做出的第一个决定。因为,每一个艺术决策都会基于这个选择:
下面的预告片是数百名艺术家数千小时辛勤工作的一个例子,但由于错误的色彩管理而付诸东流。看看熔岩,它被钳制了!
开篇引语
我的部分资料来自 Thomas Mansencal 的这篇文章。由于内容有些技术性,我尝试为不熟悉该主题的读者简化说明。让我们从 Mark D. Fairchild 的这句精彩语录开始:
“为什么在颜色外观领域特别难以达成一致的术语?也许答案就在于这个主题的本质。几乎每个人都知道什么是颜色。
毕竟,他们从出生不久后就有了亲身的颜色体验。然而,很少有人能准确描述他们的颜色体验,甚至准确地定义颜色。”
视错觉
谈论颜色时需要考虑三件事:
眼睛
大脑
物体
这里有几个例子可以向你展示,我们的大脑很容易被欺骗,因此我们在谈论颜色时应保持谦逊。
穿过中心的灰色条实际上是一种不变的颜色!
Checker Shadow 错觉或Adelson的同色错觉。
是的,A 和 B 具有相同的值!我们希望圆柱体在棋盘上投射阴影,并且我们会补偿我们假设的圆柱体产生的阴影。 作者:Edward H.Adelson,由 Pbrok 矢量化。
你能猜到这个吗?
没错,就是同一个颜色!
是的,那是同一只狗的两倍背景中的黄色到蓝色渐变
完全颠覆了我们的认知。 怪异的,对吧?
你可以在互联网上找到很多视错觉。我很惊讶欺骗我是多么容易!
大卫诺维克的惊人视错觉! 所有的球体实际上都是相同的棕色......疯狂
动画幻象也很有趣。 如果你看一下右上角的点,移动的条纹会变成蓝色。 令人震惊!
看看中间的十字架……mocing 点变绿了!
证明颜色仍然很有争议,即使在社交网络上也是如此。这件衣服是蓝色的还是白色的?最后一个例子确实表明颜色仍然是一个热门话题。
您可以在互联网上找到大量的视错觉,比如我们最后的例子:这条裙子是蓝色还是白色?
—这条裙子也被科学家研究过!
人类视觉系统 (HVS)
首先要知道的是,人眼是一项极其复杂且先进的技术。我们正努力用相机和屏幕来模拟其重建过程,但效果远远不及。它是如何工作的 ?
我复制了上述网站上的大部分内容。
角膜是透明的前部覆盖层,允许光线进入。它的折射能力使光线弯曲,从而自由通过瞳孔。瞳孔是虹膜中央的开口,像相机的快门一样工作。它是一个可调节的开口,控制允许照射到晶状体上的光线强度。瞳孔能够根据进入眼睛的光线多少而放大或缩小。
光线穿过虹膜后,会通过眼睛的天然晶状体。这个透明且柔韧的结构像相机镜头一样,通过缩短或延长其宽度来正确聚焦光线。晶状体将光线聚焦通过玻璃体,玻璃体是一种致密、透明的凝胶状物质,充满眼球球体并支撑视网膜。
视网膜的功能类似于相机中的胶片。它接收角膜通过眼内晶状体聚焦的图像,并将该图像转化为电信号,这些信号通过视神经传送到大脑。视网膜由光感受器组成,分为两种:杆状细胞和锥状细胞。
—我们稍后会回到杆状细胞和锥状细胞的话题。
我觉得和 Guerilla Render的创始人 Benjamin Legros 讨论人眼很有趣,他实际上告诉我:我们的眼睛实际上只看到红色、绿色和蓝色。它们很糟糕!
与螳螂虾相比简直不值一提。它们的眼睛非常惊人:拥有十二种光感受器,而人类只有三种!它甚至能看到紫外线和红外线,就像《铁血战士》一样!我非常喜欢这种对我们三色视觉系统的独特诠释。
介绍螳螂虾!
一个特写只是为了它的美丽......
杀手的眼睛,就像捕食者一样!
螳螂虾是色彩科学家的参考对象。
螳螂虾,或称为口足目动物,是口足目下的海洋甲壳类动物。它们是许多浅海热带和亚热带洋栖息地中最重要的捕食者之一。然而,尽管它们很常见,但由于许多物种大部分时间都藏身于洞穴和穴居中,因此对它们的了解仍然有限。
我们的大脑在视觉系统中也扮演着重要角色。它负责处理所有这些数据。当图像投射到视网膜上时,实际上是倒置的。大脑会将其正确翻转:
我们真正看到的是我们大脑根据眼睛提供的输入重建的物体,而不是眼睛实际接收到的光线。
—摘自这篇文章。
要定义颜色,您必须首先定义光,因为没有光就无法感知颜色。
光是一种能量。
光能以波的形式传播。
有些光以短而“断续”的波传播,另一些光则以长而缓慢的波传播。蓝光波长比红光波长短。
摘自《电影色彩》:色彩科学的研究始于光谱。人们通过波长来测量光能。[…] 处于该范围中间(黄绿色)的光被感知为最明亮。
光是一种人眼可见的电磁辐射。
所有光线都沿直线传播,除非遇到某些物体并发生以下情况之一:
反射(如镜子)。
折射(如棱镜弯曲光线)。
散射(如大气中气体分子的散射)。
我们也可以将衍射加入这个列表,尽管它看起来是一个更复杂的现象。
光是所有颜色的源泉。光在我们的生活中有多重要,实在令人惊叹。当一个柠檬看起来是黄色的,那是因为它的表面反射了黄色,而不是真的黄色。过去这让我很困惑,但颜料之所以呈现颜色,是因为它们选择性地反射和吸收可见光的某些波长。
这些概念大多来自维基百科,你可以在网上找到大量关于这个主题的文章。这里有一个更技术性的描述:
光是一种电磁辐射,人眼可见。可见光通常定义为波长在 400-700 纳米范围内,介于红外线(波长较长)和紫外线(波长较短)之间。这些波由光子组成。
从光到颜色
那么,我们如何从光谱到颜色呢?我无法比 Jeremy Selan 更清楚地解释颜色匹配函数,所以我就直接引用他的话:
人类视觉系统[…]是三色的。因此,颜色可以完全用三个变量的函数来表示。通过一系列感知实验,色彩界推导出了三条曲线,即 CIE1931 颜色匹配函数,它们允许将光谱能量转换为颜色的度量。
—摘自精彩的《电影色彩》。
CIE 1931 色度匹配函数将光谱能量分布转换为颜色的度量,即 XYZ。XYZ 预测两个光谱分布是否对普通人类观察者看起来相同。
[…] 当你将光谱功率分布与 CIE 1931 曲线积分时,输出被称为 CIE XYZ 三刺激值。
——万物的基础是 Metarism。
我花了一些时间才将这些点连接起来,我认为如果没有来自 hg2dc.com的这张精彩图表,我无法弄清楚这一点:
当将所有可能的光谱转换到 x,y,Y 空间并绘制 x,y 时,它们会落在色度图上的一个马蹄形区域内。
让我们回顾一下! 到目前为止,我们已经看到:
我们,可怜的人类,很容易被欺骗。
人类视觉系统(HVS)极其复杂。
光与色是两个密不可分的主题。
光谱波长首次在 1931 年被“转换”为色度图(马蹄形状)。
CIE XYZ 是由国际照明委员会(CIE)于 1931 年定义的色度图。它是基于人类视觉描述颜色的第一步。
1931 年和 1976 年的两个主要 CIE 图。
CIE 科学家于 1931 年聚集,旨在表示我们所见的颜色。CIE XYZ 色度图由此诞生!45 年后,他们再次聚会以改进它:CIE U’V’被创建。尽管 1976 年的 CIE U’V’是一个更“感知均匀”的变体,但 1931 年的版本仍然是色彩界最常用的。旧习难改。
David L. MacAdam(1942 年)的研究表明,CIE 1931 xy 色度图并未提供感知均匀性。
这意味着颜色的可测量色度与观察误差范围之间的关系,在 CIE 1931 xy 色度图中并不一致。
—摘自这篇精彩的文章。
这里有两个关于色度图的重要概念:
这些色度图是人眼可感知的所有色度的可视化表现。
图中有两个坐标轴,用以为每个色度赋予唯一的坐标。
摘自《电影色彩》:马蹄形区域内代表所有可能的综合色谱;区域外则不对应物理上可能存在的颜色。
—马蹄形或舌形区域。这真的取决于具体情况。它也可能是风帆。
CIE XYZ 作为一个标准参考,许多其他色彩空间都是基于它定义的。请记住这些图表,因为我们后面会不断提到它们。
色度还是颜色?
此时,你可能会问自己:色度和颜色有什么区别?这是一个很好的问题。基本上,每当我们提到“颜色”或“色调”这两个词时,我们就进入了“感知”的领域。这意味着颜色只有在人类(或我们称之为“标准观察者”)感知时才存在。
另一方面,色度是一种刺激。它不包含任何关于有人观察它并感知某物的概念。是的,正如你可能已经猜到的,同一个刺激可以产生四种不同的感知颜色。这一点在 2018 年 Siggraph 课程中得到了非常清晰的展示。
有趣的是,国际照明委员会(CIE)确实列出了“颜色”一词的两个定义:
RGB 色彩空间及其组成部分
RGB 色彩空间由我们工作空间中所有可用的颜色组成。它由三个组成部分定义:
原色
白点
传递函数
这就是 RGB 色彩空间的样子:
在上图中,有三点重要内容需要注意:
RGB 色彩空间实际上存在于三维空间中(屏幕左侧)。
为了便于可视化,我们通常只使用二维切片,比如俯视图(屏幕右下角)。在此示例中,您可以看到 Rec. 709 色彩空间与 CIE 1931 色度图的对比。
注意那些黑点吗?它们代表图像(右上角屏幕)在 RGB 色彩空间(此处为 Rec. 709)内的像素值。这被称为绘制色域。
三原色
“基色的色度坐标定义了一个给定 RGB 色彩空间所能编码的色域(三角形颜色范围)。”
换句话说,基色就是三角形的顶点。我们将稍微复杂化一点……请注意!每个顶点都有一个在其自身色彩空间中表达的纯 RGB 值:
红色=1,0,0
绿色=0,1,0
蓝色=0,0,1
但这些顶点中的每一个在 CIE 图上都有一个独特的 xy 坐标。这就是我们能够比较它们的方式。以一种通用的方式定义颜色(独立于其亮度)的唯一方法是给出其 xy 坐标。
在这张图表中,您可以看到不同颜色空间的坐标
这些就像最常见的 RGB 颜色空间。
例如,地球上没有比 BT.2020 基色或激光更饱和的颜色,它们都位于光谱轨迹上(色度图的边界)。色度越接近光谱轨迹,颜色的饱和度就越高。
下面是一些基色转换的表格,用以说明这种关系:
这张表清楚地显示了像素负值的含义:超出色域的值。BT.2020 的基色位于 sRGB/BT.709 色域之外
三原色比较
你现在应该清楚地看到每个色彩空间的不同原色(如下图所示):
有不同的xy坐标。
具有相同的RGB值。
是不同的刺激。
我使用了(1931 年和 1976 年)两个色度图进行比较。
白点
白点定义了给定 RGB 色彩空间中的白色。任何位于通过白点的中性色轴上的颜色集合,无论其亮度如何,对于该 RGB 色彩空间来说都是中性的。
D65 大致相当于西欧的平均正午光照。
白点有不同的类型。例如,当白点与一组基色一起提供时,它用于平衡这些基色。例如,sRGB 和 Rec.2020 色彩空间的白点都是 D65。这是它们固有特性的组成部分。
但观看环境也会有一个白点,这个白点可能相同也可能不同。因此存在校准白点和创意白点的概念。一个它们不同的例子是数字影院,数字影院校准为 DCI 白点,但电影通常会使用另一个白点(D60 或 D65)作为创意白点。
中性轴也称为无色轴。
RGB 色彩空间可以根据其使用环境拥有不同的白点。这可以是一种创意选择:
如果您希望模拟标准观影间的光质,请选择 D50。选择如 D50 这样较暖的色温会产生暖色调的白色。
如果您希望模拟正午时分的日光质量,请选择 D65。较高的色温设置如 D65 会产生略微偏冷的白色。
如果您更喜欢偏冷的日光,请选择 D75。
传递函数(OETF 和 EOTF)
传输函数执行线性光成分(三刺激值)与非线性 R’G’B’ 视频信号之间的映射(大多数情况下用于编码优化和带宽性能)。
好的。这里事情变得有点复杂……我们之前已经了解了三刺激值是什么。但编码优化和带宽性能又是怎样的呢?答案如下:
摘自Substance PBR 指南 指南:人类视觉系统(HVS)对较暗色调的相对差异更为敏感,而非较亮色调。正因为如此,不使用伽马校正是浪费的,因为会有过多的比特分配给视觉系统无法区分色调的色调区域。
传输函数(或伽马)有助于更好地编码比特,从而提高性能。传输函数有两种:
OETF:光电传输函数,将线性场景光转换为视频信号,通常在摄像机内进行。当你拍摄或扫描(用于编码)时使用。
EOTF:电光传输函数,将视频信号转换为显示器的线性光输出。当你向屏幕发送信号(用于解码)时使用。
还有对数传递函数,但这是另一个话题。
常见错误
需要注意的重要事项是:
“线性”不是色彩空间。
“线性”不一定意味着宽色域,更绝不是无限色域。
它是一种完全依赖于色域的传递函数
这是业内即使是资深视觉特效主管也常犯的一个错误。其次,为了简化,我们可以说这些传递函数与伽马和电视信号有关:
一种常见的观点是,由于人类视觉系统的非线性,需要一个非线性的光电传递函数。确实,人类视觉系统非常复杂,亮度感知是非线性的,近似于立方根幂律。
——这与 Substance PBR 指南中的解释类似。
我们回到第一个观点:人类视觉极其复杂。我们需要这些传递函数来保证视觉的舒适度。
我曾经最大的一场争论就是要说服我的上司,线性空间并不是某种无限的色彩空间。
——这里的无限是指能够访问光谱中的所有颜色。
色彩空间的属性
为了正确解释一组 RGB 数值,还需要两个属性:图像状态和观看环境。
图像状态
图像状态在国际标准 ISO 22028-1中有定义。这基本上是定义 RGB 颜色空间的国际标准。
场景参考
摘自 Charles Poynton :场景参照意味着存在一个从原始场景光线到像素/数据中记录值的数学映射文档。它并不完全等同于“场景线性”,尽管这两个概念可能会重叠。
场景参照图像是指其光线值在相机焦平面处被记录,且未经过任何相机内部处理的图像。这些线性光值与场景曝光的客观物理光线成正比。由此推断,如果一张图像是场景参照的,那么拍摄它的相机不过是一个光子测量装置。
——在这段话中,场景参照和场景线性是相同的。
显示参照
摘自 Charles Poynton :显示参照意味着图像数据具有从图像代码值到显示设备上绝对色度光的已记录数学映射。
显示参照图像是指其定义方式基于显示方式。例如,Rec.709 是一种显示参照色彩空间,意味着 Rec.709 图像的对比度范围被映射到显示设备(如高清电视)的对比度范围。
观看环境
听起来可能令人惊讶,但观看环境在色彩空间中确实很重要。你所坐的房间、你使用的光线、墙壁的颜色……所有这些都会影响你的观看条件,对于 BT.709,它们在此处被定义。
参考观看环境旨在提供一个可以从一个设施复制到另一个设施的环境。它定义了房间照明、色度背景、观察角度以及显示特性和调整。
——这篇文章以及 Autodesk 的这篇文章也解释了这个话题。
行业标准
屏幕制造商和电影专业人士已经达成了一些标准。他们的特性改变了我们图像的显示和渲染方式。以下是对我们来说最重要的五个标准:
用于互联网、Windows 和相机照片的sRGB。
Rec.7O9 的原色与 sRGB 相同,但在传输函数/伽马上有所不同。这是因为 Rec.709 的目标用途是视频,假设在昏暗的环境中观看。
用于电影放映机的 DCl-p3。
Rec.2020,也称为 UHD 电视,是色度学的未来。
用于印刷项目的 AdobeRGB。
在 BT.709 显示器上显示的绿色 BT.709 基色,与在 BT.2020 显示器上显示的绿色 BT.2020 基色看起来完全不同。它们的色度完全不同!
这些色彩空间是用来做什么的?有两个目的:
渲染空间:也称为工作空间,用于我们的光照计算(场景参考状态)。
显示空间:应与我们的显示器匹配,显示器显然需要适当校准(显示参考状态)。
渲染和显示空间
渲染空间和显示空间不必相同。理解这两者之间的区别非常重要。在计算机图形中,渲染空间始终采用线性传递函数。我们稍后会详细介绍场景线性工作流程。
对于显示空间,当你进行项目时,必须问自己:我们的显示目标是什么?我们的图像会在智能手机、电视机还是影院中观看?基本上,显示空间应与贵公司使用的显示器相匹配。
这就是色彩管理真正派上用场的地方。在计算机图形工作流程中,了解每一个步骤所使用的色彩空间至关重要。
购买显示器时,应检查其对这些色彩空间的覆盖率。例如,一家著名巴黎工作室使用的显示器仅覆盖了 P3 色域的 93.7%。这太低了!我们永远无法完美匹配影院的投影仪。在显示空间上工作时,如果不能精确匹配显示器的规格或项目需求,则毫无意义。
—P3 是一种常见的数字电影放映用 RGB 色彩空间,由数字电影倡议组织(DCI)定义,并由电影电视工程师协会 (SMPTE)发布。
什么是sRGB?
正如 Thomas Mansencal 的文章中所解释的,sRGB 对许多艺术家来说仍然是一个令人困惑的概念。什么是 sRGB?
有人说:“它是一种色彩空间!”
另一些人则回答:“它是一种传输函数!”
实际上,sRGB 两者兼具!它是一种包含传输函数的色彩空间,这个传输函数是对简单的伽马 2.2 曲线的轻微调整。这就是为什么你也可以使用伽马校正(0.454 / 2.2)来决定是否处于线性状态。
摘自 Substance PBR 指南 指南:“明确区分 sRGB OETF 与 sRGB 色彩空间至关重要;OETF 只是构成 RGB 色彩空间的三个组成部分之一。”
场景线性工作流程
对我来说,这是学生作品与专业作品之间最大的区别。场景线性工作流程在行业内是强制性的。我不知道有哪个有声望的工作室不使用它。
Jeremy Selan:在完全计算机生成的环境中,通常更倾向于保留传统电影工作流程中那些有益的方面。因此,我们主张将动画长片视为在计算机内创建一个“虚拟电影布景”,配备虚拟摄像机、虚拟负片和虚拟印刷胶片。
在这个例子中,输入是显示相关的,并且为了光照计算进行了线性化处理。然后,我们获取场景相关的输出,并使用色调映射来正确查看它。
如前所述,显示器具有伽马校正,以正确显示图像。自从我们使用 CRT 显示器以来,这已成为视觉舒适的行业标准(因为光强度与电压的变化不是线性的)。
在大多数情况下,如果计算机运行 Windows 操作系统,通过使用伽马值为 2.2 的显示器,我们可以实现接近理想的颜色。这是因为 Windows 假设显示器的伽马值为 2.2,这是 Windows 的标准伽马值。
—摘自 Eizo 官网。我们将在下一段看到为什么这个术语让我感到困惑。
我们通过将反转的 EOTF 保存到我们的显示参考图像中来纠正这个问题。这就是为什么你需要对它们进行线性化以进行渲染的原因。这是一个非常重要的点:如果你不使用线性传输函数作为渲染空间,你的渲染结果永远不会正确。在普通 sRGB 空间中渲染(和显示)是错误的!
显示 EOTF:它是“向上”还是“向下”?
所以当我们说我们的显示器的伽玛值是 2.2,并且我们将显示相关的图像保存为“sRGB”时,这是否意味着我们加了两次相同的伽玛校正?实际上,并不是。
John Hable 在他的演讲中对此解释得非常清楚:我们显示器的伽玛 2.2(即 EOTF)实际上是一个“伽玛下调”!而不是“伽玛上调”!这让我非常困惑,因为在 Nuke 中,伽玛 2.2 是“伽玛上调”。所以在过去的十五年里,我已经习惯了这种行为……
但对于显示器来说,情况正好相反。所以不,我们不会加两次相同的伽玛校正,那样会完全出错!这就是我们保存显示相关图像时所做的:
用 OETF(或 EOTF 的反函数)编码 jpg,也就是“伽玛上调”。
在具有 EOTF(最可能是 2.2 的“伽玛”)的显示器/屏幕上解码,因此是“伽玛下调”。
OETF 和 EOTF:无操作?
在理想情况下,这两个操作会相互抵消,我们会称整个过程为“无操作”。但不幸的是,由于许多历史原因,情况并非完全如此。但我不想再引发另一场关于伽玛/sRGB EOTF 的“战争”,所以我不会在这个话题上深入探讨。
但基本上,我们仍不确定显示器的 EOTF 应该是 sRGB 分段函数还是纯幂函数(人们误称为“伽玛”)。这两种情况在现实中都存在。没有人比 Daniele Siragusano 在这个视频中解释得更好:
有趣的是,我们过去习惯用一个 OETF 进行编码,再用一个不匹配的 EOTF 进行解码,以考虑眩光/环境补偿。
但在 2022 年,我们更倾向于让显示变换来处理这一点,并使整个编码/解码阶段成为“无操作”。
最终,我们不应过分纠结于“Gamma”这个词,它只是一个希腊字母!你也可以将 Gamma 函数视为一个指数倒置的幂函数,正如我在下表中尝试总结的那样:
名称 | 函数 | 描述 | 对艺术家友好的术语 |
sRGB OETF | (伽马)编码 | 对简单的 2.2 伽马函数(或 1/2.2 幂函数)的轻微调整 | “伽马上调” 或 “反向 EOTF” |
sRGB EOTF | (伽马)解码 | 对纯 2.2 幂函数(或 1/2.2 伽马函数)的轻微调整 | “伽马下调” |
显示线性
关于显示器/监视器的 EOTF,这小段内容让我意识到我之前的另一个误解。对我来说,“显示”和“线性”总是相对的两个词,它们不可能共存。直到我读了《Cinematic Color》:
电影和计算机图形领域对使用这个词都过于随意
“线性”既指场景参考的线性图像,也指显示参考的线性图像。我们强烈建议
两个社区都应树立积极榜样,并始终区分这两种图像状态
即使在日常对话中。
为了澄清,您指的是显示器发出的线性光吗?您使用了“伽马”这个词吗?
你的图像超过 1.0 会有可怕的后果吗?如果有,请使用术语 display-linear。
你是在参考高动态范围图像吗?你的中灰值是 0.18 吗?你是在说...
以“档位”来衡量光线?在你的流程中,1.0 没有特别的意义吗?如果是这样,请使用
术语 scene-linear。
最后,对于使用场景线性工作流程的人来说,记得使用超越简单伽马模型的观看变换。朋友们不会让朋友在没有“S 形”观看变换的情况下观看场景线性图像。
——对精确术语的呼吁。
这可能有点让人费解,但我们在显示器上看到的、它们实际发出的光,是……“线性的”!或者更准确地说是“显示线性”的,因为我们图像的编码和解码应该相互抵消。
场景线性渲染空间示例
以下示例使用了 sRGB 的 OETF 且没有 LUT,就像大多数渲染软件默认提供的那样。我们将看到为什么这几乎是错误的。我做了几个非常简单的渲染,使用中灰着色器来说明场景线性工作流程:
非场景线性工作流程:数值没有线性化。因此,渲染时使用的是 0.5。
场景线性工作流:我的场景中中灰值为 0.18,这使得我的计算是正确的。
非场景线性渲染空间:在显示和渲染空间中,中灰值均为 0.5。这是错误的。
警告:场景线性工作流只有在包含色调映射步骤时才算完整。
在这个非常有限的实验中,你可以看到从平面反弹到球体的光线在场景线性渲染中更“真实”。不幸的是,我无法提供更好的对比,但希望你能理解这个概念。否则,我们可以直接问 Jeremy Selan:
摘自《Cinematic Color 》:为什么场景线性更适合照明?首先,渲染本身受益。物理上合理的光传输[…]例如全局光照,在高动态范围场景中能产生自然的效果。[…]光照着色器也受益于使用场景参考线性,特别是在光衰减方面。[…]当与基于物理的着色模型结合使用时,采用 r²光衰减表现得更自然。
—r²光衰减只是二次衰减的另一种说法。
基本上,场景线性渲染为照明提供了正确的数学基础。有很多网站展示了场景线性工作流程的示例。但如果你留心,会发现这些专业网站在这里使用了一些“宽松”的术语!而且没有一个提到色调映射,这无疑是一个关键步骤!所以对这些内容要持保留态度。
这实际上是视觉特效行业的原罪:认为“线性”是一种色彩空间。这个错误至今仍然相当普遍,甚至在视觉特效行业的资深人士中也存在。而且一些软件对此也存在误解!
这些“线性”选项让我困惑了很长时间。
在 Nuke 中,这尤其令人不安:“线性”被列为一种色彩空间,就像 sRGB 或 Rec.709 一样。在 The Foundry 的支持页面中,你可以找到这样的解释:“然而,Nuke 的色彩空间并不是一个标准的色彩空间。”朋友们,这句话应该用大红字写出来!
在我的网站发布后收到几封邮件,我觉得有必要提到,使用场景线性工作流程并不会神奇地让你获得无限的色彩范围。你仍然必须考虑你所使用的基色(或色域)。
我们将在下一章看到,如何通过正确的术语澄清所有这些色彩空间的混淆。
我最近(2020 年 4 月)有机会与 Doug Walker 讨论关于场景参考和显示参考的线性问题:
线性工作流程的描述中常包含一个关键错误。通常描述暗示观看过程只是简单地反转输入端应用的伽马调整。然而,这种说法是错误的,会导致对比度过低、中灰色过亮且高光被截断的结果,因此艺术家不得不通过偏向照明和材质决策来进行不自然的补偿。
—— Doug Walker,Autodesk 色彩科学技术负责人。
基本上,大多数学校和学生所做的是……错误的!sRGB 视图变换将渲染空间中的 1.0 映射到显示空间中的 1.0。这是将其用作视图变换的一个问题,它没有为超过 1.0 的值留出空间,这些值会被直接裁剪。
为了纠正这一点,观看变换必须考虑到输入是色彩科学家所称的“场景参考”,而显示器上观看的图像是“显示参考”。这意味着观看变换不应只是简单的伽马校正,而需要包含有时称为色调映射的步骤。
—这正是我们下一段的主题。
色调映射
到目前为止,我们主要关注的是过程中的场景参考部分,也就是渲染空间。现在我们将详细介绍从场景线性到显示线性的转换部分。大多数艺术家将此过程称为“色调映射”,但它也可以被称为“显示渲染变换”、“观看变换”或“输出变换”等。
色调映射是对场景相对亮度值与显示亮度值之间关系的有意修改,通常旨在补偿特定显示器可实现的最小和最大亮度水平的限制、场景与再现之间观看环境差异所带来的感知效应,以及偏好的图像再现特性。
色调映射可以通过多种方式实现,但其量化标准是对场景相对亮度值与显示亮度值之间关系的净影响。
—Alex Forsythe. Alex Forsythe。
无论如何,如果你只是简单地应用 sRGB 的 OETF 进行显示,画面的对比度会失调,高光部分会被裁剪,中间灰度也会偏离正确位置。大多数 CG 艺术家会为此苦苦挣扎,通过调整灯光和材质数值来补偿这种误差,但如果使用了合适的色彩管理系统,这种补偿其实是不必要的。
[…] 对于使用场景线性工作流程的人来说,记得使用超越简单伽马模型的观看变换。朋友们不要让朋友在没有“S 形”观看变换的情况下查看场景线性图像。
—Jeremy Selan.
本章我们不会过多详细讨论“显示变换”(我已经写过一篇关于它们的完整文章),但重要的是要知道它们通常包含的不仅仅是“简单”的色调映射操作。著名的 S 曲线只是复杂操作序列中的一部分。这些算法有时可能很复杂,需要烘焙成查找表(LUT)以实现实时计算。
来自《电影色彩》:查找表(LUT)是一种优化计算代价高但缓存代价低的函数评估的技术。
—LUT 也方便在不侵犯任何知识产权(“IP”)的情况下共享数据。
你可以在 LUT 中放入许多内容。据我所知,LUT最初来源于实拍:它们允许在拍摄现场与视觉特效设施或数字中间片(DI)工作室之间传输调色操作。但这里我们主要关注一种特定步骤的 LUT 类型。
基本上,借助一组数值(一个表格),1D LUT 允许在标准动态范围显示器(SDR)上显示高动态范围图像(HDR)。我们的显示器和电影放映机无法显示完整的 HDR 范围。通常,1D LUT 是在屏幕上显示像素并获得漂亮电影感外观的最佳方式。我们称之为“显示 LUT”。
查找表(LUT)描述
有几种类型的 LUT,但我这里将描述最常见的:
1D LUT(左图):它只包含一列数字,因为它对 RGB 像素的影响是相同的。它们通常包含一个传输函数或 S 形曲线。我使用了 spi-anim 配置中的 vd16.spi1d(Sony Pictures Imageworks 动画)。如果你的图像色域是 Rec. 709,1D LUT 不会改变它。
3D LUT(右图):它包含三列数字,因为它对 RGB 像素的影响不同。它们可以用来将一种色彩空间映射到另一种色彩空间。我以 ACES 1.2(Academy Color Encoding System)配置中的 Rec. 709 for ACEScg Maya.csp 为例。3D LUT 允许你从一个色域切换到另一个色域。
摘自《电影色彩》:查找表(LUT)的特征是其维度,即索引输出值所需的索引数量。
我故意缩短了文件以便展示。这些文件实际上有数十万行。
我们也可以将 LUT 分为两类(尽管这可能被认为是一个任意的区分):
技术 LUT,例如“Cineon Log 到线性”spi1d LUT。
艺术 LUT,例如“外观”或“外观修改变换”(LMT)。
OCIO(OPENCOLORIO)
OCIO是一个用于配置和应用颜色变换的开源框架。[…] 它旨在将复杂的颜色流程决策推广给许多可能不完全理解其原理的人(即:非调色师)。
—我从这篇文章中复制的关于 OCIO 的精彩定义。
要在 Maya、Nuke、Guerilla Render 或 Mari 中加载 LUT,我们将使用 OCIO 配置。OCIO 配置是不同程序之间共享 LUT 的最简单方式。你猜怎么着?有几个免费的 OCIO 配置可供使用,帮助你轻松搭建色彩管理工作流程。
以下是 Sony Picture Imageworks(左侧)和 ACES 1.2(右侧)的 OCIO 配置示例:
为了方便展示,我还特意简化了文件内容。
以下是关于 OCIO 配置的一些一般性观察:
不同的角色如取色、纹理绘制或合成已被预定义。请注意!
提供了不同的显示设备选项,如 DCI-P3、sRGB 或 Rec.709。
在 spi-anim 配置中,“Film View” 加载了文件 vd16.spi1d,并附有简要说明。非常方便!
LUT 有多种文件格式:spi1d、spi3d、csp、cube……Photoshop 只接受 cube 文件。不幸的是,Adobe 软件对 OCIO 支持不友好。所以你可以尝试使用ICC 配置文件。
对于进行外观开发或渲染的任何人来说,使用相同的显示转换至关重要。表面处理、毛发、特效、灯光和合成部门的艺术家们需要看到相同的效果。在纯 sRGB 下进行贴图,但用 s 曲线 LUT 渲染可能会出现问题。Mari、Substance Painter或Photoshop有许多解决方案,可以让我们的工作保持一致。
我可以做一个类比:我们通常需要在不同的 HDRI(或光照条件)下测试我们的外观开发资产,以确保它们的反应良好。显示变换/LUT 也是如此。
在“中性”工作室 LUT 下处理资产并检查它在节目 LUT 下的表现,这种做法并不罕见。
OCIO 配置非常方便,因为你可以在不同软件之间共享它们。你可以使用官方配置,也可以用 Python(或手动)构建自己的配置。动画电影中的 LUT 出现得比视觉效果(VFX)晚得多。
但它们在行业中确实改变了游戏规则。Naughty Dog 发表了一些关于它们的非常好的论文。
如果不使用 LUT 会发生什么?每次你的镜头曝光过度时,你都必须手动进行补偿。这是错误的做法。
没有 LUT,如果光源过曝,你会降低光的强度。但你会失去一些全局光照(GI)的反弹效果,一些次表面散射(SSS)……没有显示转换,你永远无法在场景中获得正确的能量量。
因此,你可能需要创建大量灯光来补偿能量的损失。结果就是你会有一个复杂的由 50 盏灯组成的灯光系统!你希望能够在镜头中投入所需的能量。
请看下面的示例:这是同一个渲染结果以不同方式显示!我再说一遍:渲染引擎输出的 exr 文件没有变化,只是我们查看它的方式不同。
这是显示场景线性渲染的唯一方法。
作为学生时,我痴迷于获得电影感的外观和纯黑色,同时不让我的渲染看起来脏兮兮的。实现这一点的唯一解决方案是使用色调映射(或者更准确地说,是显示转换)。它会为你的图像提供适当的对比度,并且平滑处理所有超过 1 的像素。以下是色调映射中“电影感”S 形曲线的样子:
请注意,这是一个半对数图。 X轴是对数的!
摘自《Cinematic Color》:大多数色调渲染将传统场景的灰度曝光映射到输出显示的中心值。
[…] 在中间调对比度上增加一个大于 1:1 的重建斜率。当然,随着对比度的增加,阴影和高光部分会被严重剪裁,因此在高端和低端都应用了低于 1:1 的对比度回落,以便高光和阴影细节能够平滑过渡。
由于中间部分对比度高,而极端部分对比度低,最终曲线呈现出如下所示的“S”形状。
上图中高光的回落非常明显:所有介于 1 到 10 之间的数值将被映射到 0.8 到 1 的范围内。只有色调映射的 S 形曲线才能轻松地提供合适的对比度。
如果你在布光室内场景也是同样的道理:用天花板、地板和四面墙让它“真实”起来。我看到太多人在布光时有洞或缺墙……大量光线泄漏,因此没有对比度!在我看来这是行不通的。
格式
我们已经为正确的色彩管理做好了准备,并准备制作一些漂亮的渲染。但我们如何以合适的格式保存所有这些数值,尤其是大于 1 的数值呢?我们要感谢 ILM 发明了OpenEXR。
OpenEXR 允许你以 16 位半浮点格式保存,以保留所有“原始”数据。你还可以为合成过程写入一些任意输出变量(AOV)。你可以查阅 Arnold关于exr 文件的文档。
摘自《Cinematic Color》:处理 float-16 数据时,重要的是要记住这些位的分配方式与整数编码非常不同。
整数编码在整个编码空间中均匀分配比特,而浮点编码在低端具有更高的精度,在高端则精度降低。
在我的网站发布后收到几封电子邮件,我觉得有必要提到,16 位或 32 位文件并不会神奇地让你获得无限的色彩范围。你仍然需要考虑你所使用的基色(或色域)。
我们确实在 Playmobil 项目中以 32 位渲染了一些 AOV:Ncam、Pcam 和 Pworld,以获得更高的精度。
—用于 Z 深度和位置。
一个常见的误解是关于 EXR 文件的大小。我坚信它们实际上比大多数格式都要轻,比如 TGA、TIF、PNG 甚至 JPG!只需使用合适的压缩方式,例如“dwab”(由 Dreamworks Animation 开发)。
范围
最后,我们必须关注我们的范围。这个话题在许多工作室中存在争议!基本上,你希望尽可能降低范围而不影响数据。有两个设置需要注意:
间接夹紧值:夹紧采样值。
AA 限制值:限制像素值。
限制采样值将帮助你减少火花和噪点。我用过的最低值是 10,这对我帮助很大。限制像素值将有助于你的抗锯齿处理,使结果更平滑。
如果你有一个非常暗的像素紧挨着一个过曝的像素,你不希望过曝的像素使旁边的所有像素都爆光。这就是我们限制渲染的原因。
这也可能取决于你的场景和渲染引擎。有些工作室将渲染限制在 50。我尝试过最低 30……我想你需要自己尝试和测试,尤其是在 HDR 显示器上!Solid Angle 对限制这个话题解释得相当清楚。
我们将在第 9 章看到为什么限制像素值可能会成为一个问题。
本章我们已经了解了一些重要且复杂的概念。希望我能够解释清楚,而不会让大家感到太头疼。这里是一个简要回顾:
一个色彩空间包含三个组成部分:三原色、白点和传输函数。
传输函数(EOTF 和 OETF)、伽马函数和幂函数之间的区别。
色彩空间的不同属性:场景参照、显示参照和观看环境。
行业标准介绍:sRGB、Rec.709、DCI-P3 和 Rec.2020。
场景线性和显示线性术语的重要性,以及“线性”概念的混淆。
场景线性工作流程的优势及色调映射的重要性。
通过 OpenColorIO (OCIO) 配置文件使用不同的 LUT。
最后,如何将我们所有的高动态范围数据保存到合适的文件格式:OpenEXR。
我们还看到,您的渲染空间(或场景参考空间)应始终具有线性传递函数,并且绝不应在没有适当显示变换的情况下显示线性图像。
色彩管理是一个永无止境的话题,我每天都在不断探索。我尝试用一篇易于理解的文章向您介绍它。良好的色彩管理意味着您在色彩管线和不同软件中看到的是同样的效果。
如果你在从 Substance Painter 转到 Maya 时颜色或对比度发生变化,值得分析这个问题。一个良好的色彩流程就是要从最初的草图(通常由美术部门完成)到最终交付,控制好色彩空间。保持一致性是关键。
这是一段与我前同事 Christophe Verspieren 一起经历的漫长而精彩的色彩之旅。但这并未结束。那样就太简单了。如果你还感兴趣,我们可以继续进入第 1.5 章,关于学院颜色编码系统 (ACES) 。
电影制作者的色彩科学基础。
Cinematic Color is a major document, probably the best one but it is also quite technical.
《电影色彩》是一份重要文档,可能是最好的,但它也相当技术性。
Cinematic Color 2 is on its way…
《Cinematic Color 2》即将发布…
The Hitchhiker’s Guide to Digital Colour is a must-read.
《数字色彩指南》是必读之作。
A couple of posts by Troy Sobotka about wide dynamic range, scene referred data, 3d luts and ACEScg in Blender.
Troy Sobotka 关于宽动态范围、场景参考数据、3D LUT 和 Blender 中的 ACEScg 的几篇文章。
Frequently Asked Questions about Gamma by Charles Poynton.
Charles Poynton 关于伽马的常见问题解答。
The ARRI Companion to Digital intermediate by Harald Brendel.
Harald Brendel 著《ARRI 数字中间片指南》。
色彩科学与精彩色彩。
This article about terminology was a game changer for me. And here are the slides !
这篇关于术语的文章对我来说是一个重大转折点。这里是幻灯片!
If you need any information about OCIO, check their website.
如果你需要关于 OCIO 的任何信息,请查看他们的网站。
Steve Yedlin’s color rendering for Knives Out and Display Prep Demo.
Steve Yedlin 为《利刃出鞘》制作的色彩渲染及显示准备演示。
Definition of BT.709 by the International telecommunication Union and its Reference Viewing Environment.
国际电信联盟对 BT.709 的定义及其参考观看环境。
DANIELE SIRAGUSANO 的
Effective Colour Management Part 1 and Part 2. A fantastic lecture on the challenges of color management. From a DI perspective, but super relevant to VFX color pipelines.
有效的色彩管理 第一部分和第二部分。一场关于色彩管理挑战的精彩讲座。从数字中间片(DI)的角度出发,但对视觉特效(VFX)色彩流程同样非常重要。
sRGB… We Need To Talk. A good example of how complex a seemingly simple topic in color science can be : sRGB vs Rec709.
sRGB……我们需要谈谈。一个很好的例子,展示了色彩科学中看似简单的话题其实有多复杂:sRGB 与 Rec709 的比较。
Understanding visual adaptation for multi-delivery projects. A fascinating talk about the effects of human visual adaptation.
理解多平台交付项目中的视觉适应。一场关于人类视觉适应效应的引人入胜的讲座。
Camerimage 2018: Natural Colours & Texture. A fascinating talk about the correlation between luminance, hue, color purity, and the effects of different capture mediums.
Camerimage 2018:自然色彩与质感。一场关于亮度、色调、色彩纯度之间关系以及不同拍摄媒介效果的精彩讲座。
Managing White Points. White is white right ? Maybe not.
白点管理。白色就是白色,对吗?也许不然。
International Cinematography Days 2018, Stuttgart : Colour Management and Managing Colour in a Multi-Delivery Production.
2018 年斯图加特国际电影摄影日:色彩管理与多平台制作中的色彩控制。
Baselight 中的色彩管理网络研讨会。
Most of FilmLight videos are available here.
大多数 FilmLight 视频可在此处观看。
All the links above have been copied from Jed Smith’s interview.
以上所有链接均摘自 Jed Smith 的访谈。
初学者推荐资源
I was lucky enough to come across this list of recommended sources for beginners, by Daniele Siragusano :
我很幸运地发现了 Daniele Siragusano 为初学者推荐的资源列表:
Two solide primers are The Reproduction of Color (Hunt) and Color Appearance Models (Fairchild). This should give you a good foundation.
两个权威入门书籍是《色彩再现》(Hunt)和《色彩外观模型》(Fairchild)。这将为你打下良好的基础。
Great book about DCPs : Color and Mastering for Digital Cinema (Kennel).
关于数字电影放映机(DCP)的优秀书籍:《数字电影的色彩与母带处理》(Kennel)。
Here FilmLight hosts videos about colour management. A good introduction video is this one.
这里是 FilmLight 关于色彩管理的视频。一个很好的入门视频是这个。
关于红色的视频
I was sent these videos in French about the red colour. They look quite interesting :
有人给我发了这些关于红色的法语视频。看起来相当有趣:
La première des couleurs by Michel Pastoureau.
米歇尔·帕斯图罗的《第一种颜色》。
Les enfants de la lumière by Bernard Valeur.
贝尔纳·瓦勒的《光之子》。
文章与博客
互联网标准默认色彩空间——sRGB。
Interesting definitions of faithful presentation, scene-referred and display-refererred by Charles Poynton.
查尔斯·波因顿关于忠实呈现、场景参照和显示参照的有趣定义。
虚幻引擎 2019 的色彩管理。
Color for VFX by Chris Healer.
视觉特效色彩,由 Chris Healer 讲解。
色度学入门指南。
RGB Lights : the untold truth by Indy Mogul.
RGB 灯光:Indy Mogul 揭秘真相。
HDRI explained by JorgenHDRI.
由 JorgenHDRI 讲解的 HDRI。
Bruce Lindbloom 的网站。
The Dimensions of Colour by David Briggs.
David Briggs 的《色彩的维度》。
Color Spaces of the VFX Pipeline by Steve Wright.
Steve Wright 的《视觉特效流程中的色彩空间》。
Edi Walger’s blog (only in Spanish).
Edi Walger 的博客(仅西班牙语)。
RGB Color Space Conversion by Ryan Juckett.
Ryan Juckett 的 RGB 颜色空间转换。
来自 CIE 1931 的色温转换器。
Examples to check if your monitor is really P3.
检测你的显示器是否真正支持 P3 的示例。
A short video in French about mid gray.
一段关于中灰的法语短视频。
An EIZO article about LCD monitor gamma.
一篇关于液晶屏显示器伽马的 EIZO 文章。
A youtube video that explains sRGB and color gamut.
一段解释 sRGB 和色域的 YouTube 视频。
The openEXR documentation is very interesting as well.
openEXR 文档也非常有趣。
Interesting posts about color spaces, gamma and HDR grading.
关于色彩空间、伽马和 HDR 调色的有趣帖子。
A semantic scholar pdf about HDR television.
一篇关于 HDR 电视的 Semantic Scholar PDF。
An article about bit depth and one about Colour Volume Description.
一篇关于位深度的文章和一篇关于色彩体积描述的文章。
You can download these LUTs from Arri for free.
你可以从 Arri 免费下载这些 LUT。
|