RenderMan与CG生产流程简述

RenderMan与CG生产流程简述

周波

版权所有

更新日期 2010年11月12日

随着国内CG事业的发展 ,越来越多的人开始学RenderMan,越来越多的公司也逐渐的开始尝试使用RenderMan做片子。我在进入Autodesk前一直在南京的CG公司兼职工作,由于工作需要使用了RenderMan。许多朋友都会问我关于RenderMan的问题,下面是我对在流程中使用RenderMan总结,随着时间的变化我也会更新的,欢迎挑错与提问。

RenderMan扫盲指引


确切的来说,RenderMan只是PIXAR当年定的一个渲染器标准,而且恰巧,那批人(包括Pat Haranhan)也是设计OpenGL,所以你看RenderMan API和OpenGL API很相像。现在我们经常说的RenderMan,一般来说是PIXAR自己开发自己使用同时也对外出售的PIXAR PhotoRealistic RenderMan渲染器。

RenderMan有哪些公司在用

  • PIXAR

毫无疑问,自己家吃饭的玩意。

  • Industrial Light & Magic

由于当初和PIXAR分家所签订的条约,使得IL+M可以永远和PIXAR分享RenderMan的源代码。作品无数。

  • Sony Picture Imageworks

老作品不说了,最近的比如《Beowolf》《Spiderman 2》《Benjamin Button》等。

  • Weta Studio

《King Kong》,还有最近的《Avatar》。其中NVIDIA 为《Avatar》的制作流程开发了基于GPU的外部点云光线跟踪器,也就是那个PantaRay。

  • MPC

《Clash of Titans》。MPC开发了Importance Sampling解决方案,应该类似于mental ray的Phenomena。

还有很多公司会在流程中用RenderMan。但是千万不要抱着非RenderMan不用的说法,因为mental ray、VRay有时候也是干活的得力助手,就好比并不是说有了航空母舰就有了一切,你还需要配备重型巡洋舰和核潜艇护卫舰才能发挥航空母舰的威力。

首先说一下,倘若你的流程决定用RenderMan,那么,会基本脚本能力的Shader Writer,或者Technical Director是绝对必不可少的——RenderMan附带的材质极其有限,可以说基本上没用。如果你还能够有高素质的R&D Programmer,那么一切就都很好了,你的流程可以向世界级工作室看齐了,别人为提高流程效率所做的,你也能做。

RenderMan技术指引


RenderMan主要的特点有

  • 易学。科学怪物的玩具可不能给艺术家使用并参与生产。
  • 全面的几何体支持。无论是基本的Polygon Mesh,还是Loop/Catmull-Clark Subdivision、NURBS,Implicit Surface,以及Point与Curve。
  • 极其廉价的displacement、motion blur、DOF。由于REYES的工作机制,使得这三种效果相比光线跟踪器来说要快速的多。
  • 简单易学的Shading Language。相比mental ray,RSL的学习曲线要比mental ray API平和的多,后者更偏向于R&D。
  • 强大的开发支持。

具体的内容可以看PIXAR发布的论文以及文档。尤其是关于RenderMan基础算法的论文,可以让你了解许多底层信息。

RenderMan购买指引

首先,你能找到的开源实现有Pixie和Aqsis。前者作者貌似已经没了继续开发的动力,后者刚刚出2.0版本。BMRT在民间依旧有流传,不过你要是在商业产品中使用严格来说是违法的行为。Pixie的功能是比较全面的,有光线跟踪,也有Photon Mapping、Irradiance Cache,Point-based Color Bleeding等这些还没过时的技术以用来支持GI。根据我的测试,Pixie比Aqsis效率高。Pixie据说在《Spiderman 2》的流程中使用过。

目前成熟的商业版RenderMan的主要有

  • PIXAR PhotoRealistic RenderMan
  • 3Delight

PRMan前者目前只有13.5的盗版,后者你可以用MAC地址申请一个免费的License。据我所知,国内许多个人和公司都用的破解的PRMan 13.5生产,其中不乏一些叫得出名字的公司。我曾经在流水线中用盗版PRMan 13.5在生产中所碰到的致命问题有,

  • 只有32bit版本的破解,无法计算超大规模场景。
  • 光线跟踪不会释放内存,一直到最后程序崩溃。
  • Slim假死。

对于一套PRMan来说,它由三个部分组成

  • RenderMan ProServer

RPS,基本的命令行渲染器以及辅助工具。

  • RenderMan for Maya

类似于mental ray for Maya的东西,可以在Maya中完成工作的艺术家工具。

  • RenderMan Studio

其实就是老一代的RenderMan Artist Tools,它包括

    • Alfred。渲染任务管理器。
    • It。简单而强大的显示服务器,可以看RGBA各个通道的便捷小工具,带序列帧文件管理功能。
    • Slim。基于tcl\tk的Shader制作工具,使用起来极其诡异,特别容易崩溃。

对于3Delight来说,则就简单的多,也是由3Delight for Maya的艺术家工具和独立渲染器组成。 3Delight的计算效率和稳定性不如PRMan。但是由于售价便宜,艺术家工具简单易学,所以也可以用。《District 9》的制作据说用的是3Delight。

具体的你可以去PIXAR和3Delight网站去得到更加详细的介绍。

RenderMan实施指引


软件方面,首先,Maya是必须的。并不是说没有RenderMan for 3dsmax,因为那个玩意年代实在太久远了(名字忘记了)。而且,如果你要用盗版的PRMan 13.5,那么只有对Maya 7、Maya 8.5、Maya 2008的艺术家工具。从Houdini 9开始对RenderMan的支持也越来越好,可以用Python进行开发。

后期软件的话则没有特别要求,Shake和Nuke等等都可以。

硬件方面,则很简单——刀片服务器RenderFarm是最好不过了。台式机搭建的网络曾经我们也测试过,稳定性和刀片服务器根本无法相比,哪怕是用的华硕服务器主板外加ECC内存,也一样没刀片服务器稳定。

RenderMan开发指引


这一块可以分进阶和高阶两个阶段。进阶主要就是围绕RenderMan本身的开发,高阶指的是开发配合RenderMan渲染器的外部工具。

Shader


首先,写Shader不难,难得并不是什么算法,难的是如何实现想要的效果。这是个可以发挥高度创造性的工作领域,许多时候不仅仅是将论文上的公式写成代码,更多的是写一些达到事半功倍的trick,比如Cook-Torrance BRDF中Beckmann Distribution项的修正(这个是SPI的朋友告诉我的,我不能透露具体做法)。

DSO


DSO分ShaderOp和Procedural DSO。前者主要是在RSL中添加新的函数,比如用GPU读取贴图的函数。后者主要是在运行期生成一些新的几何体,这样可以免去解析RIB的时间与存储空间。

RifPlugin

RifPlugin是Procedural DSO的一个延伸。具体作用就是,在解析RIB的时候,用你写的这个C++类去分析RIB,我们可以对写在RIB中的数据进行操作,本质上是RIB Parser。

Implicit Surface

其实这个东西,说有用也有用,说没用也可以。首先,Implicit Surface运用的地方不是很多,在学术圈内Implicit Surface Modeling相关的主题已经很成熟,但是真正的生产环节这个是没几个人用的。二来,常用的流体解算工具比如Houdini和Realflow求解出的SPH数据多半已经Polygonized,所以再用Implicit Surface替代毫无意义。开发人员晓得这是怎么回事就可以。

Subsurface Scattering

我永远强烈建议开发人员熟读Henrik Wann Jensen的这两篇论文,

  • 《A Practical Model for Subsurface Light Transport》
  • 《A Rapid Hierarchical Rendering Technique for Translucent Materials》

如果你不想读论文,在这里我可以用一个等式告诉你根本含义,

Albedo & Diffuse Mean Free Path = Absorption & Scattering

这个等式贯穿了整个SSS 的制作方法。虽然Gelato、PRMan 14、OSL都支持了subsurface这个ShaderOp,但是本质上依旧没有脱离这个等式所涵盖的范围。

Fur

这是个最近对于我来说比较热的主题。首先,毛发的建模和动力学解算是个难题,大规模毛发的渲染又是个问题。用Maya+Shave的人那么多,但是却几乎无一例外的用Archive而不是DSO解决问题。毛发的GPU求解已经几乎是必然趋势,Animal Logic有自己的基于GPU的求解工具,SPI也在继续开发类似的系统。大量毛发的运行期生成也是必然,过段时间我会写一个这样的工具。

PantaRay

为什么这个工具被开发,本质上还是因为目前AMD64/EM64T的程序不是真64bit,大规模场景数据依旧无法处理。《Avantar》的主要场景是在森林中,由于森林很庞大几何体数据会极其庞大,有些数据的计算比如Ambient Occlusion的计算无法在程序中完成。于是乎可以将物体的点云输出,在外部计算那些庞大的数据,出Pass的时候在Shader中直接读取计算完成的点云就可以。具体的你可以看今年Siggraph 2010的论文。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值