Pixar基于点云的渲染技术

修改
鏉ユ簮: junjun 浏览 3883 日期 2011-10-24 0

过去主要有三种方式来制造色溢效果。第一种就是简单的用辅助灯光来模拟色溢,也就是需要出现色溢的区域设置一些辅助光源来制造假的色溢现象。这种方式存在非常多的缺陷,首先是准确性不能得到保障,并且创作者需要花费大量时间和精力在辅助灯光的设置上。对于拓扑结构复杂和具有众多物体的场景来说,使用这种方式基本上是不可能完成的。不过对于简单的小场景来说,用模拟方式速度很快,设置也简单。

另外还有光线追踪(ray tracing)和光能传递(radiosity)两种方式。但使用ray tracing方式,场景中灯光需要产生数以万计的射线(rays),而在传统的radiosity方式中,场景需要则需要进行数以万计的因素细分(view factor,是辐射算法中的一个单位,用以描述从一个表面到另一个表面的辐射信息。传统光能传递渲染中,view factor细分量越大,则灯光在场景中的传递信息越准确)。

这些方式都可以实现非常真实的渲染效果,但实际上没有一种真正在电影渲染中广泛应用。光线追踪和光能传递方式可以达到惊人的真实照明效果,但对于电影级产品来说,过度的内存消耗和极长渲染时间使得整个渲染成本急剧增加甚至有点不切实际,大部分消耗不起这样的渲染成本。(chaoskids:这也就是为什么《黑客帝国》、《加勒比海盗》这样的特效大片中大量的特效镜头依然还是采用搭建实景和拍摄微缩模型的方式来实现的)。

新的解决方案2004年,在似乎不太可能对电影渲染有实际应用实时渲染(real-time rendering)领域,一个全新的想法诞生了。nvidia的高级工程师michael bunnell在《gpu gems 2》发表了一篇论文,在这篇论文中他设计了一种产生实时ao(ambient occlusion)效果的方法。

他设计的实时ao完全不依赖于光线追踪,而是通过点云(point cloud)来计算和光线追踪ao极其近似的效果。(chaoskids:michael bunnell后来离开了nvidia自己创建了fantasy lab公司。《gpu gems》是nvidia的一本专业论文集,内容主要面向基于gpu的高性能运算和实时图形图像渲染技术,现在已经出到第三册)。(图02)

图02

这个方案可以说是一次创举。pixar的renderman高级工程师per christensen立刻开始考虑如何在原来为rnederman开发的基于点的次表面反射(subsurface scattering)材质渲染工作流基础上,把这种新的照明渲染方案整合到pixar renderman中去。在早些时候per christensen和sony旗下的rene limberger一起共事过。

rene limberger曾经成功的将基于点的渲染技术整合到了《surf’s up》的视觉预览流程中。per christensen和ilm(工业光魔)的christophe hery一起进一步完善这些基于点云的渲染技术,最终在《加勒比海盗:聚魂棺》一片中真正将这些技术应用到了电影级产品渲染中。就这样michael bunnell的一篇论文顿时在电影cgi渲染领域造就了异常革命!point-based rendering诞生了!

[next]

在《加勒比海盗:聚魂棺》的制作过程中,christophe hery使用基于点的渲染技术获得了巨大成功。初期测试阶段,基于点云的ao渲染把原来的渲染时间从10小时缩短到了2小时。而更不可思议的是他们实现了基于点云的色溢效果,因为灯光照明信息可以被直接烘培到点云上。这是一个具有重大意义的突破,过去色溢渲染效果几乎被证明不可能应用在要求如此严密的镜头中。

ilm的灯光和材质组迅速开发了几个工具,并且很快把所有的角色迁移到了新的基于点云的渲染流程中,并通过新的点云渲染方式计算ao,色溢,ibl(image based lighting基于图像的照明技术,如hdri背景光球)。在这些工具和技术的帮助下,章鱼脸davy jones和他的水手们最终以难以置信的真实度完美展现在荧幕上!(图03、04)

图03

图04

per christensen对christophe hery的成就深感震惊,christophe hery竟然能如此快速的将这项技术整合到他们的工作流中。随后per christensen将这几项应用的dso原型直接整合到了pixar renderman里面,并且完善了性能和精度等方面。同时也根据ilm、sony以及其他一些特效工厂的需求对功能进行了很多扩展开发。(图05、06)

图05

图06

到此为止,虽然pixar rnederman中已经具备了很多基于点云的渲染技术,但pixar自己的电影工作流中还没有使用到任何点与点的色溢渲染。直到后来pete doctor的电影《up》才将基于点云的色溢渲染应用到了pixar自家的影片生产中。对于pixar来说,把基于点云的色溢渲染方法整合到自己极端复杂的工作流中是一件很简单的事情。《up》最终的成片中有大约90%的镜头都使用了基于点云的色溢。而《up》也应此在画面效果上得到了很大增强。

基于点云的渲染是一个旅程碑,它在光线追踪和光能传递之外提供了我们一套更灵活和高效的解决方案。如果没有这种技术的大规模应用,我们也见不到影片《up》中各种惟妙惟肖的灯光。这项技术在某种程度上颠覆了过去我们对解决色溢效果和ao等等效果的方法,但它是怎样运作的呢?

深入实质首先我们先来看看什么点云。你完全可以直观的把点云按照字面来解释,就是在三维空间中的一团以物体形状等因素构造的点集群。而点云中的每个点都可以带有一个或者多个通道,例如照明信息、occ、位置、法线等等。

除了用于渲染意外,其实点云在很多别的领域都有很重要的应用。例如用点云为3d纹理创建结构缓存,以及在一些辅助设计和工程制造领域的应用。归功于 reyes算法对多边形的切分方式,pixar renderman能够极其高效的生成点云。

renderman可以快捷的将位置信息、法线、以及任何用户自定义的通道写入到一个点云中。下图中你可以看到这个点云带有很多renderman 默认的通道,例如diffusecolor、subsurface等等。记录多少通道以及通道内是什么数据可以由用户自定。(图07)

图07

深入基于点云的渲染之前我们提到过michael bunnell的方案核心是用点云格式来取代光能传递和光线追踪。那么采用点云如何记录occ和色溢的信息呢?在renderman中,这个过程分两步来实现。

[next]

第一阶段首先将场景中的多边形和光照信息烘培到一个点云文件中(baking a point cloud)。每个点都带有位置信息、细分多边形信息(micropolygon )和法线信息。点云烘培文件生成以后可以以缓存方式储存以便重复使用。

对于色溢的计算来说,使用点云可以将速度提高至几乎和计算occ的一样。因为只有当颜色被烘焙到点云上的时候才需要调用shader,这种算法唯一需要做的就是把颜色和灯光信息包含到每一个点上。因为点云描述的是场景中多边形的近似信息(比如一个曲面被采样生成一组形状大致的点),相比起光线追踪真正去精确计算多边形信息来说,时间成本得到了非常可观的优化。

第二阶段

也就是渲染阶段。renderman会根据具体的 shader信息对点云进行转换。点云中的每个点在这个阶段中会按照法线信息被粗略的转换成碟形(因为点没有面积,不能对最终效果产生区域性的影响,单个点被转换成碟形后就具有了面积,然后再参与最后的计算。转换成碟形后的效果可以通过大部分点云查看工具来预览。)。然后在没有光线追踪的情况下计算这些碟型的色彩分布信息和occ信息。

和光线追踪同样实现同样的结果,但点云的解决方案却能把渲染色溢的速度提高到渲染occ的级别,这确实是一次质的飞跃。(图08、09、10)

图08

图09

图10

性能表现下图是同一个模型使用传统光线追踪occ和点云渲染近似occ的效果对比。点云渲染的occ在一些多边形相对集中的部分稍微偏暗,但整体视觉效果是几乎相同的,对于occ这个pass来说,这样的精确度足够了。而点云occ的渲染比光线追踪的速度快了将近8 倍,内存占用量只是前者的三分之一。(图11)

图11

优势与缺点优势:

基本没有杂点,使用光线追踪时画面容易出现杂点,而点云则不会出现。速度快捷,在大场景中速度可以比光线追踪提高4到10倍。色溢、基于图像的照明(hdri)渲染速度基本上和渲染occ一样快。在渲染置换(displacement)的时候没有任何时间上的增加,这点相对于光线追踪来说是一个巨大的优势。渲染时灯光和物体可以方便的排出或包含。

缺点:

有时候基于点云的渲染会产生过度的occ(太黑),因为点云本身就是一个近似取值方法如果精度过于高的话也就失去了使用点云的意义。还有由于一些隐藏表面的问题,有时候色溢效果中会产生一些错误的颜色瑕疵。

基于点云的色溢效果在《up》和《toy story 3》中的到了大规模应用。(图12、13)

图12

图13

pixar基于点云渲染技术的将来由于点云解决方案在《up》中获得大成功,基于点云的渲染技术现在已经应用在了pixar所有的产品制作流程中。基于点云的渲染很适合极度复杂的大场景,例如拥有大量多边形和大量置换shader的场景。但同时也要注意,点云方案并不是万能的,他只是在常用技术中提供了技术导演一个额外的选择。

在pixar,负责灯光的高级技术导演必须决定当前的镜头应该使用哪一种渲染技术才是最优化的。如果能够用模拟的方式制造模拟色溢,那还是首先考虑采用模拟方式。如果场景已经足够复杂,那么就采用基于点云的渲染。就occ效果而言,在pixar的工作流里面,点云方案和光线追踪两种方法都会使用,具体采用哪一种则取决于场景本身的因素。

[next]

基于点云的全局照明效果并不能完全取代过去的技术,他是实现方法上的一种创新,而不是制造某种前所未见的效果。pixar当前渲染的某些最复杂的极端场景单计算生成点云文件就需要花费20多小时,生成出来的点云文件超过300gb,这些场景如果不使用点云技术的话更本得不到最后我们看到的效果。

灵活性基于点云的渲染还有一个重要优势在于他的灵活性。他并不会像光线追踪等方法受到灯光物理特性的限制。在 pixar的工作流中,他们只用数量有限的灯光和场景中特定的某些多边形来生成点云,从而在最低的内存及性能消耗和最好的最终渲染结果之间找到一个平衡。

同时,点云渲染的效果是可以精准定位的。举个例子来说,在某些镜头中,只有离镜头特别近的物体需要比较明显的色溢和复杂的照明,离镜头比较远的物体在视觉上很难被察觉到。我们可以只让镜头前景中直接面向观众的物体使用基于点云的方式来渲染色溢,较远的部分则可以排除在点云计算之外。虽然pixar的极端复杂镜头中,即便是用这种灵活的方式,仍然会生成超过300g的点云文件,但结果证明他是高效可行的。如果这种复杂程度的场景用光线追踪来渲染的话过度的内存消耗导致可行性基本为零。

轻松的灯光设计在pixar的工作流中,基于点云的色溢通常通过灯光来烘培和读取。对整体照明效果的调整可以简单通过调整灯光强度来实现。由于这些灯光都是普通光源,所以普通光光源的常规属性都有效的。pixar整合基于点云的渲染技术到自己的工作流中是一个很平滑的过程,对于他们的灯光技术导演来说,点云就像是多了一种特殊的灯光类型而已。

结束语基于点云的技术已经被cgi业界广泛认可,per christensen说:“基于点云的色溢渲染已经在超过30部电影中得到了应用。这意味这色溢终于成为了cgi电影工业生产流程中的一项常规应用。 cgi技术生成的影像质量将达到一个全新的高度。”

现在很多电影中的cgi场景复杂程度已经超过了光线追踪和光能传递技术能够支撑的范围(chaoskids:例如《avatar》的场景,巨量的植物和非常复杂的光照设计。),对于这些日趋极端话的需求,基于点云的解决方案是唯一的选择。归功于pixar对点云技术和自家的renderman产品无缝完美的整合,导演可以设计空前复杂,要求苛刻的场景。所有的这一且是一个旅程碑,但也只是一个开始,今后你肯定还能看到基于点云的技术带来更多的革新!

评论

{{ username ? username.charAt(0).toUpperCase() : '?' }}
Ctrl+Enter 发布
{{ (c.username || c.author_name || '?').charAt(0).toUpperCase() }}
{{ c.username || c.author_name }} {{ Utils.formatDate(c.created_at) }}