BACK TO ARCHIVE
rendering path tracing glimpse animal logic pbr renderman

一窥 Animal Logic:Glimpse 渲染器

03.31.2016 ADUCG RESEARCH

原文:https://www.fxguide.com/fxfeatured/a-glimpse-at-animal-logic/

在全球顶尖动画与视觉特效公司纷纷自研渲染器的大趋势下,Animal Logic 也开发了自家的内部渲染器 Glimpse。这个名字源于它最初只是给灯光主管与 TD 用来“先瞥一眼(have a glimpse)”最终效果可能长什么样的工具。项目从早期的有限用途逐步成长为一套完整的制作级渲染器。

Glimpse 是一款单向路径追踪器(其中包含一些带有“准双向”性质的特殊机制——见下文)。如今它已成为 Animal Logic 在澳大利亚与加拿大两地全公司范围内使用的内部渲染器。过去三年里,它被打磨成可用于动画长片与真人特效(VFX)的制作级渲染器。

Animal 的研发总监 Guy Griffiths 现在希望团队能获得应得的认可,同时也让外界看到工作室内部的技术创新。这源于多年来公司更强调艺术成就,而并非以技术创新闻名。Animal Logic 从一家电视广告(TVC)特效公司成长为动画供应商,如今已成为大型动画工作室,作品包括 The LEGO Movie 等,并且明确以“制作(producing)——而不只是服务(servicing)——”电影市场为目标。公司仍有很强的 VFX 业务,比如新片 Allegiant 的特效镜头;这也很重要,因为 Glimpse 现在由整个公司共同使用。

Glimpse 的目标和任何制作级渲染器一样:输出最高质量的图像;但它同样强调让艺术家更容易做出这些图像、并能更自由地创作。对团队而言,Glimpse 必须既“好用”又能“出作品”,理想情况下它应该是管线里各处一致的那一个工具。“我们想要的是:每位艺术家坐在屏幕前,都拥有同一个内嵌的路径追踪器,”Griffiths 指出,“我们正在把渲染器尽可能拉近:进入公司里每位艺术家的每一个视口。”

新的乐高蝙蝠侠电影预告——全部由 Glimpse 渲染。

历史

2011

2011 年 1 月 5 日,圣诞假期结束后的第二天,当时的灯光主管 Max Liani 开始着手开发一套名为 PHX 的物理着色系统。“我想给灯光师一点优势。我想在我们所拥有的预算内推动可交付质量的边界。在业余时间里,我以 Glimpse 这个名字开始开发一个实验性的交互式路径追踪器,”Liani 解释道。

2012

“PHX 是我们将如何用物理着色来做高级光传输与光线追踪的一次初步演练,”AL 核心开发者 Luke Emrose 回顾该项目的起源之一时说道。在那个阶段,PHX 只是 PRMan 的一个着色扩展,并不是为了成为一套全新制作渲染器的基础。它被用于 Walking with DinosaursThe Great Gatsby。当时 RenderMan 还没有自带物理着色系统,因此这样的扩展很有意义。

Liani 的目标是让 Walking with Dinosaurs 项目的灯光更快,以便团队尽可能迅速地完成镜头。最初版本的 Glimpse 只能渲染灰模、支持区域光与完整光线追踪;它确实能让灯光艺术家非常快速地“先看一眼”最终灯光大致会是什么样子——等所有贴图与其他元素最终加入之后再对照。它作为一种准备工具被使用,但完整的灯光与最终渲染仍然在 PRMan 中完成。

2012 年末,一个新版的 Glimpse 完成了,它开始被用来帮助交付实际镜头,但仍不是最终渲染器。它在制作管线的更后段发挥作用,但距离取代 Animal Logic 对 PRMan 的使用还相差甚远。

2013

2013 年初,团队开始制作 The LEGO Movie,对更复杂渲染工具的需求变得明显。LEGO 表面上看起来渲染很简单,但实际上非常复杂。比如塑料积木需要使用次表面散射(SSS)来渲染,而且片中有大量积木。由于绝大多数积木都具有强反射特性,因此需要一个稳健、但极其快速的全光线追踪解决方案。测试表明,AL 既有管线的速度不够,团队开始探索所有可能的新渲染管线方案。

theLEGOMovie_glimpse

《乐高大电影》

最终他们选择在 PRMan 中做光线加速,并采用一个 Glimpse 插件——思路上与 BMRT 和 RenderMan 的混合式光线追踪相似。这个版本被命名为:FrankenGlimpse!这种混合方案在同一进程中同时加载 PRMan 和 Glimpse,并通过一套精巧的机制共享数据;这使得团队可以编写着色算子,在其中调用 Glimpse 的光线追踪操作,并获得足够快的结果,从而把渲染时间降低到团队所需的水平。

随后它演进为对 RenderMan 光线追踪子系统的完整替换。起初它很简单,不处理贴图,例如反弹光照只使用单一颜色。当团队第一次看到来自 Glimpse 的彩色帧时,新系统就被用于转台与中间渲染。这证明了即便存在噪点与其他限制,光线追踪仍然是检查动画更快的方法,相比他们的 OpenGL 渲染方案而言。“在许多情况下,从管线角度看,我们用 Glimpse 的光线追踪出图,比用 OpenGL 更快,”Luke Emrose 评论道。在动画环节,通过降低质量阈值、简化贴图等方式提升速度,“这些都会产生更快收敛的结果,动画师仍然更容易使用,”他补充说。就灯光而言,Glimpse 的设置速度很快,并且直观易用。

到 2013 年末,Glimpse 的复杂度已经提升到可以用于最终渲染的程度。事实上,距离 LEGO 最终交付只剩几周时,这一阶段的最后一些内容才完成,比如加入贴图支持;因此在 The LEGO Movie 中,完全由 Glimpse 渲染的镜头只占很少一部分。“从我观察开发的角度看,”Griffiths 说,“团队是在尽可能加特性来提速;实际上他们一直忙到影片结束前两周还在做,比如加入更快的 SSS 支持——速度提升很大。所以创新贯穿了整部影片。”

从很多方面看,RenderMan 之后也会解决许多同样的问题,并把这些好处带给更多用户;但在 2013 年,Animal Logic 在很多方面实际上走在公共版本发布之前,因此 Glimpse 被用于 LEGO。PRMan 15 在 LEGO 项目上确实提供了很多强大的工具,AL 也充分使用,尤其是实例化(instancing);AL 是最早在制作中使用实例化的工作室之一,并且使用得非常“激进”——“考虑到 LEGO 也许是最适合实例化的电影,”Glimpse 核心开发者之一 Daniel Heckenberg 打趣道。

2014

LEGO 收尾时,团队算是拥有了一个制作渲染器——某种意义上。影片结束后,AL 希望暂停一下,制定更结构化的未来路线图。2014 年,团队开始与各主管及关键部门负责人进行咨询与规划,来定义 roadmap。通过这些每周一次的未来方向会议,团队决定全力投入制作级渲染器,并且认为起点应该从着色子系统开始。最初计划基于 OpenSL,但后来扩展得更远。例如,团队决定开发他们的图形化节点着色构建系统 ‘Ash’。Ash 在理念上有很多源自 PHX 的传承,但 Animal 用完全不同的方式实现。PHX 影响了 Ash,但并不等同于它。“Ash 本质上是 Glimpse 实现的 BRDF / BXDF 物质与 OpenSL 着色 pattern 网络的组合,”Heckenberg 解释道。Ash 利用 Animal Logic 同时控制着色组件与渲染组件这一优势,而 PHX 早期做不到这一点。

“到影片结束时,我们确信自己做出了非常特别的东西,”Griffiths 评论道。“LEGO 有很多挑战,但它在技术和商业上都成功了,我们非常自豪。结果我们知道还会有续集,这意味着还会有一大堆积木!”

LEGO 之后的咨询、设计探索与创新阶段,让团队在职业层面收获很大。“2014 年,当下一部电影还在前期制作时,我们有一段时间可以规划开发。之后还有一个八周的‘制作沉淀(production bedding down)过程’;我必须说,那是我职业生涯中最激动人心的时期之一,”Griffiths 自豪地解释道。

如前所述,SSS 从第一部 LEGO 电影开始就至关重要。Glimpse 最初的 SSS 使用标准的双极子(dipole)模型(2013)。后来在 2014 年的修订中,当团队决定需要更高保真的 SSS 时,他们加入了 Jensen 的单次散射(single scatter)方法。他们探索过方向性双极子模型,但最终选择单次散射方案,因为更容易获得更准确的单次散射分量。当前系统结合了 Jensen 单次散射与双极子模型;而令人惊讶的是,真实的 LEGO 零件(尤其特写)确实会表现出强烈的 SSS,这对团队而言是关键点。这条路线让他们的做法更接近 Arnold(Solid Angle):一种无缓存、光线采样(ray sampled)的方案——远离任何基于缓存的方法。该系统对海量 LEGO 积木以及角色工作都有很好的扩展性。

到 2014 年中,系统不仅用于电影项目,还被用于 Vogue 杂志封面图像的制作。2014 年末,团队交付了对一部即将推出的 LEGO 电影的首批测试。

一旦团队决定将 Glimpse 打造成完整制作渲染器,他们就开始补齐规格。在着色系统之后,他们着手体积着色、曲线渲染(用于头发与毛发),并加入其他更通用的扩展。

2015

2015 年 1 月,团队向 AL 其他部门展示了 LEGO 测试的结果,“大家都被震撼到了,”Griffiths 回忆道。虽然该测试尚未公开,但它包含“很多有机体——不只是积木!”

2015 年开始之后,团队转向 Render Everywhere 的理念,目标是让 Glimpse 成为公司内部到处都能用的统一渲染器。

团队很快就把功劳归于 Matt Pharr 和 Greg Humphreys 的 PBRT 一书,以及 Eric Veach 关于光传输路径积分表述与 MIS 的启发性工作(见下文)。他们也认为 OpenSL、Embree 等开源项目给了重要启发。

团队也感谢 Pixar 与 Solid Angle 等商业渲染团队公开发布并讨论他们的研究。“这是从事渲染工作非常令人兴奋的时代,”Emrose 说,“大家分享的态度很开放。对本质上是一群竞争者而言,各家公司与成功渲染器之间有大量分享,这推动了包括 Glimpse 在内的商业产品与渲染器不断前进。Animal Logic 也非常希望能以任何方式回馈这个社区。”


引擎内部

Deep Comp:不支持

Deep compositing 在 Animal Logic 内部是一个颇具争议的话题。Glimpse 目前不支持 deep 数据。fxguide 最早关于 deep compositing 的报道,采访的就是当时在 Animal Logic 工作的人;学院科学技术奖也表彰了前 Animal Logic(以及 Weta Digital)的相关人员。那么,为什么 Animal Logic 自己的 Glimpse 渲染器不支持 deep 数据、公司也不拥抱 deep 合成管线——尤其他们过去曾在制作中使用过 deep?

“Glimpse 目前还不支持 deep 输出,这部分原因来自我们多年使用 deep 的经验,”Heckenberg 解释道。“通常会提到的顾虑包括数据量、它给渲染与合成带来的额外开销(数据被巨大放大);但在我们内部会议里,一个更突出的结论是:deep 本该处理掉的许多清理工作,反而在 The LEGO Movie 中成了问题。”

具有讽刺意味的是,deep 合成虽然承诺给合成更多控制,但实际上根据 Animal Logic 核心开发者 Matthew Reid 的说法,它让合成师在散焦等操作上做了额外的“deep 清理”,以移除不需要的伪影。“在 The LEGO Movie 中,所有镜头景深效果都在合成阶段完成。LEGO 的合成管线会从 deep 数据重建场景可见性,继而产生大量伪影,合成师不得不去处理。”

这种劳动密集的清理导致团队在 LEGO 之后避免使用 deep 合成来做镜头效果。相反,这些镜头效果目前被直接烘焙进渲染中,因此 Glimpse 也就没有 deep compositing 输出支持。同样,极端镜头畸变也由渲染器处理:既为了画质(避免后期处理带来的软化),也为了渲染时间。

Glimpse 在其相机模型中内置了参数化镜头畸变;这在 Glimpse 基本上是单向光线追踪的语境下很关键。光线微分(ray differentials)在渲染器中被畸变处理,这意味着团队可以以最终渲染分辨率采样所有贴图。

能量再分配(Energy redistribution,ER)采样是一种无偏的混合方法:它在标准蒙特卡洛积分设置中使用类似 Metropolis 采样的变异策略,而不需要中间的概率分布步骤。该方法最早发表于 1995 年 SIGGRAPH(David Cline 等)。此处的 Energy 可理解为亮度。Animal Logic 使用了不同但相似、且更简化的版本,但效果更好。

正确的散焦高光所追求的一点,是得到更大的 bokeh 高光。换句话说,当一个极亮的小点严重失焦时,它需要在渲染结果中变成一个明亮的圆盘。这能产生经典的“美感镜头”:长焦夜景中,主体后方一串闪烁高光。既然 Animal Logic 的策略是不在 deep 合成中做散焦,那么它就必须在渲染时解决。实现方式是使用参数化镜头畸变:团队对所有主相机光线进行畸变,然后单向发射所有光线。渲染器在场景里发现高光后,会触发一个能量再分配模型,把这些高光“回传”到镜头上。从某种意义上讲,渲染器依然是单向路径追踪器,但这些一旦被发现的高光会以更接近双向路径的方式反馈回来,从而允许产生明亮的散景“亮点”。能量再分配被用来对渲染进行采样并完成结果,因为能量守恒对物理可信模型至关重要。它也解决了噪声问题:没有能量再分配,就会出现典型的欠采样,并表现为高光周围的噪点(噪声或 fireflies)。

“Glimpse 是单向路径追踪器,但有一个特殊情况会沿相反方向追踪,以改善镜头散焦的采样。我们使用一种从 ERPT 派生的技术,如 [Cline et al 2005] 所述,用于高效采样失焦区域;它允许通过在传感器的失焦区域上进行投影,让路径样本的追踪与着色开销得到摊销,”Heckenberg 解释道。

theThingBeast_01

相机

Glimpse 不仅能匹配常规制作相机,还被设计为支持球形或非平面图像。这通常用于 VR 与沉浸式 360 环境(参见 fxguide 报道)。Heckenberg 说:“我们做了各种更通用的相机模型。”

采样

Glimpse 在 Animal Logic 成功落地的核心之一,是它的预览渲染与最终渲染之间唯一的区别,只在于采样数量与发射顺序。这让最终外观尽可能早地出现在制作管线中。

多重重要性采样(MIS)贯穿 Glimpse 的各处。“我们到处都用它,它是让路径追踪变得实用的主力技巧。它让增量式研究可以非常优雅地融入现有的路径追踪器中,”Heckenberg 说。从很多角度看,Glimpse 也是在证明 Eric Veach 在 1997 年博士论文中的工作有多重要。团队完全认可他是“这个疯狂的光线追踪世界里的一块关键文献”,Emrose 开玩笑说,“而且它在未来很多年都会是一项巨大贡献!”

“我们尽可能在能用的地方使用 MIS 作为降方差技术,”Heckenberg 补充道。“最常被讨论的是用于光源与 BDRF 采样的多样本 MIS,对于高光表面非常重要;但我们也在其他地方使用 MIS,例如用于光谱变化的次表面散射的一样本 MIS。”

Animal Logic 为 Glimpse 做了完整的 Maya 与 Houdini 集成,并已用于全动画电影以及即将推出的真人特效电影,例如 Allegiant(Animal Logic 是主要特效镜头供应商)。(fxguide 未来还会有更多内容。)

体积采样:体积模型使用 OpenVDB,并采用一种适用于烟雾与云的距离采样算法,但这并不是团队深入研究的方向。关于发光体与发射光,目前团队正在为即将到来的一个 VFX 项目做更先进的重要性采样研究——该项目包含大量火焰与烟雾。体积目前确实会为场景提供照明,但新项目需要更复杂的解决方案,团队正在全力编码;新方案将使用 MIS,因此噪点会更低(收敛更快)。

开源

现代开发团队面对数量惊人的强大开源方案,它们既能带来标准化,又能捷径式地获得业界认可的制作方案:例如 Alembic、USD(Universal Scene Description)、OpenIO、OpenSubdiv、Open VDB 等。

团队批判性地研究过大多数开源渲染工具,广泛拥抱其中一些,同时也拒绝另一些。除了前文提到的 OpenSL,AL 使用 OpenVDB 做体积支持,使用 Alembic,也深入研究过 Open USD(Universal Scene Description);不过这里的细节比较微妙:AL 部署了一套他们称为 CSD(Common Scene Description)的系统,它并不是 USD,但目标相关。

在 Animal Logic 内部,CSD 实际上是喂给渲染器的场景描述。相比之下,USD 被认为总会在渲染前再被解释或处理一次;USD 不是任何渲染器的直接入口。AL 的 CSD 也是设施级(facility wide)的,它是其场景描述的基础。一个 Glimpse 场景更像游戏环境:场景本身存在,而渲染器只是该场景的一个客户端;它是“活”的,仍可更新——与传统 RIB 风格的只读场景文件不同。“Glimpse 启动非常快、使用成本非常低——因此可以在管线中任何需要的地方使用,”团队解释道。

Glimpse(以及 CSD)被认为覆盖了 AL 的渲染需求:从灯光与转台,到 lookdev 与最终渲染。没有别的“GPU 渲染器”、快速动画预览渲染器或交互式灯光工具……所有这些都只是 Glimpse。“我们不需要在预览时切换掉 Glimpse 去用某个 GPU 渲染器,然后再猜最终效果会是什么样;我们始终得到同样的保真度,”Emrose 说。这种大规模采用的过程在 2015 年上半年完成。之后团队又补充了更多工具,以满足其在 Allegiant 上对照片级特效的需求。

一个很好的 VFX Glimpse 示例:来自 Allegiant 的独家前后对比片段


性能

“渲染器是我们交付给客户图像的产出者——掌控它能带来巨大的灵活性——我们正在利用这一点。”

Guy Griffiths

研发总监

Glimpse 是制作成功的关键,没有其他议程:Animal Logic 希望掌控 Glimpse,让他们的电影更好。为此,团队必须让 Glimpse 足够快。Glimpse 的确很快,非常快,而且扩展性极强。例如在一次压力测试中,一个有效包含 550 亿块 LEGO 积木的场景,在 1440*810 分辨率下用环境光遮蔽(AO)积分器进行交互渲染,可达到 12fps。多级实例化用于保持紧凑的内存占用。

Glimpse 的交互渲染不会通过降低分辨率/像素化来换取帧率。“当渲染器切换到像素化的低分辨率,或者在场景发生变化时取消一帧的渲染迭代(比如从中心或顶部重新开始,而不是先完成当前帧),我会觉得非常分心。我不希望 Glimpse 有那样的行为,”Liani 评论道。

Glimpse 始终以全分辨率渲染,而且速度足够快。例如在使用制作资产与复杂着色器时,艺术家通常每 1–2 秒就能得到一次帧迭代(每像素 1 个样本的细化)。若使用精心制作、没有过度叠层与大量贴图/噪声等的着色器,并且灯光较少,Glimpse 在制作场景中很容易达到每秒 5–10 帧。单资产 lookdev 时,艺术家在工位上可在 2k 分辨率获得超过 20fps。一个经典简单测试场景:1k 分辨率、平面上有 10,000 个网格球体并使用 AO,测试可达到 70–100fps。

展望

噪声

Allegiant 项目中,团队通过蛮力渲染让最终画面收敛;但近年来一些渲染器(例如迪士尼的 Hyperion)开始提供智能降噪:利用渲染器的各种输出,获得远优于直接图像处理式降噪的效果。Animal Logic 计划本月在 Glimpse 中做类似的东西。关于自适应采样,“这是我们目前最重要的技术,用于把渲染时间有效地投入到消除可见噪声上,”Heckenberg 说。“它最早在基于 PRMan 的 PHX 物理着色系统中实现,随后又在 Glimpse 中重新实现;它提供了非常简单直观的控制方式,以获得一致的主观噪声水平。”

batman_lego1

来自新的乐高蝙蝠侠

batmanLego2

由 Glimpse 渲染


Checkpoint

Glimpse 运行在 Animal Logic 的渲染农场上,这意味着它必须非常高效;因为在 2016 年,Animal Logic 至少会有两部大型乐高动画电影需要制作渲染,再加上他们可能承接的 VFX 工作。调度软件也是内部工具,团队已经发布了第二版,并计划在第三版中支持路径追踪器可以提供的“checkpoint(暂停/继续)”功能。鉴于路径追踪的性质,它可以运行 X 的时间后暂停——审阅——再继续渲染。这是 RenderMan 等渲染器具备的特性,也是 Glimpse 团队计划今年实现的功能。根据 Griffiths 的说法,农场资源管理是 Animal Logic 技术议程中的关键组成部分。

色彩空间

Animal Logic 现在在所有项目中都使用以 ACES 为核心的管线风格;这一点其实从第一部乐高电影就开始了。目前,其表面与渲染管线使用线性的 P3-D60 工作空间:把 DCI 规范中的 P3 色度原色与 ACES 的 D60 白点混合起来。Glimpse 及其他图像查看应用使用 ACES Display Transforms 来查看图像,并用 ACES Input transforms 来解释真人素材。渲染结果在管线下游流转时,往往会“提升到 ACEScg,以便达到一些在更受限的 P3 显示色域中无法处理的效果注释,然后在 DI 中以 ACEScc 完成,”Animal Logic 团队评论道。未来的计划是在管线更上游就迁移到 ACEScg。

多年前切换到支持高动态范围(HDR)的 ACES 显示变换,使得将既有内容与工作流适配现代 HDR 显示器变得很容易,这是一个非常有前景的方向。

光谱渲染

Animal Logic 研究过——并否决了——把 Glimpse 做成光谱渲染器的想法。与 Maxwell 和 Weta 的 Manuka 不同,Animal Logic 团队认为他们的制作问题并不会从按波长采样中受益。光谱渲染目前不在他们的议程中(Weta 的 Manuka 被设计为完全基于光谱)。

Glimpse 的理念之一,是做一个没有太多花哨功能的快速渲染器——不追求“什么都能做”或支持所有需求。不同于服务全球大量制作的渲染器,Animal Logic 需要的是一款能快速服务 Animal Logic 的高质量渲染器。Liani 认为,这种更精简、快速的通用方案也许缺少一些灵活性,但更易学、更快、并且在内存消耗上优于许多其他渲染器;正是他最初提出了这种“精干而快速”的 Glimpse 模型。

另一支乐高蝙蝠侠预告(更搞笑那支,Glimpse 灯光也非常棒)

结语

如果你问 Max Liani:回顾 Glimpse 的开发历程,他最自豪的是什么?答案似乎是这段旅程本身。毕竟 Liani 并不是 PhD 研究者,他实际上只有高中学历;但他的工作涵盖了超过大多数硕士生的数学,以及既有效又高效的编程——而这正是在硬核动画长片渲染一线必须具备的能力。

“Glimpse 从根本上说是一位艺术家为艺术家设计的工具,这让我非常自豪。它很容易使用,速度快,并且能在极端复杂度下保持卓越扩展性。它可能没有某些商业产品的全部功能,但归根到底,我在这里提到的三点才是决定性差异,”他解释道。

他从参与该项目中总结的建议/经验是:

“再怎么强调‘简单’的重要性都不为过!起初,当艺术家尝试理解如何完成工作时,反而会被这种简单性‘解除武装’。”

例如,这里有一些艺术家在学习 Glimpse 时提出的真实问题:

  • 我该如何调优/优化物体/灯光/着色器上的采样数量?
    • 答:选择“adaptive rendering(自适应渲染)”,系统会找出噪声在哪里并想办法去掉它(这也是 PHX 在 2011 年的工作方式)。其他渲染器会有一张很大的流程图来排查噪声;在 Glimpse 里,你对整个场景只有一个控制:“maxVariance”。
  • 我该如何输出自定义 matte?
    • 答:把你想输出的自定义数据名称加到通道(AOVs)的逗号分隔列表里。完成。
  • 我该如何得到自定义 matte 的折射 matte?
    • 答:在通道名之前加上 “refracted_” 前缀。

Animal Logic 一直努力让自己被视为创意强者,而不只是“受雇的枪”。它完成了许多人尝试、却少有人成功的转变:从供应商走向作者。但与此同时,它也打造了一支令人印象深刻的研究与开发团队。理论上,人们可以用现成工具创作艺术;但 Animal Logic 的经验强调了我们行业的本质——艺术与科学必须融合。这不仅是意图问题,更是是否拥有能实现这些意图的工具。

本文采用 Creative Commons BY-NC-ND 4.0 协议进行授权。

BY-NC-ND: 署名-非商业性使用-禁止演绎

End of Article