最近身边的人见面就聊ACES,ACES俨然已经是行业热点了。

ACES的确更高效的解决了色彩一致性的问题,这是符合历史进程的(+1s),无疑值得肯定。但由于色彩管理意识不强,关于ACES的认识就存在着不同程度的偏差。毫无疑问,脱离色彩管理孤立地学习ACES很容易产生偏颇。

ACES简介(口水话,可跳过)

色彩对人而言只是一种感觉,感觉会随参考和心情而变化,但色彩又是客观存在的,它由物体的物理特性和光照所决定,所以它又是可以量化的。

什么是色彩管理,通俗一点,色彩管理确保摄影机拍摄的原始数据在各类放映设备上都观感一致。DI环节、CG制作环节和放映环节观感一致,色彩管理的目的就达到了。

那么如何统一这些环节的色彩观感呢?首先这个色彩是需要被量化的,只有色彩被量化,才能进行计算,才能被控制。

当你把某些场景用数字摄影机记录下来的那一刻起,这些东西都是已经被量化的。它们是如何被量化的?在色彩科学(color science)发展的历史进程中出现了多个色彩模型,来规定色彩的向量空间,量化这些分量,并且限定色域。

随着摄影机型号及品牌日趋丰富,其能表达的色域和色彩编码的方式也越来越多,它们都可以涵盖到色彩空间这个概念中,要统一这些色彩空间,就需要有一个公共的色彩编码系统在这些色彩空间之间建立转换关系,而这个公共的色彩编码系统一定是与设备无关的。

有些摄影机输出的raw文件是场景相关的(可以认为是linear编码,比如RED摄影机),有些摄影机输出的raw文件是设备相关的(可以认为是log编码,比如ARRI摄影机),采用log编码方式的raw文件都可以通过LUT转换为linear编码,虽然linear的编码方式已经可以参与线性计算了,但此时的色彩空间依然处在不同子空间中,为了统一这些子空间,ACES色彩空间就横空出世了。

广义上讲ACES是学院色彩编码系统(Academy Color Encoding System),它是一套色彩空间及编码方式的转换体系;狭义上讲,ACES指的是这套体系中最为核心的、用作中间交换的色彩空间,这个色彩空间的全名是ACES2065-1,一般简称ACES。这个色彩空间色域极大,你几乎无法触及它的色域极限。放个ACES及其相关色彩空间的色域对比图:

ACES色彩空间宽阔的色域远超其他标准,OpenEXR格式提供了16比特浮点数据结构也刚好能支持这个色域的存储,这当然就为统一各类色彩空间创造了条件,各类色彩标准的色域几乎都在这个范围,完全不用担心某个raw文件的linear编码的色彩空间转换进ACES时会丢失色彩信息,也不用担心ACES转换回这些色彩空间时会造成临界色彩溢出(实际上这个问题还需要时间解决)。

ACES的出现就是历史的必然。

但大部分制作团队的问题在于缺乏色彩管理的理论知识和经验,而不是没有采用ACES这类新技术,即使采用了ACES,如果缺少色彩管理经验,问题一样无法解决。

由于我的工作重点并不在这里,我就不把相关知识再扒一遍了,简单举个Nuke的例子来谈谈色彩管理和ACES吧。

  • 在未采用ACES方案进行色彩管理的情况下,想要统一DI环节和制作环节的色彩,只需要DI提供相应LUT即可。Nuke中的viewerprocess挂上该LUT(一般还要再转换到rec709色彩空间中),就可以统一DI环节和制作环节的色彩观感了。
  • 在采用ACES方案进行色彩管理的情况下,ACEScc和ACEScg可以架起拍摄、DI环节与制作环节的桥梁,且配套工具内置大部分摄影机的LUT,DI也不需要额外提供LUT,确实省了功夫。
  • 如果拍摄环节、DI环节采用ACES的色彩管理流程,且DI软件(Davince Resolve)的ACES Output Device Transform选择ACEScg,并输出为exr格式,再交付到后续环节,那么后续VFX制作环节就不需要做过多设置,因为ACEScg在这里就相当于挂载了LUT并以linear形式编码存储了,Nuke和Maya都能正确识别自动配置,这两个软件的工作空间都是在ACEScg中的,默认输出也是ACEScg的色彩空间,但值得注意的是:输出给下一个环节(Publish)的色彩空间需要根据情况选择ACES2065-1或者ACEScc,这依然需要和DI环节或者IO环节反复确认,商定方案。
    有三维的小伙伴会担心输出的ACES色彩空间的线性OpenEXR文件颜色过于艳丽,动态范围不足,色彩信息大幅损失。
    这其实是多虑了,因为ACES的色域足够大,几乎不会有溢出的情况。实际上你也可以把Maya输出的exr文件导入Nuke,再利用OICOFileTransform节点多次转换回默认linear色彩空间来验证这个特性。
    如果担心的是制作时不方便观察高亮区域和暗部细节,可以请技术部门或者DI部门提供预览HDR素材的LUT。你可以在多个view transform之间切换,以观看不同的效果。
  • 如果拍摄环节、DI环节都没有采用ACES,而你想在制作环节中独立引入ACES进行色彩管理,就必须要考虑转换的问题,需要手动设置。以合成环节为例,如果你的素材是RED ONE拍摄的,以RedLogFilm的形式编码且文件格式为dpx,那就有必要修改default LUT settings中的log files选项,如图:

    实际上在拍摄环节、DI环节未采用ACES进行色彩管理的情况下,我是完全不推荐在VFX流程中强行使用ACES的,因为你无法确定你拿到的dpx序列(或者exr序列)与.r3d序列在色彩空间和编码上是否一致,你拿到的dpx序列极有可能是从RedLog转到Cineon的;而且很有可能DI环节并没有采用ACES的色彩管理方案,你的显示色彩与DI环节的显示色彩也不一定能一致。所以请一定与DI环节或者IO环节反复确认过此事。

    如果一定要在VFX环节用ACES,建议用.r3d文件或者.ari作为初始序列,自行做raw-->ACEScg的转换。官方也是这样推荐的。

下面再以阿莱RAW文件举两个例子。

  • 如果拍摄环节、DI环节都没有采用ACES,你想在制作环节中独立引入ACES进行色彩管理,就必须要考虑转换的问题,需要手动设置。

    以合成环节为例,如果你的素材是阿莱摄影机拍摄的,原始文件就是.ari格式,就需要手动做一个色彩空间转换,如图:

  • 如果拍摄环节、DI环节都没有采用ACES,你想在制作环节中独立引入ACES进行色彩管理,就必须要考虑转换的问题,需要手动设置。
    以合成环节为例,如果你的素材是阿莱摄影机拍摄的,而你从DI部门或者IO部门拿到的序列是exr文件格式,且并未经过编码转换,那还是需要做手动做这样一个色彩空间转换,如图:

下面再稍微谈谈合成外的环节。Maya中的情况就稍有不同,因为Maya并没有集成OICO(实际上Flame,Lustre,Houdini,Photoshop都没有集成OICO,依靠自身的色彩管理模块来实现ACES),所以在Maya中你不能做类似Nuke中的转换工作。想在Maya中采用ACES色彩方案你就需要打开Preferences面板,将其设置如下: 
     

这样的话,图片导入的色彩空间和渲染的工作空间以及显示、输出的色彩空间就都是ACEScg了。你可以通过为相机添加一个imagePlane并渲染出来与原序列做对比的方法来验证,此处略过。

显然,无论是否采用ACES,VFX环节都需要与DI环节密切配合,请反复与DI确认色彩管理方式,不要一味尝新。

关于ACES在Nuke中的实现(详情请看源码)

在Nuke安装目录中可以找到如下文件夹:”..\plugins\OCIOConfigs\configs\aces_1.0.3\python\aces_ocio\colorspaces“,里面有各类转换的实现代码。随便翻翻就能看到大部分色彩空间转换到ACES中都需要LUT来映射(RED除外,它的成像过程是典型的场景相关--Scene Refered,r3d文件的原始色彩空间几乎等价ACEScg),而且几乎都是先转到某线性空间再空间变换到ACES中。只不过这一部分封装的比较好,用户分分钟不明觉厉。而且其实这一套方法和Nuke的线性工作流是异曲同工的,换句话讲,ACES和Nuke默认色彩管理方案在实现上套路极为相似。更进一步,其实ACEScg和Nuke自身的默认线性工作色彩空间基本一致,这一点你可以通过勾选Read节点的raw data选项来确定。

至于ACES鼓吹的纯数学转换,仅限于坐标系变换,比如ACES2065-1<-->CIE XYZ、AP0<-->AP1。这都是线性计算,只是空间变换而已。其实一些能被拟合的LUT也可以通过数学计算实现正逆转换。

还有一些小伙伴认为只有在ACES中才能实现LUT的逆运算,但实际上ACES中LUT的反转是通过OICOFileTransform节点实现的,用这个节点你可以反转几乎所有LUT,实际上ACES就是在OICO色彩管理系统下运行的。更进一步,Nuke的OICO config设置为ACES时,色彩观感一样可以通过OICOFileTransform的多次转换回到nuke-default。所以ACES在实现层面上并不神奇,通过LUT的转换加简单的线性变换,提供一个统一的、中立的运算空间(你管它叫工作空间、work area、color space、working space都行)。它胜在提供了一个被各大软硬件厂商认可的色彩标准,这个标准具备作为中间色彩空间的实力,它能够统一现今大部分色彩空间。总结一下就是:OICOFileTransform提供了转换色彩空间的计算工具,而ACES提供了一个能存储任意色彩的数据结构,以确保转换过程不会溢出。

其实只要具备色彩管理的概念,知道OICO的相关知识,有一些阅读代码的能力,这类常识性的认识误区都是可以避免的。

(刚聊开两百字就匆匆结束,似乎也没怎么聊色彩管理)

最后再提一下,无论采用怎样的技术,都要充分理解它的应用场景和该场景背后的技术体系,尽量避免孤立的学习新技术。

一般在有DI部门的公司里,色彩管理工作都不差,可以找几个理论基础扎实的调色师问问,术业有专攻,此话不假。

再次强调,ACES不是银弹。

对新技术有兴趣是好事,但这是建立在对旧有知识体系的理解和尊重之上的。旧的没明白,就跃进搞新的,只会背负更多的技术债,以上。

闲话ACES(修订)的更多相关文章

  1. zjuoj The 12th Zhejiang Provincial Collegiate Programming Contest Ace of Aces

    http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5493 The 12th Zhejiang Provincial ...

  2. 第十二届浙江省大学生程序设计大赛-Ace of Aces 分类: 比赛 2015-06-26 14:25 12人阅读 评论(0) 收藏

    Ace of Aces Time Limit: 2 Seconds Memory Limit: 65536 KB There is a mysterious organization called T ...

  3. wordpress数据库优化-关闭日志修订

    每次在wordpress网站修改文章的时候都会产生一个修订版本,wp_posts会产生一个post_type为“REVISIONS”的记录,修改次数一多的话,那修订版本就有几万条记录了 在functi ...

  4. sql批量删除wordpress所有日志修订revision

    wordpress日志修订是所有速度慢的罪恶之源,每次在后台发布或修改文章的时候,数据库都会产生一个revision版本的记录,几百篇日志会有几千条日志修订的记录,如果更多文章的话,那一个网页打开可能 ...

  5. 如何改变word修订模型下的视图

    在Word中执行与Find.Range等相关的操作时,需对修订模式下的文档进行特殊处理. 核心知识点 Word中的 RevisionsView 属性只有两种设置:显示标记的最终状态(Final Sho ...

  6. KeybMap 键盘映射工具更新至 V1.5(修订)

    KeybMap 更新至 V1.5,主要是增加了对一些多媒体键定义修改功能,也可以将任意一键定义为打开指定的程序. 3月9日略做修订. http://www.mympc.org/down/1/2005- ...

  7. Ace of Aces

    Description There is a mysterious organization called Time-Space Administrative Bureau (TSAB) in the ...

  8. 使用Word进行文档修订版本的比较

    项目经理在实际的工作过程中,比如要写文档方案,就需要对文档的修订版本进行管理和控制.在以前的工作中,笔者使用的是UltraEdit这个软件工具中的Ultra Compare这个子工具来进行的文档版本的 ...

  9. WordPress禁止版本修订历史、自动保存和自动草稿最新方法汇总

    提醒:我这里汇总的方法有一些只支持以前老版本的WordPress,对于新版本的WordPress,有些功能是不支持的,所以操作前请做好备份.我的WordPress版本目前是4.3.1,我会在我测试有效 ...

随机推荐

  1. sqlserver智能提示插件-sql prompt(9.4.6)的安装及注册流程

    官网下在地址:https://www.red-gate.com/products/sql-development/sql-prompt/ CSDN下载地址(对应的版本是9.4.6,其中包含安装包和注册 ...

  2. 牛客网PAT乙级(Basic Level)真题-组个最小数 (20)

    组个最小数 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 给定数字0-9各若干个.你可以以任意顺序排 ...

  3. python 10

    不想写了,用一下强大的copy功能吧!! (转自:我的同桌)

  4. window10单机安装storm集群

    适合范围:storm自由开源的分布式实时计算系统,擅长处理海量数据.适合处理实时数据而不是批处理. 安装前的准备 1.安装zookeeper ①下载zookeeperhttps://zookeeper ...

  5. 设计简单的VB程序

    1.模拟对话程序 [程序源码] Option Explicit Private Sub Command1_Click() Text2.Text = "" Text1.Text = ...

  6. 播放器: AVPlayer

    AVPlayer *player = [AVPlayer playerWithURL:[NSURL URLWithString:@"http://flv2.bn.netease.com/vi ...

  7. js的组成部分

    ECMAScript js基本语法与标准 DOM Document Object Model文档对象模型 BOM Browser Object Model浏览器对象模型

  8. EasyUI学习(一)——EasyUI入门

    EasyUI学习总结(一)——EasyUI入门 一.EasyUI下载 EasyUI官方下载地址:http://www.jeasyui.com/download/index.php,目前最新的版本是:j ...

  9. AOP统一处理Web请求日志

    <!--aop--> <dependency> <groupId>org.springframework.boot</groupId> <arti ...

  10. (转)python中函数参数中如果带有默认参数list的特殊情况

    在python中函数参数中如果带有默认参数list遇到问题 先看一段代码 1 2 3 4 5 6 7 8 9 def f(x,l=[]):     for i in range(x):         ...