大触教程 | RenderMan-工欲善其事(第二讲)

发布日期: 2018-03-01 11:01:45 阅读量:
蓝海创意云范导

大触教程 RenderMan 渲染

在上节课(大触教程 | 从最简单入手RenderMan)中,我们初步熟悉了RenderMan的基本情况,那么接下来,课程的难度会有所增加~

首先我们来讨论一个问题:一个灯光师,在渲染之前,他应该做些什么?嗯,打好美美的灯光,除此之外呢?一个灯光师,在渲染前,最重要的莫过于对数据的处理,这个怎么讲?让我们来举个栗子:一个场景中,有1000棵树、200盏灯光、100栋房子,我要把场景渲的美美的,就必须不断的调整灯光的位置、参数,每一次比上一次更好,这个叫迭代。但是场景太复杂了,每次看到渲染结果要等10个小时,怎么办?或者每次测试渲染,渲染到一半就崩溃了,提示内存不足,可是我已经配置64GB了,怎么办?

所以说,如果不能很好的事先处理好这些数据,会影响到创意实现的效率,结果三天过去了,连初步的结果都没有。

 

RenderMan就很好的考虑到这些,RenderMan在渲染前会生成一个字节流,或者我们让几何体变成实例来节省内存。

这里要提到RenderMan的核心技术:RIS(RenderMan Interface Specification)和RIB(RenderMan Interface Bytestream)

额,这两个是什么东东啊?

RIS是一个API口,它是一个C函数的集合,我们所有的创意,都可以被一组数据描述,这些数据输入到RIS中,那么它会先生成RIB文件,这个文件再被渲染器剩下的流程解释并渲染出来。

想象你在开车,方向盘、油门、刹车、档位,这些就是API了。

衡量一个渲染器是否强大,主要看API的能力。比如F1赛车的方向盘非常复杂,有相当多的控制单元,都是为了在极短时间内获得对车的最佳控制。

 

还记得以前学过的ASCⅡ编码吗?256个,刚好是一个字节,8bit,RIS会把场景中的所有几何体、VDB和灯光全部转化为接口能够读取的字节流,想象一条蛇,00101010010101010101010000010111101010......

这个字节流就是RIB文件了,采用ASCⅡ编码,字节都是存放在硬盘上的。RIB的另一个特点就是可以被任意拆分,这给分布式PC计算提供了极大的便利,RIB文件在生成的时候,各个部分相互独立,最后生成一个压缩包:

renderman/ribarchives/CoupeRibArchiveShape.zip

我们现在打开Maya,找到这样的一个图标:

 

对场景中的一个几何体创建Archive:

 

注意场景中的变化,大纲视图的几何体节点下出现了一个包含GPU cache节点地Archive节点,而透视图场景中,出现了已经读取到显存和内存中的缓存和代表Archive的边框。


GPU cache的优点在于快速的加载场景,如果你删除了原来的实体,整个场景只保留这些缓存,下次打开场景的时候,速度会非常快,同时已经生成好的RIB文件也会加快渲染速度,可以快速迭代你的look development。

 

打开属性面板,我们看到Archive加载的是RIB的压缩包,而场景中出现的是abc的缓存。

 

如果你的模型是一个Group,包含很多几何体,那么修改你的原模型不会自动更新cache和RIB文件,点击Update Archive就好。

界面编辑的时候,为了节省内存和显存,采用边框显示是非常明智的。

 

TD在设计pipeline的时候,不妨只让灯光师在原来的scene上只加载这些GPU cache和RIB文件,资产组的成员只要不断更新资产就好了。

这里要特别提醒一下,即便没有了 .abc文件,只要有RIB文件,渲染器依然是可以渲染出正确的图像的,GPU cache更多的是为了显示模型。

 

更新选项中,可以选择不导出GPU cache,或者只更新RIB的shading,这在模型资产很重的时候非常重要。

现在我们再谈谈
实例化

 

选择已经 Archive 好的节点, 在 Edit 中选择实例化复制


可以看到,新的Archive节点连接到了原来cache节点上,如果你对一个实体Group进行实例化,那么你还可以给每个新增的实例Group下的几何体添加新的shading

实例化可以大大节省计算机的资源。


有的时候,多层级的节点被实例化后,不能单独修改其中某个实例的shading,这个时候,你要在RenderMan的渲染设置中取消勾选Enable Object Instancing,这样,你就可以覆盖这些材质了,同时不会破坏Maya的实例。

对于一些更加复杂的实例化,比如草地,我们可能要采取一些巧妙的方法,先用nParticle Tool创建一些
粒子

 

然后我们创建要被实例化的几何体,选择几何体,shift+选创建好的粒子,再点击Instancer工具,就可以完成粒子实例化了。

<上一篇:大触教程 | 从最简单入手RenderMan 下一篇:大触教程 | RenderMan-渲染前的准备(第三讲)>

活动推荐

联系客服