大触教程 | RenderMan材质实例牛奶与饼干(第五讲)

发布日期: 2018-03-26 17:06:11 阅读量:
蓝海创意云范导

大触教程 RenderMan 渲染

上节课,我们简单介绍了RenderMan材质的基本参数,今天我们根据一个牛奶与饼干的实例,来具体认识用RenderMan制作材质的基本思路

 



关于建模和贴图

牛奶的气泡和饼干主要是Zbrush雕刻的,饼干的粉末是Houdini制作的,原文有简要介绍过,贴图是在Mari中完成的,因为我们课程主要还是学习RenderMan,所以具体的建模和贴图过程我们不做深入探讨。
 

关于灯光

灯光要注意的一点就是用PxrDomeLight创建环境光,创造令人信服的的环境反射,学过摄影的朋友也肯定会明白柔光盒的作用,这些都是重要的补光。

 



关于材质

我们主要来看下材质的制作,打开文件,我们先从饼干开始,打开Hypershade,找到cookieSurface这个材质。
 

 

制作一个材质,首先要处理的是Color。RenderMan除了毛发材质PxrMarschnerHair,只有一个PxrSurface。对于Color,我们要考虑是否存在Subsurface(次表面)的情况,次表面散射简称3S(Subsurface Scattering),是光射入非金属材质后在内部发生散射,最后射出物体并进入视野中产生的现象,是指光从表面进入物体经过内部散射,然后又通过物体表面的其他顶点出射的光线传递过程。也就是说,大部分材质都会有次表面的现象,我们可以反复测试达到我们满意的效果。

 

 

我们用PxrTexture这个pattern来存储Color贴图,将Result RGB的值传递给coolieSurface的Diffuse Color和Subsurface Color。

由于现在的CG制作级别越来越高,UDIM(多象限贴图)被广泛采用,在PxrTexture中,支持Mudbox、Zbrush和Mari三种象限模式,在制作好贴图后,我们做好命名规范,在PxrTexture中选择对应的选项就可以正确读取了。

 

 

处理完Color信息后,我们要处理高光信息,我们要知道,物体的表面哪些地方高光强度比较强,那些地方的高光更加柔和或者锐利。

 

 

 

可以看到,控制高光强度的是Face Color参数,可以直接读取PxrRemap的Color信息,PxrRemap更像是PS中的色阶工具,可以对Color信息进行调整,由于Roughness参数值只有0-1,所以我们找RGB中的一个颜色信息给到它就可以了,其中黑-1,白-0,根据之前讲过的内容,Roughness的值越小,高光越锐利。

 

颜色和高光都解决了,接下来还有哪些材质细节是我们需要制作的呢?Bump效果是体现细节的重要组成,我们找到Globals参数。

 

 

 

PxrBump可以连接到Diffuse和Specular的Bump接口上,不过RenderMan给了我们Globals的接口,以后在没有特别区分某种Bump效果的时候,我们都可以在Globals中创建凹凸效果。

 

最后我们要制作的效果是置换,首先我们在DCC(三维数字工具)中生成置换贴图,这里保存成EXR格式。

 

 

 

这里要注意的是,RenderMan会把贴图转换成.tex格式,这样可以更加高效地进行LOD调用,LOD技术即Levels of Detail的简称,意为多细节层次。LOD技术是指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。

接下来我们要看看牛奶本身的材质制作

我们找到milkSurface这个材质。

 

 

这里用的是Burley Normalized模式的次表面模型,RenderMan给我们提供了多种次表面模型,想要准确地描述每种模型的特点是蛮困难的事情,这里我给大家截一张图,以后在制作材质的时候可以通过各风格的对比来选择自己认为合适的次表面模型。

 

 

场景中最复杂的材质要属瓶子了,也是我们最后要介绍的材质。我们找到bottleSurface,我们发现他是一个层材质,这里为什么要使用层材质呢?

 

 

比如我们看下面这个实例,铜像的外面有一层青绿色的油漆,但是时间久了,不少油漆都剥落了,因此你需要多层次的材质去表现,才会有更好的效果。

 

 

当我们创建一个PxrLayerSurface的时候,他看起来是这样的:

 

 

如果你觉得层还不够的话,还可以继续添加新的材质,我们来看下bottleSurface都有哪些内容。

 

 

在基础层,我们有一个Bump的效果需要制作,这个Bump节点同时连接了全局、Diffuse和Specular的三个Bump接口,并且这是一张Normal的贴图。

 

 

这个Normal贴图用来制作瓶子的标签效果,所以我们这里用到的是PxrNormalMap节点,用于正确读取空间信息。
 

 

瓶子的瓶壁上有一些牛奶污迹,所以在Diffuse Color上我们做了一张颜色贴图。
 

 

然后是高光的强度,我们看到,高光强度贴图也给到了Glass参数的Reflection Gain上,作为玻璃的反射率信息。

 

 

 

对于玻璃的表面,如果粗糙的地方,那么不管是折射还是反射,应该都会受到影响,所以这里是统一的Roughness参数,依然遵循黑1白0的规律,有牛奶污迹的地方,值越大些,也就越粗糙些。

 

 

Refraction Color是玻璃的颜色,这个上节课我们也讲过。
 

 

最后是脏迹层,通过Mask来控制瓶子的哪个地方出现这个脏迹。

 

 

最后我们来说下PxrMatteID这个节点,我们可以通过对材质添加额外的属性,比如Matte ID属性,然后连接到PxrMatteID的Result AOV上,就可以在Render Settings中输出相应的Passes了,这个节点主要用来做最后合成的颜色ID。
 

 

 

那么今天牛奶与饼干的材质实例就讲到这里了,有兴趣的同学一定要试试自己重新制作这些材质调整下效果呀。

原作者的这篇教程是RenderMan官方教程中唯一一篇被翻译成中文的教程,在原文的底部,你也可以找到这篇文章的资产文件,点击阅读原文


也可以直接从百度云盘下载工程文件。
链接:https://pan.baidu.com/s/10NGqUrGCcp6AVy1U8-ADXw 

密码:3dx1

联系客服