把“材质种类”这四个字写进笔记的第三年我才承认自己一直在背一本用不起来的字典。Lambert、Blinn、Phong、Phong E、Anisotropic单独拎出来每个都眼熟一放进材质编辑器就全变天书。后来我把同一个球翻来覆去换材质又关掉所有贴图只留颜色才慢慢摸到一条规律Maya里的材质种类本质上是不同年代的渲染思路在同一款软件里留下的遗产。这篇笔记不打算把每个材质都写成操作手册只想用咸鱼的视角说清楚两件事——材质们到底在调什么以及换到现代渲染器之后我们还需要记住哪些。1. 先别急着记名字把材质理解成表面的“性格”材质这个东西说玄也玄说简单也简单。它本质上是一堆属性的集合用来描述表面怎么反射光、怎么吸收光、怎么把光散射出去。同样是灯照过来纸张看起来是平的、柔的钢板看起来是亮的、利的差异全在表面微观结构。材质种类就是预置好的几套“性格模板”让你不用从零搭参数直接拿一套符合需求的起点改。1.1 材质的本质光与表面的一次握手在Maya里材质不是“刷在模型上的一层油漆”而是一个节点。节点里带好几组参数参数通过节点连线跟模型、贴图、灯光产生关系。你调材质其实是在调这个节点对光线的回应方式。我用大白话给自己做过一个比喻材质球像人的表情包。Lambert是面无表情的哑光脸光源打上去怎么都不给高光Blinn是微微泛油的塑料脸会有一点柔和的反光Phong是打了侧光的玻璃脸高光又尖又亮。看到物体表面是什么“性格”就去对应找长得像的表情包这个思路帮我少走了很多弯路。1.2 大多数材质共有的骨架把Maya自带的材质展开一遍会发现属性虽然多但骨架是共通的。配色、透明、高光、凹凸、自发光基本就这几类属性作用常用场景Color / Diffuse固有色、漫反射强度决定物体“原本是什么颜色”Transparency透明度玻璃、水、塑料薄膜Specular / Reflectivity高光、反射强度陶瓷、金属、漆面Ambient环境色老材质里常要压低否则发灰Bump / Displacement表面粗糙感、几何位移凹凸纹理、石头裂痕理解了这个骨架再回头看那些五花八门的材质你会轻松很多。无非是某些模板把高光调得柔和某些模板把反射做得很强某些模板干脆关掉了高光。它们之间的区别不是天上地下而是这几个属性上的偏重不同。2. 默认渲染器时代的“五大金刚”在Arnold这类物理渲染器还没成为主流之前Maya默认渲染器的材质体系一直是老几样Lambert、Blinn、Phong、Phong E外加Anisotropic。我当时最困惑的就是为什么不能一个材质用到底后来想明白了默认渲染器是“手工调节”的思路每种材质只擅长表达一类表面你可以把一类材质看作一个专用的高光模型。2.1 Lambert没有高光的“老实人”Lambert是Maya里最基础的材质类型核心特征就是没有高光。它把所有重点放在漫反射上光源打过来表面向各个方向均匀散射光线看起来平坦、柔和、不刺眼。适合用Lambert的东西基本都是哑光表面白灰墙、粉笔、纸张、粗麻布、没有上釉的陶土、哑光漆。它参数也少基本都是颜色、环境色、透明度、凹凸非常容易上手。但要注意Lambert因为没有高光和反射在默认渲染器里很容易显得“闷”——尤其是周围没有足够环境光时球体会像一个纯色圆片缺少立体感。如果你发现Lambert材质在场景里发黑、发闷先别急着加亮度试着给它配一盏补充灯或者给场景加环境色。渲染器换成物理工作流后Lambert也不能直接当作标准材质使用一般会建议用基础色加高粗糙度来替代它的效果。2.2 Blinn从塑料皮到脸皮都能扛Blinn是默认渲染器时代最常用的材质之一最大特点是高光柔和不生硬。它有两个关键参数Eccentricity控制高光的扩散范围值越大高光越宽越柔和Specular Roll Off控制高光强度随视角变化的衰减程度也能影响Fresnel效果让边缘高光更明显。适合Blinn的物体一大把塑料外壳、釉面陶瓷、皮革、汽车内饰甚至很多流程里做基础皮肤也先拿Blinn打底。因为它的高光不像Phong那样尖锐看起来更接近真实世界的“塑料感”或“半光滑感”。我自己的经验是Blinn最容易被忽略的价值在于那个Specular Roll Off它能让高光不局限于一个点而是沿着轮廓减弱模拟出“边缘发亮”的菲涅尔现象。用默认渲染器做产品模型时想要那种柔和的高级反光Blinn比Lambert靠谱得多。2.3 Phong玻璃水和抛光金属的利刃Phong材质的高光比Blinn锋利得多它主要通过Cosine Power来控制高光大小值越大高光点越小、越锐利。因为高光硬朗Phong常被用来做需要清晰反光的东西玻璃杯、水面、硬质塑料、雨后的路面、抛光金属。用Phong做玻璃时可以把透明度调高同时给透明区域一个偏白的高光颜色模拟光线在玻璃边缘的折射和高亮。做水面也类似适合那种带有明确太阳反光的水面高光会形成一条窄窄的亮带。不过Phong有个坑它的高光太“硬”如果物体表面本身比较粗糙硬高光就会显得假。所以用Phong之前先问一句这个表面真的有光滑到能出现锐利反光吗如果不是Blinn可能更合适。2.4 Phong E比Phong更“听劝”一点Phong E是Phong的改良版多了几个可调参数比如Highlight Size可以独立控制高光尺寸Softness可以控制高光边缘的软硬度。也就是说Phong能做的事它基本能做而Phong做不到的柔和过渡它也管得着。我当时花了很多时间才明白Phong E的价值做车漆、做漆面、做需要“清漆层”质感的物体时它比Phong更容易调出一个大小和软硬都合适的高光。Phong的Cosine Power一旦调大高光很容易变成刺眼的小白点而Phong E的高光更可控能保留高亮的同时不至于过爆。把默认渲染器时代这几类材质放一起看选择逻辑清楚到有点枯燥表面越粗糙、越哑光越往Lambert走表面光滑但柔和选Blinn表面光滑且需要强反光选Phong或Phong E。一开始我也嫌它们老但正是这几个老家伙帮我建立了“先看表面、再选模型”的基本功。材质高光特征典型用途注意事项Lambert无高光墙面、纸张、粗糙布料容易闷需要环境光Blinn柔和高光塑料、陶瓷、皮革、基础皮肤注意Specular Roll Off边缘效果Phong锐利高光玻璃、水、抛光金属高光易过硬粗糙表面慎用Phong E高光大小软硬可调车漆、漆面、饮料瓶适合需要精细控制高光的时候3. 冷门材质不是没用是你没用对地方默认材质列表里还有一批名字听着就很“技术流”的材质我一开始压根不碰Anisotropic、Surface Shader、Use Background、Shading Map、Layered Shader。后来在项目里一个个踩过来才发现这些材质不是没用而是适用场合非常挑用对了全是加分项。3.1 Anisotropic拉丝、头发、CD底面的专属高光Anisotropic直译是“各向异性”。普通材质的高光是圆的、均匀的Anisotropic的高光会沿着表面的某一方向拉伸形成一条条细长的高光带。这种效果正是拉丝不锈钢、CD碟片底面、金属表面拉丝纹理、丝质布料和头发丝上常见的光感。调Anisotropic时关键看Anisotropic各向异性方向和Spread高光延展程度。高光会被拉成沿UV方向的长条所以模型UV布置影响很大。如果UV方向混乱高光方向也会乱效果就会脏。我印象最深的是做一个拉丝不锈钢水槽用Blinn怎么都模拟不出那种细碎高光换成Anisotropic之后材质瞬间就有了金属拉丝的质感。这个经验告诉我普通高光搞不定的效果先想想表面有没有“方向感”。如果物体表面摸起来是一顺儿的细纹比如发丝、金属拉丝、丝绸褶皱Anisotropic就是为你准备的。3.2 Surface Shader不受灯光管教的“自发光面板”Surface Shader是一个超级直接的材质它根本不参与光照计算直接把输入的颜色输出到表面。通俗点说灯光亮不亮跟它没关系它永远显示成设定的颜色。这个特性听起来像个Bug实际用处不少。比如做灯光辅助物体、做屏幕发光效果、做卡通动画里那种“自身发光”的灯管或者想做一个完全不受场景灯光影响的定位球。有些时候还会用它做遮罩或辅助视觉元素。但不要看到“不受灯光影响”就觉得赚了真实感场景里用它做主要材质会很假因为它没有明暗关系、没有高光反射像一张贴纸。我的咸鱼原则是Surface Shader拿来当工具可以拿来当“主材质”要慎重。3.3 Use Background合成场景里的透明挡板Use Background是个相当老的合成向材质它可以让物体在渲染结果里“隐形”但又能接收阴影、反射等环境信息。典型场景是拍实拍素材后需要在画面里加一个虚拟地面投影这个材质就能作为地面把角色阴影接住方便后期合成。现在主流工作流里合成用的阴影捕捉基本都换成了渲染器的Matte节点或Shadow Catcher但Maya里看到Use Background至少要知道它是干嘛的——它是一块“透明挡板”专门为后期合成搭桥的。项目里如果你需要地面接收到阴影但模型本身不显示就可以想起它。3.4 剩下的老伙计Shading Map、Layered Shader、Layered Texture这几个名字我至今不会优先用。Shading Map可以把连续色调映射成几个色阶做出卡通渲染那种分明的明暗边界Layered Shader和Layered Texture则可以把多个材质或贴图叠加到一起做出复杂的混合效果。它们的问题在于控制手段比较绕现代工作流里这些需求大多有更直观的方案想要分层混合可以在高级渲染器的标准材质里直接叠贴图或者用Layer节点配合遮罩逻辑清晰得多。我的建议是看一眼、知道有这回事但不用花太多精力深入除非你在维护一个很老的场景文件。4. 换到Arnold之后材质种类从“清单”变成了“参数”到了Arnold流行的年代材质节点看起来一下子“缩水”了。旧时代那种一个材质一个品种的状况被物理材质大包大揽的模式取代。很多新手问为什么找不到Blinn了为什么用Lambert渲出来不对原因很简单——换思路了。4.1 传统材质和物理材质一个是经验一个是道理传统材质更像是美术手工调出来的经验模型高光大小、反射强度都靠眼睛试容易互不搭界。比如我可以让一个材质同时反射很强、漫反射也满值场景看上去亮到爆炸但物理上这是不成立的。Arnold这类物理渲染器讲究能量守恒光线打到表面反射掉的能量多了透射、漫反射的能量就会相应减少。所以渲染出来的结果自然、沉稳灯光和材质的关系也更接近真实世界。用惯了传统材质的我一开始很不适应这种“约束”想加反射又觉得表面变暗。后来才明白这种“约束”恰恰是物理材质的优点——你不再需要手动维持颜色和高光之间的平衡只要给对物理参数材质自己会保持合理。4.2 aiStandardSurface如何“一个顶十个”Arnold全家桶里最常见的是aiStandardSurface它基本把Lambert、Blinn、Phong的活全接过去了。它的参数不是按“种类”分成几个材质而是按“表面属性”分成几组Base固有色和漫反射强度管“底色”。Specular高光强度、粗糙度、IOR管“反光和清漆”。Metalness金属度管“是不是金属”。Sheen绒毛和织物边缘的柔光管天鹅绒、布料那层软软的质感。Coat透明涂层管车漆、手机壳表面那层硬膜。Transmission透射管玻璃、水、半透明材质。Emission自发光管灯箱、屏幕。从实践来看旧材质的大部分效果都能用它“翻译”过来。想要Lambert那种哑光就把Specular全部关掉Base Roughness调高想要Blinn那种塑料反光就保留一点Specular并让粗糙度在0.2-0.4左右想要Phong那种强高光就把Specular Roughness调到很低再配一个清晰的IOR值。材质类型不再是A到Z的清单变成了同一套参数的不同组合。4.3 特殊材质别滥用Arnold里还有一批“专项材质”比如aiHair管毛发、aiSkin管皮肤次表面散射、aiCarPaint管车漆多层质感、aiToon管卡通渲染。我一开始很兴奋什么材质都想用特殊节点结果渲染慢、调试难效果还不一定好。后来我的习惯是先用aiStandardSurface做一版确认确实满足不了再上特殊材质。aiSkin确实能做出很通透的皮肤但需要灯光配合也吃性能aiCarPaint适合做车漆但普通光滑塑料用StandardSurface加一层Coat就足够。特殊材质是给“专项难题”准备的不是给所有场景挨个套一遍的。5. 选材质的实战逻辑先摸表面再看灯光最后看工作流材质种类的理论知识再丰富落到项目里还是那个灵魂问题这个物体到底该用什么材质我的经验是不要从材质名出发而是从“物体表面在现实里是怎样的”出发然后顺着三条线找答案。5.1 三问选材质法每次给新模型赋材质我都先问自己三个问题。第一表面摸起来是粗糙还是光滑粗糙走哑光路线光滑看反光需求。第二它有没有方向性的纹理比如拉丝、发丝、织物绒毛有方向感才考虑Anisotropic或Sheen。第三当前用的是哪套渲染器用默认渲染器可以保留Lambert、Blinn那套老逻辑用Arnold就统一进aiStandardSurface不要混用否则灯光和渲出效果很难统一。这套问题走完基本能收敛到明确答案物体表面推荐材质默认渲染器推荐材质Arnold核心调法白灰墙、粗布、哑光漆LambertaiStandardSurfaceBase Roughness调高关Specular塑料、陶瓷、皮革BlinnaiStandardSurfaceSpecular Roughness 0.3左右玻璃、水、透明塑料PhongaiStandardSurfaceTransmission开IOR调1.5左右拉丝金属、头发AnisotropicaiStandardSurfaceMetalness开Specular Roughness低车漆、清漆表面Phong EaiStandardSurface加Coat层高光清晰自发光屏幕、辅助球Surface ShaderaiStandardSurfaceEmission开或直接用自发光5.2 一个球的实验同一模型切换三种材质理论知识看多了容易飘我自己最喜欢做一个固定实验建一个经纬球给固定三盏灯然后不停换材质。换成Lambert时球体上没有高光点只有均匀的亮面和暗面轮廓非常柔和。换成Blinn后在亮面偏上位置出现一团椭圆柔光立体感立刻增强像一颗塑料球。换成Phong时高光变成一个小而锐利的白点球面更像玻璃弹珠或抛光的金属。再换成aiStandardSurface高光和环境反射同时出现暗部也不会死黑因为环境光参与了漫反射。这个实验比看十篇文字总结都管用。你能直接看到“高光的软硬”到底给观感带来多大差异也能理解为什么材质不是“颜色”而是“表面对光的说法”。5.3 材质管理命名、保存、复制时的咸鱼智慧材质种类再多项目一乱也是白搭。我从一堆名叫“lambert2”“blinn5”“aiStandardSurface7”的材质里翻车过太多次后来立了规矩材质节点必须改名。叫“prop_table_w_wood”都比叫“lambert1”强名字里带上使用位置、颜色、材质类型别人接手也省心。在Hypershade里建自己的材质库存一份“无贴图材质原型”不同项目直接复制原型再改贴图不要每次从默认节点重新调节。复制材质也有讲究。Instance实例复制意味着同一个材质节点被多个物体引用改一个等于改全部如果需要独立修改要用复制出独立网络的复制方式。这个坑我踩过不止一次想着“顺手调一下场景里所有地板的材质”结果灯光一调所有共用材质的道具集体变异排查半天才反应过来是材质被实例化了。6. 给新手的几个小实验跑一遍胜过抄十遍笔记材质这种东西光看笔记永远隔层纱。如果你正对着材质编辑器发愁我建议抽出半个下午把下面三个小实验挨个跑一遍。都不难但每跑完一个你对“材质种类”的理解都会更结实一点。6.1 实验一调出“哑光墙”和“塑料壳”的差别建一个球体用aiStandardSurface。第一版设成Base颜色浅灰Specular全部关掉Base Roughness调到0.8左右渲染出来是一颗灰扑扑的哑光球像粉笔。第二版把Roughness降到0.2留一点Specular出来就是一颗塑料球。第三版再加一层Coat表面立刻多了清漆的硬膜感。这个实验我做了三遍这才真正理解“粗糙度”不是指表面的凹凸纹理而是指光在微观层面上被打散的强度。凹凸贴图只是视觉凹凸而粗糙度决定的是高光的扩散程度两者不是一回事。6.2 实验二用Transmission做透明玻璃拿aiStandardSurface做玻璃核心是把Specular的IOR设为1.5左右打开Transmission的Color和Weight。渲染时你会发现纯透明的玻璃往往不像想象中那么“白亮”反而偏暗偏灰因为玻璃几乎只靠高光和折射体现存在感而不是靠漫反射变亮。想让它明亮起来需要给场景布置足够多的环境反射或灯光。这一点和默认渲染器里用Phong做假玻璃完全不一样Phong会给你一个“透明但干净”的效果物理材质则会诚实地告诉你玻璃离开环境反射后其实会发暗。6.3 实验三复制材质球的“连动”陷阱在Hypershade里随便建一个材质球把它赋给两个球体。然后选中其中一个球体在属性编辑器里调Base颜色你会发现两个球体一起变色。你以为自己在“单独修改”其中一个其实改的是它们在底层共享的同一个材质节点。明白了这个机制后自己建材质时心里要有个数材质节点是数据物体是引用。你越是随意复制、随意赋值越容易被“连动”坑到。合理的做法是每个独立视觉对象都使用独立的材质节点共用材质只留给那些确实要整体联动的对象。作为咸鱼我现在在项目里选材质时脑子里已经不再背字典了而是直接做判断题粗糙吗光滑吗要透明吗高光是规则的还是拉丝的然后把答案丢给材质编辑器。最后留一个懒人技巧在Hypershade里存一份自己的材质原型库每个材质都用纯色加摆好的参数存一份新项目直接复制原型再换贴图比每次从默认Lambert开始调整快得多。你要是也在材质种类里翻过跟头不妨试试先建这套“原型库”会省下大把时间。