三维动画教案

Arnold for Maya基础讲解

2018-12-01  本文已影响797人  shimmery

1. 介绍Arnold

Arnold是新一代的高级渲染器,从Maya 2017开始取代了Mental Ray成为Maya内置的高级渲染器。Arnold号称“基于物理”,在使用上比之前的Mental Ray要简单很多,精度要求不高的话,渲染速度也比较快。按照官方的说法,它其实是在一定程度上牺牲了速度来换取易用性,但新手其实用什么渲染器都很慢,所以也就感觉不出什么“慢”来。

正常情况下,Maya 2017及以上版本打开就自动激活Arnold了,但如果没有自动激活,则请自行去插件管理器中寻找mtoa.mll,手动加载并确保“自动加载”被勾选。

注意:Maya 2017自带的Arnold渲染器比较老,建议自行安装较新版本的Arnold或者直接使用最新版本的Maya。

本文基于Maya 2018.4撰写,且大部分基于英文版界面,不喜请见谅。

本文有很多内容和练习是基于B站教程(https://www.bilibili.com/video/av22364654),不过B站这个也是搬运的Mograph英文教程,且机翻质量相当感人,所以也就不在这里做版权申明了。另外,很多示范场景的源文件都可以在Arnold官网

1.1 Arnold for Maya的界面元素:

Arnold for Maya在界面上会引入如下几种变化:

首先会才在菜单栏出现Arnold菜单,有关Arnold的各种选项都集中在这里。通过About可以查看当前版本。

然后在渲染设置里面会出现Arnold Renderer选项,以便选择Arnold渲染器,之后渲染设置的面板会变为Arnold的相关渲染设置。

细心的同学也许会发现,切换成Arnold Renderer之后,默认的文件输出格式就变成了.exr格式。Arnold的工作流程都是基于线性色彩空间的,也就是说,它能够读取高动态色彩范围图片(比如HDRI天空),也默认输出高动态色彩范围图片。

Hypershade窗口中出现Arnold相关节点(材质、灯光、贴图灯)可供选择,材质查看器的预览模式也可以从改为“Arnold”方式了。

渲染窗口多出了专门的Arnold RenderView,这是比默认渲染视窗更好用更高级的一个渲染视窗,我个人非常喜欢。

另外,从2018开始,工作视图也可以切换成Arnold模式。本质上,相当于将工作视图变成了一个渲染视窗,可以直接进行IPR渲染。电脑不太好的同学就不要尝试了。

最后,很多Maya自带节点(比如灯光,模型等)都多出了Arnold属性栏,便于设置相关参数以便Arnold渲染器识别这些节点并将其转换成Arnold模式。

总的来说,使用Arnold渲染器在界面上的改变并不是特别严重,对Maya渲染有基本了解的同学应该可以很快适应并迅速上手。

想要提醒大家的是,既然选择使用Arnold渲染器,就需要将整个工作流程都转移过来。也就是说:尽量使用Arnold灯光、Arnold材质、Arnold节点、Arnold属性栏设置等等来进行工作,不要用着Arnold渲染器,却依旧使用Maya的Lambert或Blinn材质。


2. Arnold的渲染原理

Arnold渲染器是完全基于光线追踪的。

这张图解释得非常清楚:

对于最终渲染画面的每一个像素点,都由摄影机向场景发出N条射线,来获得场景中对应物体的光照信息。然后这每条射线又根据场景模型的材质特性而散射出n条次级射线,来获取相关材质特性所带来的次级光照信息,最终这些所有的信息返回给渲染器,计算出各种render pass,并合成成最终图像结果(Beauty)。

2.1 采样(Sampling)

决定需要计算多少根射线及其返回的光照信息的,就是所谓的“采样值”。大部分的采样参数都在渲染设置的Sampling一栏中进行调节:

采样的精度决定图像照明效果的精度。简单来说,采样不够就会有“噪点”,要想消除噪点,就必须提高采样值(也就是有更多的射线来进行探测采样)。当然,采样值越高,渲染时间就会越长。

在渲染设置Sampling栏的这些参数中,Camera (AA)决定每一个像素点将对应多少根主射线,Camera (AA) = 3相当于从每一个像素点会发出9条主射线(3×3)。

后面的5个参数(DiffuseSpecularTransmissionSSSVolume Indirect)分别决定漫反射、高光、透明、次表面散射及体积(雾)这五种不同的材质表现所对应每一根主射线的次级射线数量,因此,在Camera (AA) = 3时,Diffuse = 2相当于一共有36条射线来检测这个点的间接漫反射光照效果(3×3×2×2)。

要注意的是,这5个次级取样参数所对应的射线,探测的是对应的间接(Indirect)照明效果,而实际的最终照明效果其实是直接(Direct)照明效果和间接(Indirect)照明效果之和。比如一个漫反射照明效果实际上是光源对材质表面的直接光照加上环境对材质表面的间接光照共同作用的结果,修改Diffuse采样值并不会对直接光照的那部分产生任何影响。

由于最终的射线总数与这些参数的关系是“指数式”的,稍有不慎就会产生极大数量的探测光线,拖慢渲染时间却不一定能改善渲染质量。因此我们要充分了解各个参数的作用范围,准确分析图像噪点的真实来源,并合理提高这些参数值,以达到最优化的渲染结果。

注意:我们通常都不会完全依靠Camera (AA)来提升图像质量,因为它对渲染时间的影响非常大。

2.1.1 灯光的采样参数

初学者很容易忽视的一个地方是Arnold的灯光也都有自己的采样参数。在Arnold中,灯光产生柔和阴影的原理也是基于光线追踪的,灯光的Sample值越大,其用于计算阴影的射线就越多,阴影的噪点就越少。

简单来说,面积越大的光源需要越大的灯光Sample值,越模糊的阴影也需要越大的灯光Sample。

Maya自带灯光的Sample在其Arnold属性栏中可以设置。

初学者常常将阴影噪点误认为是漫反射噪点,或试图通过提高渲染设置中的Sample值来消除其实是灯光阴影所产生噪点,而且他们会发现,提高Camera (AA)值似乎可以改善这些噪点区域,其实这是错误的。

提高Camera (AA)确实能够改善阴影噪点,但这是因为灯光Sample依然是次级属性,Camera (AA) = 3且Sample = 4相当于3×3×4×4 = 144根,提高Camera (AA)值当然可以消除一部分阴影噪点,但比起直接提高灯光Sample来,就浪费太多了。

2.2 采样深度(Ray Depth)

Sample值控制射线的数量,Ray Depth值控制各类射线在场景物体间反弹的次数。Ray Depth也在Render Setting里设置。

对于漫反射(Diffuse)来说,Ray Depth值越大,间接照明(全局光照)的细节越丰富,场景也会稍亮一些,1代表光线仅做一次反弹,对于高度依赖间接照明的环境,明显是不够的。但很高的Diffuse Ray Depth也没什么用,一般超过3就基本看不到效果了。

对于高光(Specular)来说,Ray Depth值越大,反射就越正确。1代表在反射中仅能看到漫反射,2代表可以看到反射中的反射,3代表可以在A的反射中看到B物体所反射的A。

对于折射(transmission)来说,Ray Depth值越大,背面的光线能够透过的透明物体“层数”就越多。要准确表现一个玻璃杯的折射效果,Transmission Ray Depth至少需要4(2层玻璃共4个表面),2个玻璃杯就是8,以此类推。

Total值控制一根射线所能进行反弹的总次数,要透过玻璃杯看到背面墙壁所受到到间接光照,则需要至少1 + 4 = 5的Total值。

Transparency Depth针对的是半透明(无折射效果)可见层数。做此限定主要是防止过多的透明贴图拖慢场景渲染时间(比如用透明贴图做树叶纹理,光线穿过树叶照射到地面的过程中可能就会透过无数片叶子,计算无数次“透明”)。

注意:Ray Depth只与光照准确度有关,与图像质量无关,提高Ray Depth数值并不能减少噪点!


在Arnold中使用灯光

Arnold内置灯光

Area Light

Area Light(面积光)有三种形态:方型、圆柱型、碟型,本质上是一样的,只是在形状上有所区别。

通用属性

很多属性是所有类型的灯光都通用的:

Visibility栏中的参数决定了该灯光是否会影响各种材质表现。即:

特定属性

不同形态的面积光的具体参数都有所不同,这里只介绍一些比较重要的

Skydome Light

Skydome Light(天穹光),一个无限大的圆球以模拟天空,可以用单一颜色或者一张全景图片(最好是高动态HDR图片)作为其光照来源。

特定属性

通常天穹光都会给颜色属性贴上一张HDR贴图来模拟真实世界的天光照明效果。Maya 2018可以直接识别文件格式并自动修改色彩空间(Color Space)设置,但2017似乎就不会,所以我们要确认一下HDR(或者EXR)格式贴图文件的色彩空间是Raw,以保证该贴图被正确识别。

Mesh Light

Mesh Light(物体灯)是把一个选定的模型转换成灯光,其效果类似于直接给该模型添加自发光材质,但渲染质量会更好一些。

特定属性

Photometric Light

Photometric Light是一种特殊的灯光类型,他可以通过读取.ies文件来得到特定型号照明设备的光照形状,用来模拟该型号照明设备的真实光照表现。

.ies文件只能通过灯具生产厂家来提供。当然,我们也可以下载一些常见的.ies文件,来让我们的灯光更加真实一些,比如一些各式各类的壁灯或射灯之类。

Light Portal

Light Portal(灯光门户)是专门用来用来将天穹光传递到室内的“门户”,单独使用没有效果,但可以非常有效地改善天穹光的间接照明质量,减少噪点,属于渲染室内场景是“必用”的一种“灯”。

灯光门户的外形很像面积光,大家在使用时不要搞混了。我们也可以用面积光来取得类似灯光门户的效果,但我个人还是建议使用天穹光+灯光门户的方案来对室内场景进行照明。

Physical Sky

Physical Sky(物理天空)本质上就是一个天穹光,只不过在天穹光的颜色通道上链接了一个aiPhysicalSky节点用以替代HDR全景天空贴图。这个aiPhysicalSky可以用程序化的方式来模拟一个简单天空和太阳,其具体参数如下:

“Enable Sun”和“Disable Sun”的区别

Maya灯光

Arnold可以使用部分Maya灯光,但需要在“Arnold”栏下对灯光属性进行调节。可以看到,其中大部分的参数都是和Arnold灯光一致的,只有少部分特定属性有所区别。

注意:Arnold不支持Maya自带的体积光和环境光。

(Maya) Point Light

本质上,Point Light是被当做一个小的圆形面积光在看待。Radius值决定这个点光源究竟是多大一个“光球”。

超过0的Radius值可以使点光源形成模糊阴影,Radius越大,该点光源阴影越模糊。

(Maya) Spot Light

Maya聚光灯的Cone Angle、Penumbra Angle、Dropoff参数可以在Arnold中继续使用,以调节该聚光灯的具体形状。

(Maya) Directional Light

Arnold对Maya平行光最大的改造是通过Angle值使得平行光的光线方向变得不那么“完美地平行”了,我们可以理解成每一根平行光线都会在Angle值范围内随机偏移并多次取样,这样就可以让平行光产生真实的模糊阴影了。

注意,真实世界的阳光的光线偏移量并不是很大,不要过分增加Angle值!

Angle值大于0时,需要增加Samples以消除模糊阴影的噪点。


在Arnold中使用材质

aiStandardSurface

大部分常用表面材质表现都可以用aiStandardSurface材质球来获得。该材质球不同的属性栏分别控制不同的材质表现效果:

这些材质表现并不一定都能共同存在,比如一个完全透明(Transmission)的材质,其漫反射(Base)设置是无效。

同时,一些常见的真实世界表面材质又是多种材质表现综合作用的结果,比如瓷器表面就兼具强烈的漫反射效果和高光反射效果,车漆需要SpecularCoatThin Film共同起效,皮肤则需要同时设置BaseSpecularSubsurface等等。

材质属性

Base

Specular

Transmission

  • IOR:折射率这个属性虽然不在Transmission栏中,但却是影响光线折射的最根本的属性。
  • Roughness:反射粗糙度这个属性同样会影响折射的效果,比如我们常见的“毛玻璃”效果就是玻璃表面的粗糙造成的
Dispersion Abbe = 0 和 Dispersion Abbe = 10 的区别

SubSurface

同样的散射颜色和散射半径下,Scale值为1和Scale值为10所产生的的不同SSS效果比较

Coat

这种材质效果模拟一层几乎没有厚度的“透明涂层”,相当于为材质表面多添加一层反光效果。通常可以用它来创建汽车喷漆的效果,但因为Arnold已经有专门的汽车喷漆材质了,所以现在Coat用得不是特别多。但还是可以在一些特殊用途中使用Coat效果,比如皮肤上有水的效果,下雨时各种材质表面的“湿”的效果等等。

Emission

Thin Film

这种材质效果模拟一层“薄膜”,可以被应用在其他表面材质类型之上。Thin Film与Coat不同,它有非常复杂的光学效果,不同厚度的薄膜可以呈现出非常不同的色彩

Thickness分别为50/100/150/300/500时的Thin Film材质效果

更多实例图片可以参考官方文档页面:https://docs.arnoldrenderer.com/display/A5AFMUG/Thin+Film

真实世界的“薄膜”的厚度其实是不均匀的,我们可以用aiNoise节点配合Remap节点制造一个厚度不均匀的Thin Film效果。

Geometry

Matte


附加内容

Substance + Arnold工作流程:

Substance正在逐渐变成业界标准,它并不是特制某一个或几个特别牛掰、效果特别好的软件,而是一种跨越了软件的理念。

这一理念在材质方面的体现就是所谓的Physically Based Rendering(PBR,基于物理真实的渲染),简单地说就是必须有颜色(diffuse)、高光(specular)、法线(normal)三张贴图才能构成真实感材质。

这一理念在制作流程上的体现就是所谓的将材质贴图的制作流程与具体应用软件(比如Maya、Unity等)完全分离。材质就是材质,贴图就是贴图,在Substance Designer或Substance Painter制作的材质也好,贴图也好,都可以在所有应用软件中呈现一致的渲染效果,而无需根据具体应用软件而做出具体调整。

Substance for Maya

对于Maya,首先我们需要安装最新的“Substance for Maya”插件(官网下载链接) ,并确保它在Maya中被正确加载。

然后我们就在Hypershader中添加substance贴图节点,并指定我们需要载入的.sbsar材质文件。

image.png

这里需要将Workflow设置为Custom,才能刷新出可供使用的贴图列表,否则默认设置的是“StingreyPBS”,而我们又没有安装Stringrey插件,不能正确识别。

正确识别材质文件之后,我们就可以通过Substance Parameters来修改该材质的自定义参数,或者修改“Width”参数以设置我们所需要的贴图分辨率,最后点击具体需要输出贴图的pass(比如Diffuse),就可以到正确链接的贴图文件节点。

可以看到默认设置下该贴图文件节点是通过载入临时文件夹里的一张.jpg图片来实现贴图调用的,我们可以修改Automatic Baking栏的参数来修改:

比如我们可以让输出格式变成.png,并将贴图目录改成我们的工程目录的sourceimages文件夹。点击Reload按钮,所有的材质文件节点就都更新了。

接下来我们就可以像操作普通文件贴图一样来使用Substance材质所输出的贴图文件,比如将其链接给Arnold的aiStandardSurface材质球的对应通道中。

同时我们还可以随时修改该Substance材质的配置参数或输出分辨率来对输出结果做出调整。即便在Substance Designer中对材质进行了修改,也仅需要重新载入一下该材质,一切也都会得到更新。

可惜的是,目前该插件仅支持.sbsar文件类型,并不支持.spsm文件(也就是Substance Painter的默认格式)。对于在Substance Painter中绘制好的贴图,依然需要用户手动输出成Arnold规范的贴图文件,并手动在Maya中载入使用。当然,Substance Painter的贴图调用比起Substance Designer来说要简单很多了。

关于Substance材质的输出贴图与Arnold材质属性之间的对应关系可以参看官方支持页面:https://support.allegorithmic.com/documentation/integrations/arnold-5-for-maya-157352171.html


后记

其实最权威的基础介绍应该官方文档说明(地址)。Arnold难能可贵的是竟然提供了中文版的官方文档,仅需点击网页中的“对于中文翻译,请点击此处”即可。这么贴心的官方文档,不看真的是浪费了啊!

虽然读文档确实是一件很考验人毅力的事情,但碰到问题时的第一反应真的应该是去查看官方文档,而不是问百度

这一篇文章写得虽然是“基础讲解”,但其实并不是真的在告诉读者“怎么用Arnold”,而是在告诉读者“Arnold究竟是怎么回事”。个人认为,在Arnold中自行摸索挣扎过一段时间的读者可能要比完全的新手小白要更有收获一些吧。


上一篇下一篇

猜你喜欢

热点阅读