这个问题很有意思,我从我业余做 VFX 相关的背景出发主要就“动画”和“游戏”等场景讨论一下。
有损的位图信息编码(无论是各种有损的图片压缩算法,还是视频编码(大多数人很难接触到无损视频))是一般用户在存储、传输和消费位图内容时所使用的最主要的载体,它们主要致力于如何在最少影响普通人观感的前提下,去除无关紧要的细节,最小化文件中的冗余。但是我认为,对于我上面提到的场景,主流的编码方式依然浪费了大量的空间在“无关紧要的细节”上,甚至根本就不是“正确”的表示方式。
比如对于一个 CG 制作的天体来说,如《星际穿越》中的黑洞,其”中之人“其实并不是你看到的那些图或者视频,而是一个数学模型。但是这个电影出来之后,人类和计算机都就只能看到一堆像素点了,在截图或转码时,计算机只知道这是一堆像素点,并且按照像素点的方式来处理它,在用力过猛的时候甚至会在色彩过渡的地方出现明显的 banding——本来很简单的一个模型,在变成像素点之后实际上加入了大量并不存在的“细节”——压缩算法需要重新发现这些像素点之间的关系,而显然这重建之后的关系是严重走样的,甚至转码还会加入额外的“细节”。
另一个例子,视频编码算法可以很好地压缩一个 CG 制作的动物镜头,但是同一个动物的另一个镜头,换一个光照环境,换一个视角,换一套姿势,尽管是同一个动物,却需要额外记录大量的信息。它并不能完整地利用这两个镜头之间的冗余关系。
如果我们把“位图”变成“矢量图”,从一开始就直接把黑洞的数学模型,把动物的 3D 模型、动画数据、光照数据和视角数据给到内容消费终端,不但可以节省大量的空间,还具备了无限放大的能力,甚至还可以随便转视角(这可是现在的电影怎么都做不到的),当然对我来说最重要的是还可以通过调整数据和参数进行二次创作。
这里我要做一个假设就是终端的算力是几乎无限的——虽然摩尔定律马上就 55 年了,普通终端可以一秒钟渲染 60 帧甚至 144 帧以上的高质量游戏画面,但是渲染一秒钟的电影级完整 CG 画面依然需要 60 年甚至 144 年以上的时间(数量级不准确,但是你一辈子看不到几帧是肯定的)。不过这个问题本身只要算力上去就很容易解决(所以苏妈成了 Queen of Cinebench ...)
我刚才提到了游戏——你可以认为视频游戏(在本回复里主要指 3D 游戏,尤其是现在有”电影化“倾向的很多 3A 游戏)就是电影的一种“矢量图”形式,以非常简单的眼光来看的话,游戏和电影在很多方面已经很相似了。但是游戏和电影最大的区别之一——“交互”这一点就要求游戏的每一帧画面(除去游戏里的电影)都是在终端机器上实时合成的,并且游戏也可以通过更改场景数据和游戏本体的数据随意更改渲染出的结果。甚至可以说游戏去掉交互就可以变成电影(单指视听方面的相似性,游戏具备更容易修改和二次创作的优势),但是这个“电影”是实时渲染的,如果真的有刚才说的无限算力的话,画质也可以做到和电影齐平。
但是我们知道现在游戏画质做得越来越好,体积一般也越来越大,并且甚至有边际效应递减的趋势(据说游戏体积增长速度没有完全失控主要是受到主机的实体盘容量限制),我们刚才完成了“把电影‘矢量化’并统一到游戏内”的过程,但是这个现实说明刚才假设的”用游戏来‘实现’电影“这一条路很有可能会让最后”电影“成品的体积直接爆炸。对于这个问题,解决方案其实还是不变的——既然电影能”矢量化“,谁规定的游戏不能”矢量化“?
需要指出的是:4K 游戏体积比 4K 电影大是有其合理性的,如果游戏和电影都以”位图“的形式表示,并且最后屏幕上的画质是等同的,那么明显游戏包含的信息比电影要多很多(前面已经提到了游戏具有电影无法做到的无限放大和任意视角能力)。下面还需要做一个假设是构成现在 3A 游戏巨大体积的主要部分是贴图——这个应该是事实,但是我并没有亲自拆现在那些肿瘤一般的游戏的经历 ...(个别游戏可能预渲染电影占很多,不过这个恰好可以通过刚才的”电影游戏化“变成游戏中的其他贴图等数据)。那么既然贴图最多,把贴图”矢量化“,任务就完成了一大半。
这个就很有意思了,现在游戏用的贴图,不就是普通的位图图像嘛!矢量化不就是用矢量图来画么!不过很明显现在很多游戏的贴图并不适合矢量图。但是”矢量化“这种游戏贴图的技术现在已经成熟——就是 Allegorithmic Substance Designer——当然你现在看不到 Allegorithmic 这个名字了,就是因为这是当红炸子鸡,所以前段时间直接被 Adobe 收购了。这个软件要求 Artist 通过节点网络的 Procedural 方式创作贴图(之前主流的方式是用 PS 直接画)——“节点网络”具体是什么样子参见:
https://www.artstation.com/artwork/2EJ5Y 这东西登峰造极能做到什么地步参见
https://www.artstation.com/kayv https://www.artstation.com/wermuth https://www.artstation.com/artwork/P9WN1这种创作方式通过对噪波、分形等数学工具的组合,可以做到乱真的程度,而且这种方法本身并不一定比手绘等传统方法更 inferior——类似结构在自然界中本就是大量存在的,甚至可以说这本就是最贴近“真实”的方式,所以说这东西有颠覆你世界观的可能。
它的“压缩”效果如何呢?简单估计一下吧,一个 4K 三个通道每通道 8bit 的高清贴图可以有 48MB,实际使用的时候三个通道只够漫反射数据用,根据工作流不同还需要若干法线通道、高光通道、高度通道、光滑度通道等等,也就是说一个 4K 贴图的物体贴图动不动就有上百兆,但是这个 Substance 可以用一个 Node Network 生成所有需要的贴图,并且可以随意缩放,还可以调整参数(比如做一个钢铁的材质,节点可以选择暴露一个参数控制锈蚀程度,材质的用户只要把这个参数从 0 调到 1,就完成了一个完整的、连续的钢铁锈蚀的动画——手绘贴图是做不到这一点的)。它只要存储这个 Node Network 就行了,就算一个的 1024*1024 的贴图也有一百零五万像素 * 三个通道,但是 Node Network 是人拉的,人是断然不可能拉一个一百万个节点的网络的。所以一般一个 Substance 文件是 KB 级别,最多不超过 10MB。粗略估算的话,这个相对于位图贴图的“压缩比”至少有 10 倍,一般有好几百倍以上。随着硬件发展,位图贴图分辨率可能会继续提升,位图贴图大小会指数级增加,但是 Substance 文件体积增加要慢得多。
这个东西介绍完了,但是要强调的是 Substance Designer 这个产品本身的开创意义也并没有那么的大——Node Network 在 VFX 工具链中出现得本来就很多,甚至通过 Node Network 来做材质贴图也并非 Substance 首创(并且以前应该就已经用得很多了),但是对手都实在太垃圾(尤其考虑到自动麻将桌部分产品的祖传 crash ),Substance Designer 专注于 Procedural Texturing,做到了非常好的易用性,把这套方法带到了新的高度。
我想通过这个例子引出一个现象,就是以 Substance Designer 为代表,通过 Node Network 的形式暴露给 Artist 的 Procedural 创作方式,最近似乎在 VFX 界出现了一股回潮,并且在很多地方成为了 state of the art。我在
https://v2ex.com/t/636465#r_8459703 这个回复中举了大量的例子,其中有一些可能有二十年以上的历史,有一些则是最近几年的新功能。在这个回复中我还指出了:这种 Node Network 实际上是一个 Functional Program。这个回复上面的一楼还说明了 Composability 的意义,无论是计算机程序还是计算机艺术,背后都是”简单的东西通过组合递归地构成复杂的东西“。
你以为是照片或者手绘出来的,实际上是程序给你画的。
这也很好解释为什么 Substance 对贴图的“压缩比”那么大—— Substance Node Network 就是一段源码,专业的程序员做的项目,一个源文件一般大的几十 K 最多几百 K,整个项目纯源码加起来几十 M 已经很大了,这时候已经可能暴露出工程和项目管理上的一些问题。Artist 作为非专业程序员,能力上限就在那摆着,单个材质整不出这么大。
除了 Substance 之外,Houdini 也值得一提,Substance 只搞贴图,Houdini 是一个”全栈“的软件,就像 3ds Max/Maya 一样,但是 Houdini 完全贯彻了 Procedural 的设计,完全使用 Node Network (以及若干 DSL )工作。这使得 Houdini 极其适合做特效等工作,在自动生成场景、模型、地形等方面也是最好的选择,并成为了这些领域的 State of the art。游戏工业后知后觉,最近也开始使用 Houdini 给你们产出垃圾内容(
https://zhuanlan.zhihu.com/p/86991309,https://www.youtube.com/watch?v=NfizT369g60 )(为什么说是垃圾内容,因为某些工作室使用这些技术的目的就是用最少的成本产出最多的内容,从而最大限度延长玩家的游戏时间,甚至有传言说某些游戏的整个任务都是程序生成的,效果还不怎么好,玩家有一种被欺骗的感觉)。
我举的这两个例子离大家并不远,Substance 被 Adobe 收购了,然后你知道 Adobe 的德行,改了订阅制,但是和 JetBrains 一样用一年是可以永久使用的,在 Steam 上有非订阅版本,国区价格很便宜还没八方旅人贵。Houdini 直接有免费的限功能不限时间的 Non-commerical 版本。要想体验门槛并不高。