Mental ray 高效次表面散射指南.doc_第1页
Mental ray 高效次表面散射指南.doc_第2页
Mental ray 高效次表面散射指南.doc_第3页
Mental ray 高效次表面散射指南.doc_第4页
Mental ray 高效次表面散射指南.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Mental ray 高效次表面散射指南 内容目录: 1:次表面散射皮肤Shader指南1.1 介绍1.2 真实皮肤1.3 调整散射 为你想要的1.3.1 真皮散射-肉质感1.3.2 表皮-顶层1.3.3 在材质中的层级关系1.3.4 镜面反射可受度1.3.5 眼睛1.4 高级方法1.4.1 球形环境照明1.5 技术考量1.5.1 Shader 应用1.5.2 惯用的参数变量命名1.5.3 Shader 表示1.6 灵感走廊1.6.1 标准照明1.6.2 环境照明1.6.3 置换Chapter 1次表面散射皮肤Shader 指南1.1 介绍欢迎来到mental ray 高效次表面散射皮肤shader指南!在我们开始前,我们应该讲一下什么是次表面散射(略称“sss”)实际上,它看起来是如何提高表面外观上的平滑度。几乎每个人大约看得出在表面上的这种“明显”的散射效果-当光线穿过一个薄薄的半透明物体时,这个效果容易指出来看。举例图片“半透明”,正好是一个表面散射效果。但是这种效果对皮肤来说是次要的,更主要的效果集中在边缘处,例如耳朵那部分。光线大部分传播在皮肤表面最上层里。当人的视觉系统特别注意观察其他人时,这重要的表面散射效果非常困难注意到,。通常,这些效果-除非你知道如何去观察-否则你看不出其中的变化,而那些“看不到的东西”是sss效果非常容易表现出来的。1.1 入门观察这两个物体的凹凸程度软化度和一些小的构造,还有光线在阴影区域里的产生的细微变化,不同的阴影边界。左:没有使用次表面散射 右:有使用次表面散射注意到左边的物体的凹凸部分非常粗糙,还有阴影边界十分锐利。反之,在右边的物体,凹凸部分非常柔和,在阴影区域还有一些轻微的颜色混合。1.2 真实的皮肤这个例子是通过Our friend Globulous讲解真实的皮肤。这个文件可根据需要使用。你可以渲染看看。这个充分了使用了简单的基础phong材质球,并没有使用次表面散射。如果你渲染了,你就能看出,这更像是塑胶而不是人类皮肤。 Our Friend Globulous我们将取代这个材质球改为高效sss皮肤材质球。不要把烦恼在贴图上,我们将要做这些事;仅仅是用这默认材质球。然后渲染看看。 默认设置的皮肤材质 Globulous注意:如果图片结果与该图不同,检查默认数值:表皮散开范围(Epidermal scatter radius (front_sss_radius)应该是 8mm,,真皮散开范围(subdermal scatter radius(mid_sss_radius)应该是25mm, 基底层散开范围(Back scatter radius(back_sss_radius)和基底层散开深度(Back scatter depth(back_sss_depth)为25mm。这个模型使用测量单位为毫米(mm),大约300mm左右,包括它的耳朵。“但是这样并不像皮肤”你可能会这么说。不全是,我们接下来就要研究次表面散射。这高效sss shader光线散射是在确定的范围内。为此我们要改变所有不同的层级下的散开半径,然后看效果。这是一条快速检查效果的捷径。这个范围变换(Scale Conversion)参数影响其他全部的因素。因此,举个例子,如果我们设置它100,那将会是等于全部的半径都为100,处理起来十分有效高效率,让我们试试它。 左:忽略散射 右:默认散射结果是这组并排的图像,左边的图像,散射效果完全没有。比较右边的图像,有微小的不同。可以明显地看见“红耳”,你能在左边的图像上看见在脖子地方的阴影线十分的硬而且锐利,然而在右边的图像上,在阴影处有细微的颜色混合。从外观差异上来看凹凸贴图变得更加细微。散射半径变大会怎么样呢?让我们设置范围变化值为0.2 (Scale Conversion) 散射太大,散射半径太大!真的有效,让我们再加大: 非常大的散射半径看这整个头部是不是很像充满气的气球?同时注意出现了这些粒状物。这是现在的采样值(64,默认的数值)这只是散射半径太小了,我们需要增大它。所以,如果你现在有一个模型(即没有调整到现实世界尺寸)然后使用了皮肤shader,成果有这些粗的红色杂点,原因是你的散射半径值太大了。如果结果看来像硬塑胶,那是散射半径值太小了。得调整范围变化(Scale Conversion)或者其他参数值.让我们适当调整一下我们把范围变化(Scale Conversion)设置在0.5能够看到一点不同的效果。 适当的调整了散射半径范围但是仍然看起来不像是皮肤,对不对?当然是这样,但这个散射效果看起来像是蜡那样的质感。而且表面太过亮和光滑了。我们增加一些凹凸效果后再看看吧。我们添加了一个简单的杂点贴图用来做凹凸处理。看看结果: 简单的“杂点”“Nosie”凹凸注意到现在是有些像皮肤了。当然,这个皮肤有些像硅胶抑或是行星表面。然而这样处理后的确像皮肤了,感觉是凹凸效果太大了,我们接近些看看。 近距离观察现在这样是不太好,但是这说明了一点:散射填充了凹凸贴图造成的细小缝隙,产生了凹凸间的粗糙。试一下把范围变化(Scale Conversion)临时调到100,再来比对以下。散射没有了,所有的凹凸变得非常锐利,把范围变换(Scale Conversion)值调到100时看看变化。散射没有了,凹凸非常粗糙,在模型的脖子的阴影也变暗。1.3 调整你想要的散射1.3.1 真皮散射-肉质感就目前来说,我们使用了通常的设置,但是我们要寻找怎么能达到更真实的结果。做这些改变,我们将探索所有其他个别的散射选项。因此: 设置范围变换Scale Conversion (scale_conversion)值回到1.0 设置非漫射质量Unscattered diffuse weight(diffuse_weight)值为0.0 设置表皮散射质量Epidermal scatter weight(front_sss_weight)值为0.0 设置真皮散射质量Subdermal scatter weight(mid_sss_weight)值为0.0 设置基底层散射质量Back scatter weight(back_sss_weight)值为1.0 设置全面镜面反射质量Overall specular weight(overall_weight)值为0.0 去掉之前添加的杂点凹凸贴图这些调整完成后,先不看基底层散射照明带来的效果-这种肉感如果你说是次表面散射的话大多数人不会这么认为。如你所见,这个还不够完整。 仅有基底层散射效果现在设置真皮散射质量Subdermal scatter weight(min_sss_weight)值为1.0,开启真皮散射。我们把皮肤最表层下面的称为“真皮”或者“中层”,这个层起到一种红色发光的效果。你现在可以渲染出来观察一下: 真皮散射为默认值25mm这个是散射半径默认值25mm的结果,我们看到一片橙色略带红色的漫射区域(耳朵边缘的半透明效果过强)同时注意鼻子的阴影有些不清晰。现在我们改变真皮散射半径Subdermal scatter radius(mid_sss_radius)和基底层散射半径Back scatter radius(back_sss_radius)和基底层散射深度Back scatter depth(back_sss_depth)值为15: 真皮半径为15这样一来阴影区域的不清晰变小了,然后把照明调整成普通漫射的状态。然而,我们需要一种明显的散射效果,因此我们更改为35mm: 真皮和基底层散射半径/深度值为35mm伸出一个拇指,你应该能想象到在真皮层下有大块的红色凝状物的斑点。如果看来是这样,那你的思路是正确的。(实际上想象这种凝状物是很容易的,如果你想到了高光层的话,我们稍候会说的。我们整理一下结果,然后前进到表皮层1.3.2 表皮 最上层 皮肤不是一种单纯的物质,而是有几种独特的层叠加在一起的。这最上层是皮肤构造中称为表皮的,设置下表皮散射质量Epidermal scatter weight(front_sss_weight)变量。默认颜色是微黄色,修改以下参数: 设置表皮散射质量Epidermal scatter weight(front_sss_weight)值为1.0 设置表皮散射半径Epidermal scatter radius(front_sss_radius)值为16.0 设置真皮散射质量Subdermal scatter weight(mid_sss_weight)值为0.0 设置基底层散射质量Back scatter weight(back_sss_weight)值为0.0让我们看看得到了什么: 表皮散射半径为16让我们试试更小的半径;设置表皮散射半径Epidermal scatter radius(front_sss_radius)值为5 表皮散射半径为55mm对表皮半径来说太小了。我们看见许多颗粒分布(那个能通过光线贴图和使用更多的采样值来处理)但是更重要的是我们没有看到真正的散射发生。观察鼻子部分的阴影,明显的密集,还有这小的散射半径产生的效果不同与默认漫射照明。我们想要在阴影处产生细微的颜色混合,因此我们调高些凹凸 调整散射半径为8时我们调到了8,这默认数值,哪一个效果更好。以一个拇指来说,我们能假定在表皮层能看到淡淡的类似蜡状物的物体在上面。1.3.3 层与材质间的关系现在,我们在哪里能够添加材质?这有太多可以选择的地方了!这个回答是可信的。但是对于脸部来说,把你的标准的面部材质放在非漫射颜色Unscattered diffuse color(diffuse_color)与表皮散射颜色Epidermal scatter color(front_sss_color)上,除了这些以外,最好不要在真皮散射颜色Subdermal scatter color(mid_sss_color)上添加。还有一个选择是在全面漫射颜色Overall diffuse color(overall_color)上添加贴图,不过这可能会有一些问题。要是你的贴图有一黑色区域,不发生任何散射,因为任何颜色叠加在黑色上那它仍然是黑色。材质能在皮肤shader的每一个层上使用,并且连半径和质量都可以。但是我们需要一个测试渲染来试验。在非漫射颜色Unscatter diffuse color(diffuse_color)和表皮散射颜色Epidermal scatter color(front_sss_color)上添加贴图文件Globulous-texture.jpg现在我们设置非漫射质量Unscattered diffuse weight(diffuse_weight)和表皮散射质量Epidermal scatter weight(front_sss_weight)值为0.5(a 50/50mix)我们得到这个: 在2个层上有材质“但是他很灰暗”你会这么说。是的,他的确是这样。皮肤并不是真实的皮肤颜色-皮肤(大部分)颜色是白色。皮肤颜色在根本上大体上是略带红色的散射。因此建议在你的皮肤贴图时要有恰当趋光的粉红色。注意灰色范围。看看这个,有些可怕,这个渲染结果里真皮没有任何散射,看起来像一个尸体。(至少让人觉得不舒服)这时,你该调整真皮和基底层散射,把真皮散射质量Subdermal scatter weight(mid_sss_weight)和基底层散射质量Back scatter weight(back_sss_weight)值调整为0.5。(为了模型表面受光线照射成微红色,和彻底照明耳朵的效果)你能看到脸部有血色,然后你得到这个: 调整后的真皮散射结果现在我们快要成功了!但是这个还是缺少些细节。让我们应用下凹凸贴图。应用globulous-bump.jpg文件为凹凸贴图。我们现在有了凹凸,这个凹凸贴图的调整决定皮肤半透明是否有很好的效果。好的凹凸效果取决于你的颜色贴图的设置。但是全面的来说,你需要调节非漫射质量Unscattered diffuse weight(diffuse_weight)和表皮散射质量Epidermal scatter weight(front_sss_weight)直到你满意为止。但是不要过分。让我们看看仅使用非漫射会有什么效果。设置非漫射质量Unscattered diffuse weight(diffuse_weight)值为1.0和表皮散射质量Epidermal scatter weight(front_sss_weight)值为0.0: 仅有非漫射的皮肤凹凸这个看起来非常的粗糙而且不真实!因此让我们调整成看起来不错的吧。根据我们做的例子,我们调节默认值50/50mix,设置漫反射质量Unscattered diffuse weight(diffuse_weight)和表皮散射质量Epidermal scatter weight(front_sss_weight)值为0.5 这个级别的皮肤的凹凸效果正好1.3.4 恰当的镜面反射还是缺点什么我们要想起以前做的某部分“Oh yeah,我们把全面镜面反射质量调整到最初期了”迅速的把它调整到1.0看看: 默认的皮肤镜面反射这效果是不错,但有一点不和谐(有一些奇怪,这个有一点略带青色的默认镜面反射颜色。(而且还需要给皮肤补充些淡红色)镜面反射总是看起来不错,当它破坏了一点映射时,我们就需要一个镜面反射贴图赋予这个模型,因此我们读取它。 使用了镜面反射贴图后这样看起来好多了,现在我们尝试试用其他不同的镜面反射层。保持默认,开启两个层。一(#1,初级的)主要强调加强边缘柔和镜面反射强度,然后第二(#2次级)大量减小镜面反射的细节闪光。让我们设置镜面反射质量#2(次级_质量)Specular Weight#2 (secondary_weight)值为1.0 然后测试下: 汗滴效果这种非常好的闪光效果造成了出汗的效果!好的,但是我们得擦干这些汗。回到上一步,然后来试试其他不同的镜面反射设置。一个很好的老法子,“小与大”那让我们试试这是什么意思: 修改后的镜面反射但是这样不够逼真;显然,他在一个蓝色的空间里。好的,至少这个背景是蓝色的!因此,我们给皮肤一点适当的反射。这个皮肤shader完全支持光线跟踪反射。缺点是计算时间很长(计算反射次数成倍增加)。因此我们要使用一个窍门来避免这些。设置反射质量Reflection Weight(reflection_weight)值为0.1还有反射边缘质量Reflection Edge Weight(reflection_edge_weight)值为1.0(皮肤的大部分可见反射来自侧边,比迎面部分的要多要知道对于人来说那里是影响频率剧烈。我们称这个为“增强边缘”)现在打开仅反射环境Only reflect environment (reflect_environment_only).这个能节省我们不少宝贵的渲染时间(因为这样光线跟踪反射可以替代或跳过抽象的环境反射)然后我们得到了这个: 左:使用了环境反射(反射来自蓝色背景) 右:没有反射微妙-我们把上次的图片和这次的图片并排放在一起来看微妙之处。看鼻子和脸颊的边缘处,发亮处颜色比较接近环境色。我们激活仅反射环境Only reflect environment(reflect_environment_onley)然后选择真实光线跟踪。看看有什么不同?让我们来分析下不同;把它关掉: 左:使用了真实光线跟踪 右:仅反射环境这次的差异比上次并排的结果来更加微妙。右边的图像在嘴唇部分有些不太真实的反射了蓝色的背景,论逼真,这个已经不算了。左边的图像,鼻子边缘的地方以反射皮肤颜色代替了蓝色的背景。关闭仅反射环境Only reflect environment(reflect_environment_only)真实表现,大量的取样光线反射计算产生。这能大量增加整个场景的计算。渲染时间恰当的时间应该是30秒,左边的图像用时是1分35秒。有一点可以确定,根据不同的用途,有时可以不开启光线跟踪反射。在接下来的指南中让我们迫不及待的再次设置仅反射环境Only reflect environment(reflect_environment_only)1.3.5 设置眼睛 现在,在眼睛上还有一些问题需要处理下。我们有了一个很不错的皮肤,但是眼睛让人觉得有些恐怖。有趣的是,眼睛有很多它独有的次表面散射选项。我们来试验下。(这里有一句译者的题外话:刚才提到的指南中的渲染时间,大家请忽视那一段,这篇文章的作者用的计算机配置是3.06 GHz P4 CPU以及1Gb RAM,大家在试验时的时间肯定不是这个时间,如果比这个还快请告诉我你的时间)眼睛的材质是一个misss_fast_skin_phen(我们使用这个“皮肤”比miss_fast_simple_phen是因为它有更多的特性)这些是: 全面漫射颜色Overall diffuse color(overall_color)使用eye_tex.jpg贴图 设置非漫射颜色Unscattered diffuse color(diffuse_color),表皮散射颜色Epidermal scatter color(front_sss_color)和真皮散射颜色Subdermal scatter color(mid_sss_color)改变颜色为白色 设置非漫射质量Unscattered diffuse weight(diffuse_weight)值为0.2 设置表皮散射质量Epidermal scatter weight(front_sss_weight)值为0.6 设置表皮散射半径Epidermal scatter radius(front_sss_radius)值为10 设置真皮散射质量Subdermal scatter weight(mid_sss_weight)值为0.8 设置真皮散射半径Subdermal scatter radius(mid_sss_radius)值为20 设置反射质量Reflection Weight(reflection_weight)值为0.1 设置边缘反射质量Reflection Edge Weight(reflection_edge_weight)值为1.0 设置仅反射环境Only reflect environment(reflect_environment_only)状态为打开 设置反射发亮角 Reflection Shinyness(reflection_shinyness)值为0.0离开散射和光照贴图设置栏-这个方法(在那之前我们要保存下来)可以使光线照射眼睛使它产生散射效果,在这个场合中生成一个特写。让我们试验下: 眼睛处的次表面散射好的,现在看起来漂亮多了。就这一点来说这个结果已经很好了。那为何我们不试试在其他角度的效果呢? 其他角度的效果 同样是另一种角度的效果好的,测试结果很真实了,在不同的光照条件下效果怎么样呢?试试移动灯光还有其他灯光类型所产生的效果。 没有改变任何材质参数1.4 高级技巧1.4.1 球形环境照明到现在为止,我们已经试过了传统照明方式。我们想使用HDRI环境照明该怎么做呢?有很多种方式可行。我们来试试“最终聚集”首先,删除或关掉所有场景中的灯光(2个点光源和一个聚光灯)打开最终聚集Final gathering然后照以下所示正确设置参数。 设置取样数为1000(number of samples)(数值很大) 最大半径为10(maximum radius) 最小半径为5(minimum radius)我们故意错误的这么做。把“皮肤”和“眼睛”两个材质的散射间接照明Scatter indirectillumination的参数关掉,然后渲染一下: 嘿,这个看起来很怪,对不对?有些东西搞错了,这个看起来全都是灰色!发生什么了?回答是因为把散射间接照明Scatter indirect illumination关掉了,皮肤shader没有散射间接照明引起的。在大多数情形中,间接照明不是充足的,并且会在视觉上表现得不真实。以往我们使用聚集灯光定位照明会造成大量计算,同样为了保留渲染时间我们设置散射间接照明Scatter indirect illumination (indirect)为关闭但是我们仅能使用间接照明,准确地说是想使用散射。为了“皮肤”和“眼睛”材质把散射间接照明Scatter indirect illumination (indirect)选项打开 现在好多了!啊,现在这个皮肤恢复颜色了!我们看看如果用什么有趣的东西代替来灯光照明造成的偏蓝色。读取livingroom.hdr然后应用在球形环境贴图中。 HDRI 环境照明到这里皮肤shder的指南就结束了,希望这个能让您愉快1.5 技术考量1.5.1 shader应用这个皮肤shader是一个最近才出现的高级节点并且与大多数的mental ray高级节点一样能自动生成光照贴图,独立的参数,并且有由多个特性组成的sub-shader设置。可以简单的使用,材质主要靠 miss_fast_skin_phen来表现,无论设置哪一个参数都可以自动的表现出来。作为一个材质可以接受全部的材质并且能表现出来(曲面shader,阴影shader,光子shader,光照图shader,置换shader)surface shader,shadow shader.photon shader,lightmap shader,displacement shader不同的OEM操作会有不同的现象。在某些情况下可以充分的使用不同的应用来完成效果。在这个例子中,应用细节表现现象,经常有两个不同的现象,一个使用surface shader,然后另一个使用lightmap shader.在大多数例子中,一个需要用编译来添加光照贴图。根据这个前提,你需要精确的文件来处理应用在物体上的材质。1.5.2 参数,names和useage不同的OEM一体化的是mental ray显示更多友好的用户参数面板。在文件中names是以暗示显示的。现在的shader参数是出现在参数的声明文件下的。在一个场景中显示的不同的对话窗;要考虑你的细节表现文件。这些现象是使用构成组导入合理的参数在合乎逻辑的组中。那些自动构成的组经过不同的OEM与mental ray一体化。这些组是“d”等于“diffuse”,“s”等于“specular”和“a”等于“advanced”。这些材质表现在它们要立即应用在一个物体上使用一个材质的声明。在mental ray的一个单独文件(mi file),能够看见以下(代码片断): link subsurface.so$include shader myskin misss_fast_skin_phen (d diffuse_weight 0.3,front_sss_color 0.8 0.5 0.3,front_sss_radius 0.5,front_sss_weight 0.8,s primary_spec_color 0.4 0.4 0.9)object myMesh.end objectinstance myObjectmyMeshmaterial myskin.end instance1.5.3 shader声明这个是miss_fast_skin_phen的subsurface.mi声明: material misss_fast_skin_phen (color texture lightmap,color texture depthmap,string lightmap_group,scalar lightmap_size,integer samples,shader bump,struct d color ambient,color overall_color,color diffuse_color,scalar diffuse_weight,color front_sss_color,scalar front_sss_weight,scalar front_sss_radius,color mid_sss_color,sca

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论