Splat:开发一个“Strange”着色器
Kendall Litaker
Walt Disney Animation Studios
美国伯班克
kendall.litaker@disneyanimation.com
Mason Khoo
Walt Disney Animation Studios
美国伯班克
mason.khoo@disneyanimation.com
Dan Lipson
Walt Disney Animation Studios
美国伯班克
dan.lipson@disneyanimation.com
Brent Burley
Walt Disney Animation Studios
美国伯班克
brent.burley@disneyanimation.com
摘要
在Walt Disney Animation Studios的《Strange World》中,角色Splat提出了独特的艺术需求,使用以往的技术在电影长片规模上实现这些需求在计算上过于昂贵且难以操作。在本文中,我们提出了针对其中两个挑战的解决方案:角色外缘的chromatic edge(色散边缘),以及Splat内部辉光的高效、可变形heterogeneous volume(非均匀体积)。重要的是,我们能够在single render pass(单次渲染pass)中实现这些效果,极大地简化了工作流程,同时达到了预期的艺术方向。
ACM引用格式:
Kendall Litaker, Dan Lipson, Mason Khoo, and Brent Burley. 2023. Splat: Developing a “Strange” Shader. In Special Interest Group on Computer Graphics and Interactive Techniques Conference Talks (SIGGRAPH ’23 Talks), August 06–10, 2023, Los Angeles, CA, USA. ACM, New York, NY, USA, 2 pages. https://doi.org/10.1145/3587421.3595424
1 引言
我们的艺术家面临着创造Splat的挑战性任务,Splat是一个具有变形虫般无定形形状的团状生物,表面像水母一样呈胶状、半透明,包围着漂浮的细胞器。除了具有生物发光的内在辉光外,Splat的设计还融入了chromatic edge(色散边缘)效果,其灵感来源于光线穿过显微镜下的微小生物时折射产生的chromatic aberrations(色差)。由于Splat主要通过哑剧式的表演来交流,会拉伸和挤压成任意数量的形状,因此我们的外观方案必须经受得住极端形变的考验。
2 早期探索
我们的第一次尝试使用由facing ratio控制的简单translucency(半透明)来创建具有明确边缘的内部辉光(图 2,上)。这种方法的渲染速度和噪点水平都非常出色,但需要持续的背光来维持饱和度水平。使用外部灯光作为内部辉光的光源,还会使Splat的感知颜色偏向灯光的颜色,偏离期望的青绿色。在正常场景灯光之外再添加角色专用灯光,需要不切实际的大量微观管理。对于chromatic edge,使用基于相机的facing ratio还会在Splat的整个外缘产生一圈与场景灯光无关的、过于均匀的边框(图 2,左下),这使得Splat很难与周围环境融合。
为了给chromatic edge引入更多的艺术指导性和自然光照,我们尝试将原来的facing ratio策略与一个相机投影相结合:投影内容是用灰色diffuse shader照亮的Splat单独预渲染pass。这种方法根据场景中的光照改变边缘发光的亮度,产生自然的阴影,帮助角色融入空间(图 2,右下);然而,使用单独渲染的预渲染pass效率低下,并使我们的工作流复杂化。该效果在灯光制作之前的渲染中不会出现,这会让上游部门难以判断角色的最终外观。
接下来我们对内部辉光的尝试使用了heterogeneous volumes(非均匀体积)。它们提供了最强的艺术控制力,但存在不少缺陷:渲染效率低、噪点多;每当Splat的动画更新时,都需要FX部门逐帧重新生成VDB文件;并且需要使用单独的渲染pass,难以管理。此外,某些姿势在肢体与身体连接处会出现生硬的断裂(图 3,上)。我们尝试将肢体与身体之间的空间视为体积的一部分,这有助于消除该伪影,但也改变了整体的半透明观感,而且从工作流的角度来看,选择性地管理这一点无法规模化推广。
为了解决这些问题,一支由技术总监、软件工程师、灯光师和外观艺术家组成的小团队研究了更轻量、更高效的解决方案。我们的目标是创建一个all-in-one(一体化)着色器,以艺术可指导、高效的单次pass方式实现内部辉光和chromatic edge。
3 Chromatic Edge(色散边缘)
对于chromatic edge,我们采用了一种新的multiple-scattering sheen(多次散射光泽)方法(Zeltner et al. 2022),它模拟表面上一层薄薄的颗粒/纤维层,在各种镜头光照场景下都能产生更自然的结果,并消除了我们之前方法中的单独渲染pass。我们通过在彩虹色中引入缓慢动画的程序噪声,为chromatic edge增加了更多变化。为了夸张该效果,我们对chromatic edge进行了缩放,使其放大入射光(图 1b),超出正常反射的强度。我们还添加了一个控制项,可以将sheen响应拆分到一个单独的render output(渲染输出)中,让灯光师在合成阶段进行进一步调整。
4 Heterogeneous Volume(非均匀体积)
为了避免在Splat内部使用逐帧VDB体积的开销,我们开发了一种新颖的“faux volume emission”(仿体积发光)技术(图 1c)。与完整的体积方法一样,我们沿着在Splat内部追踪的每条光线累积体积发光。我们通过在Splat的rest pose(绑定姿势)下指定的region grads(Burley et al. 2018)表达式来塑造体积发光密度。为了让体积跟随角色动画,我们在计算密度表达式之前,使用PRef顶点属性将进入Splat的表面点和光线方向变换到reference space(参考空间)。为了效率,我们沿着每条光线只在一个随机选择的点采样密度。
即便使用了这个新着色器,肢体断裂问题仍然存在。手臂很细,因此累积的体积发光很少,显得相当暗。当手臂急剧弯折时,从暗色的手臂到亮得多的身体之间的过渡显得非常突兀。虽然这在物理上是正确的,但在艺术上并不可取。为了解决这个问题,我们添加了一个控制项,允许一部分发光根据手臂与身体的接近程度从身体“渗透”到手臂(图 3,下)。
5 结果
在新着色器的初期制作测试中,我们遇到了一些问题。仿体积计算依赖于光线进入并射出物体来累积光线;任何其他物体穿插进Splat,都会导致发光以不理想的方式变暗。灯光师在有问题的镜头中通过手动标记穿插物体、使其在计算仿体积发光时被忽略来解决这个问题。chromatic edge在某些镜头中也需要调整,以便在Splat的“脚”与地面之间建立更好的接触;灯光师使用region grads让chromatic edge在接触区域附近产生柔和的衰减。
仿体积着色器成功消除了概念验证着色器中最重的组件——逐帧VDB体积,并带来了噪点水平更低、渲染时间更短的图像。FX部门的额外工作不再必要,这精简了我们的工作流。这种方法还确保了上游部门的在制作渲染能够准确呈现Splat的最终外观。进入灯光环节后,只需要有限的调整就能最终确定Splat的外观并获得创意批准。
参考文献
Brent Burley, David Adler, Matt Jen-Yuan Chiang, Hank Driskill, Ralf Habel, Patrick Kelly, Peter Kutz, Yining Karl Li, and Daniel Teece. 2018. The Design and Evolution of Disney’s Hyperion Renderer. ACM Trans. Graph. 37, 3, Article 33 (jul 2018), 22 pages. https://doi.org/10.1145/3182159
Tizian Zeltner, Brent Burley, and Matt Jen-Yuan Chiang. 2022. Practical Multiple-Scattering Sheen Using Linearly Transformed Cosines. In ACM SIGGRAPH 2022 Talks (Vancouver, BC, Canada)(SIGGRAPH ’22). Association for Computing Machinery, New York, NY, USA, Article 7, 2 pages. https://doi.org/10.1145/3532836.3536240
允许个人或课堂使用本作品的部分或全部内容制作数字或硬拷贝,无需付费,前提是这些拷贝不得用于盈利或商业目的,且拷贝需附有本声明和首页的完整引用。本作品中第三方组件的版权必须得到尊重。对于所有其他用途,请联系所有者/作者。