【Maya】Arnold渲染器的学习(2):几何体


【前言】

构建基础的三维场景,应该包含几何体、灯光、材质、摄像机。

几何体:多边形和曲面曲线。

*通常大家所说的模型,指的是多边形几何体。

灯光:传统的照明方式分为直接光照和间接光照。arnold灯光是带有间接照明效果的,并没有mentalRay发射光子的概念。

材质:也就是着色器,它依附于几何体,赋予几何体相应的可视化效果。Arnold并不完全支持maya的内置着色器和纹理,多数情况下应使用arnold着色器和纹理(尤其是噪波纹理)。

摄像机:除了常用的透视相机之外,arnold还支持圆柱形、正交、鱼眼、球形、VR相机等。


【启用maya的arnold插件】

在maya的插件编辑器中启用了mtoa插件后,arnold的有关接口参数就会显示在maya的环境中,包括Hypershade超材质编辑器中的arnold材质,新增的arnold渲染器设置,以及每个几何体附属节点下的arnold参数。

arnold官方还在不断的改进,新版本的arnold可能会剔除某些参数,或者增加一些新的术语,因此作为maya内置渲染器,Arnold的操作方式和maya的版本有关。以下以最新maya2018.5(arnoldCore 5.2.1.0)为基础进行arnold的使用。



【几何体篇】

Arnold支持maya的polygon(多边形)和NURBS(Non-Uniform Rational B-Splines,非均匀有理B样条)曲面曲线,但不支持Subdiv(细分几何体)和BezierCurve(贝塞尔曲线)。

NURBS曲面和多边形的形状节点(shape)下的arnold属性差不多,不同的是多边形多了一个ArnoldTranslator(阿诺德转换器)属性,可以在procedural(替代对象)、polymesh(多边形网格)、mesh_light(几何体灯光)三个模式进行切换。事实上,NURBS曲面会被arnold转为多边形再进行渲染。


procedural(替代对象)模式下,指定arnold支持的外部格式替换当前几何体,例如.ass、.obj,通过简单几何体替代复杂几何体的方法,节省渲染前后资源的消耗,在制作丛林、落石堆、鸟群等复杂场景中会很有用。不过几何体的procedural功能只是临时措施,多数情况下,推荐使用arnold菜单中的createStandIn功能直接生成替代对象节点,并且指向.ass文件(因为配合.ass文件,范围框才能自动匹配原模型的外轮廓大小)。下面通过三个场景的渲染进行资源消耗对比:
*场景:100个模型总计540万三角面。
【StandIn替代对象】

Maya文件:149K

.ass文件(包含arnold材质):4.09M

maya内存占用:615M

渲染时arnold内存占用:1059M

渲染用时:41s

【实例复制模型】

Maya文件:4.89M

.obj文件:9.68M

maya内存占用:1195M

渲染时arnold内存占用:1628M

渲染用时:45s

【普通复制模型】

Maya文件:478M

.obj文件:9.68M

maya内存占用:2735M

渲染时arnold内存占用:10M

渲染用时:49s

对比可以发现,无论是文件的存储空间还是内存的占用量,arnoldStandIn功能都能带来很不错的优化。除此之外,【StandIn替代对象】和【实例复制模型】所占用的显卡显存是差不多的,而【普通复制模型】会增加400M左右的显存占用。


polymesh是默认设置,可启用arnold针对多边形的特殊设置,例如导出运动向量、细分、置换、体积等。

默认Opaque属性是勾选开启的,表示几何体是不透明物体,arnold在渲染时候会使用针对不透明物体的算法加速渲染进程。当物体使用带透明信息的材质,关闭opaque选项才能得到正确的光线透射效果。当然,如果对投射效果需求不高,对透明几何体开启opaque也是提升场景渲染速度的一种方法。

这是使用了蓝色玻璃材质的玩具四驱车模型,对比开启和关闭opaque的渲染结果:

Subdivision细分是在渲染时对模型进行圆滑处理的功能,除了省下我们对模型进行的smooth圆滑操作,还能节省显卡资源的开销。

细分有两种方式:Catclark和Linear。Catclark是最常用的方式,因为会圆滑转角的过渡,所以用户需要先对模型完成转角的布线操作,避免圆滑后的过大形变。注意:细分迭代次数(Iterations)至少为1,才能应用细分效果。

如果将AdaptativeError(自适应误差)的值设置大于0,将启用AdaptiveMetric(自适应度量标准)功能。默认AdaptiveMetric是Auto(自动),这个设置会根据模型是否应用置换贴图,来判断是使用flatness还是edge_length。如果模型没有使用置换贴图,Auto就相当于flatness。

开启AdaptiveMetric后,arnold会尽可能的在保持模型轮廓的情况下降低面数。AdaptativeError值越接近0,模型还原度越高,面数也越高。


Mesh_light是将几何体当作光源来看待,相对材质的自发光对环境的影响,几何体灯光能降低画面噪点的产生。不过通常创建几何体灯光,使用的是arnold菜单的Lights->MeshLight,ArnoldTranslator选项中的Mesh_light会在未来的版本中被移除


虽然Arnold不支持贝塞尔曲线,不过渲染时Arnold会将它转为NURBS曲线,使用默认设置进行线条渲染。为了使用更多参数设置,通常我们会将贝塞尔曲线转为NURBS曲线。

勾选NURBS曲线形状节点下的RenderCurve,可以设置线条的宽度和色彩(包括赋予材质)。

和maya内置的paintEffect线框不同,arnold将NURBS曲线作为实体进行渲染,NURBS曲线会受到光线影响,同时也会影响场景其他物体。
*paintEffect是在场景渲染完成后才加入的平面图形。

曲线arnold栏下的Visibility有个名称为mode(模式)的下拉菜单,默认的ribbon(带状)表示将NURBS曲线当作是一个有宽度无厚度,始终面对摄像机平面的带子。这是渲染速度最快的方式,常用于纤细的毛发、草地的渲染。选择Thick(厚度),曲线将被看作是管状的多边形几何体。如果数量多且较为细小,选择Thick的方式会出现抗锯齿处理上的问题。oriented(定向),渲染效果和ribbon相似,但不和摄像机平面保持平行,更适合较大宽度带状的物体效果。

下图使用ribbon的模式,将曲线渲染出发丝的效果:


Arnold支持maya的旧粒子、nParticle(内核粒子)、fluid(流体)、bifrost、hair(头发)、xgen等特效系统的渲染。因为arnold采用的照明计算方式不同于maya的software软件渲染器或者mentalRay渲染器,所以software和mentalRay渲染的结果不应作为参考,arnold渲染特效既有优势也有限制。有关特效渲染内容会在后续章节提到。

你也可能喜欢阅读这些文章:

0 评论
Inline Feedbacks
View all comments

Copyright© VIVICG 版权所有 粤ICP备 17111516号 粤公网安备 44011102000879