第一章 Renderman基础 
一、简述Renderman 
  1.什么是Renderman 
  相信很多人对Renderman这个词不陌生,而接触外国资料比较多的朋友更是对Renderman——如雷贯耳的一流渲染器熟悉。
  每当你看到好莱坞的电影制作特辑,凡设计动画特级的,几乎都离不开Renderman,特别是投资过亿的大片,在技术上经常突出 自己用R enderman解决了什么制作问题。如《The mummy 2》中的花草生长、《FF》中的人体皮肤。《精灵鼠小弟》中的毛发等等。 
  Renderman到底是什么呢? 
  严格地说,它是一种渲染思想,一种系统。 
  在Renderman的思想下产生了PhotoRealistic Renderman(下文称Prman)、Blue Moon Rendering Tools(下称BMRT)和Entropy等渲染器。Renderman内包含了ShadingLanguage、ShadingNetwork、REYES等思想。 
  ShadingLanguage是一种用来描述Shader表现各种效果的类C语言,它可以按照用户的意志来描述Shader的表现。比如用户需要实现一种新的、软件里没有的视觉效果,一种可靠的方法是用S hadingLanguage来描述,然后编译,让Renderman使用,就好象你“告诉”Renderman应该怎么样渲染一样。 
  ShadingNetwork最早源自于Cook的ShadeTree思想,开始是用来解决复合贴图的合成,后来直接导致了Renderman的诞生。 
  Reyes(Render Everything You'd Ever Seen),是一种扫描线的思想。在电影制作中渲染精度是十分重要的,任何瑕疵在电影胶片中出现都会直接导致画面的视觉效果出错。Reyes就是为了解决渲染精度而诞生的。关于Reyes我们在后面将有更详细的描述。 
  多年的发展后很多渲染系统都已经吸收了这写伟大的渲染思想,其中最优秀的是MR和Maya。MR直接把ANSI C(标准C)做为Shader的语言,而Maya则可以把各种毫不相干的东西连接到ShadingNetwork里。但可以完美结合的仍然还只有Renderman的系统。

  2.Renderman的渲染器 
  Renderman的渲染器有Prman、BMRT、Entropy。 
  Prman被视为Renderman的正宗,而且Renderman的大部分成就都是prman获得的。作为世界第一的渲染器,Prman使用的只是最原始的扫描线算法,而不支持光线跟踪(但可以用B MRT的Rayserver实现),更不用说GI和Caustic。但除了光线跟踪和辐射度,其他的算法它大部分都支持。
  BMRT,是Renderman大师LarryGritz自己开发的渲染器,是免费版的渲染器。它支持光线跟踪,也支持GI,而且效果可以媲美 Prman,但就非常地慢……它在Unix系的平台上可以做为prman的rayserver使prman具有光线跟踪功能。 
  Entropy是BMRT的收费版,速度比BMRT快很多很多,支持各种光线跟踪的特点,效果非同一般,但使用不方便,要配合Mayaman、Maxm an来使用。 
  3 PhotoRealistic Renderman 
  Pixar无疑是世界上领先的动画制作公司之一,它的领先地位有很大的一部分功劳是Prman所争取来的。而它销售Prman也给它带 来了不少的利润。 
  Prman的开发初衷是"PhotoRealistic",就是有照片级的精度。如果设置得当Prman渲染出来的东西真的是没有任何明显的锯齿。
而且Prman是做电影用的,所以速度是很关键的一个因素。prman注重速度和精度的结合,它渲染的Nurbs真正称得上无缝,速度也是众多渲染器中最快的。 
  电影制作的另一个重要的因素是利润和成本的联系。如果把投资者宝贵的钱花在渲染不可见的多边形上,或者实验不成熟的新技 术上,下次就没有人会找你做电影了。所以P rman的REYES算法是经过优化的,会确保只渲染画面可以见到的多边形,决不浪费渲染时间在不可见面上。 
  但Prman是十分难用的,它本身是一个严密的完整的动画制作体系,只有核心,没有外部的包装,需要用户做相应的开发工作。
在美国,几乎每个使用p rman的Studio都有自己专用的prman包装程序。
  4.Renderman Artisan Tools 
  Pixar多年来开发了不少的动画系统,为了促进Prman的普及,Pixar把一系列供简化Prman使用的工具包装在一起,就成了Renderman Artisan Tools(下简称RAT)。 
  RAT包括: 
  PRman: 核心,真正负责渲染的部分。
   
  MtoR:Maya to Renderman,Maya的插件,功能强大,可以完成很多工作,调用Alfred和Prman渲染等。真正的工作是输出RIB文件到Prman。
   
  Alfred Server:调节单机或网络渲染的强大工具,可以查看渲染进度,进行渲染调度等。
   
  Slim:ShadingNetwork部件,可以简化写Shader的工序(实际上会让你偷懒不自己动手写sl),而且可以通过Template做   ShadingNetwork的连接。
   
  It:Image Tool,可以做为观看渲染结果的Renderview,但实际上是一个极其强大的script型后期合成工具。
   
二、RAT的工作方式 
  1.Prman的工作方式 
  Prman的核心只是一个单独的exe文件,不到2Mb,执行的命令行格式为prman *.rib。可以知道,prman只接受RIB文件。RIB文件就是用Renderman的语言对渲染场景的定义。 
  Prman渲染后便会输出到Display server,Display server可以是软件之间的Pipe(比如It或Houdini中的ip),tiff文件、iff文件等。建议使用tiff文件,因为prman对tiff的支持比较好。 
  2.RAT的工作方式 
  RAT是以Prman为核心的:

  3.复杂的渲染调度 
  Prman没有光线跟踪,不能直接渲染阴影,所以必须生成Shadowmap。但prman只会渲染RIB文件内所定义的一个摄象机的内容,所以要生成Shadowmap要输出多一个以灯光为摄象机的RIB文件。这样似乎很麻烦,但如果在大型的场景中这样的方法将会比光线跟踪快很多很多倍。 
  mtor和Alfred已经简化了这一步骤,当场景涉及shadowmap、softshadow、reflection、reference和environment这些贴图时,mtor会自动生成所需要的所有RIB文件,而且Alfred也会自动作出相应的渲染调度。