原文(英文):The Second Reflection: The Lost Art of Realistic Metal 作者:Arvid Schneider(CG Lounge) 说明:本文为中文翻译版,技术术语保留英文;原文中课程推广与站内导流内容已移除,外部论文与技术文档链接保留。
下次洗碗的时候,看一眼金属锅盖的背面。在厨房灯下,你会看到预期中的那个反射:顶灯,锐利而明亮。然后还有包裹着它的第二层东西——一圈柔和的光晕,远远溢出第一层反射的边缘。房间亮的地方它亮,房间暗的地方它暗。它不是污渍,也不是脏痕。它是真实的反射,而且恰恰是你的金属 shader 做不出来的那一个。
一旦你注意到它,就会到处看到它。电梯门、冰箱侧面、笔记本的边框。干净锐利的核心反射,上面叠着一圈宽而散淡的尾巴,两者同时存在。最近有个视频把这种现象命名为”reflection tail-off”。YouTube 频道 @lucasprismal 的主理人 Lucas Piazzini 向 52 个人(主要是 generalist 和材质艺术家,职业、爱好者、学生都有)发放了一份问卷,让他们给四种都呈现这种效果的金属调材质,而不提前暗示其中有特别之处 [1]。大约四分之一的人察觉到了”什么”,但通常归咎于污渍、指纹或 coat。只有极少数人说出了 dual reflection 或 GGX tail。对 roughness 的猜测则严重发散——同一张参考图,有人猜接近零,有人猜非常高。这正是两种 roughness 共存时会出现的情况:每个人都只抓住了其中一种。这个认知鸿沟,就是这篇文章的全部故事。
本文基于 Lucas Piazzini 的视频《Forgotten Metal Knowledge》写成,建议先看视频。他的调查和钢铁侠考据是下文的主线,论文、OpenPBR 和生产级 shader 是我在此之上补充的部分。
视频里真正有价值的内容:Mark II 穿甲镜头的双重反射,在实体战衣上得到确认,不是指纹;知道该看什么之后,日常金属随处可见这一现象;Snow 的论文作为线索,再找到参与构建钢铁侠各向异性工具的 Christophe Hery——ILM 的通用 shader 从九十年代中期起就带有两个 specular lobe,而在《钢铁侠》中它们是相加(additive)的;显微镜下多尺度划痕是物理成因;多层混合是构建方式;问卷则证明了整个行业能看见这种效果、却没有统一的名称。本文保留这一发现脉络,并把它与视频未覆盖的论文、OpenPBR 和生产级 shader 放在一起讨论。
一个 roughness 值通常是个谎言
先看看我们所有人做金属的标准流程:metalness 设为 1,选一个 roughness 值,或者接一张 roughness 贴图。如果是拉丝表面,也许再加一点 anisotropy。完事。
问题在于,roughness 永远只做一件事:把单个反射变模糊。调大,反射变宽变软;调小,反射变紧变锐。它永远无法同时给你一个锐利的反射和一个柔和的反射。而”同时”恰恰是大多数真实金属呈现的状态。
原因在于尺度。真实金属布满你肉眼察觉不到的划痕,而这些划痕的深度、宽度、密度差异巨大。Piazzini 用最笨的办法验证了这一点:和合作者一起放到显微镜下看,每放大一级都会显出新的划痕尺度,而且深度是关键变量,不只是密度 [1]。浅划痕几乎不弯折光线,深划痕则强烈散射光线。在你渲染的一个像素里,或者说你视野的一个视锥里,你同时看到一片几乎完好的表面和一片被散射的表面。眼睛无法把它们分开,于是融合成单一印象:一个干净的反射,外面裹着一圈粗糙的光晕。这和远处看红蓝小点阵会读成紫色是同一个道理,也是屏幕显示能成立的根本原理。
所以”两个反射”并不是什么两层涂层。它们是同一个表面,在精细细节与粗糙细节重叠的尺度下被看到的结果。单个 roughness 滑块面对一个有两个答案的问题,只能选一个。
值得说清楚的是,roughness 滑块并非永远是错的。有三种金属确实就是单 lobe:接近完美的镜子,是 roughness 接近零时的一个锐利反射;均匀喷砂的表面,是一个宽反射;拉丝完全均匀的金属,用一个 roughness 加 anisotropy 就能很好描述。tail-off 出现在微表面不均匀的时候——同一个像素覆盖范围内,几乎完好的金属斑块与深浅不一的多尺度划痕斑块相邻共存。而你真正会拿在手里的金属大多正是如此:平底锅、笔记本盖子、车身板件、用旧工具。所以这个效果感觉无处不在,尽管它并非绝对普遍。引出这个话题的视频也列出了同样的三种例外 [1]。
anisotropy 还有一个相关的陷阱。单个 anisotropy 控制把整个表面都当作方向性划痕处理,于是整个高光都被拉伸。而真实的拉丝金属往往是一个像素内完好斑块与方向性划痕斑块的混合。你会同时看到干净的各向同性核心和被拉伸的各向异性衰减——这正是锅盖和不锈钢冰箱的样子。一个 roughness 加一个 anisotropy 同样做不到。你再次需要两种响应,而且只有其中一种带有拉丝方向 [1]。
这些都不是什么高深的物理。它紧挨着我们已经依赖的基本原理:正对角反射率直接来自材质的折射率,F(0) = ((n-1)/(n+1))²,并且一切在掠射角趋向全反射 [2]。roughness 只是我们不直接建模的微观几何的替身。当微观几何不均匀时,第二反射就出现了——也就是说,你将要调的绝大多数金属。
但 GGX 不是已经有 tail 了吗?
如果你了解微表面理论,可能已经在反驳了:GGX——几乎现代所有 shader 使用的分布——闻名的恰恰就是它的长尾巴。这没错,而且值得展开,因为整个行业其实早就在用单 lobe 的方式悄悄承认这个论点了。
微表面 shader 把表面当作数百万面微小的镜子。一个叫法线分布(NDF)的函数描述这些微镜法线的离散程度,roughness 设定离散的宽度。但宽度不是唯一的选择,衰减的形状同样重要。较老的分布——Beckmann 和 Blinn-Phong——衰减很快,裙摆紧凑。GGX 最早由 Trowbridge 和 Reitz 在 1975 年推导,2007 年由 Walter 等人重新引入并命名,它保留明亮的核心,同时让能量缓慢地拖入宽阔的裙摆。它之所以成为默认,正是因为这条更长的尾巴匹配了真实测量材质——Beckmann 把尾巴渲染得太紧,直接截断了 [3]。
Disney 随后把它一般化。他们的 GTR 分布增加了一个可调指数,直接拉伸或缩短尾巴,引擎里的 tail-off 控制通常暴露的就是这个指数 [4]。所以后文我把 GGX tail-off 列为构建第二反射的方法之一时,调的就是这个旋钮。
Disney 也把话说得很直白。在指出 GGX 仍然无法捕捉实测铬材质上那种”光晕感”高光之后,笔记给出了对尾巴建模的第二个选项:在第一个峰之上再叠加一个更宽的 specular 峰,参照 Ngan 2005 年对实测 BRDF 的研究 [4][5]。这就是用学术语言描述的 dual-lobe 金属——比我们大多数人拥有这个复选框早了好多年。
但关键在于,故事并不会终结于 GGX。它只给你一条尾巴,每个 lobe 一条连续的曲线。你可以拉长或缩短,但你无法同时要求一个刀锋般锐利的核心和一条独立宽阔的裙摆。GGX 承认了真实反射有尾巴,并修好了单个反射的尾巴;而多尺度金属有两条,任何单个 GGX lobe 无论怎么调,都无法同时成为两者。
右图那种形状在研究中有个名字:“hazy gloss”——一个 specular 核心,周围环绕着可以拉宽而不杀死核心的光晕。Barla、Pacanowski 和 Vangorp 在 2018 年就围绕这种拆分构建了复合 BRDF [6]。OpenPBR 规划中的 “Hazy specular” 工作,是行业标准终于追上那篇论文,而不是发明了什么新概念 [7]。
他们早在 2008 年就解决了这个问题
回去把《钢铁侠》第一部里 Mark II 穿甲的镜头暂停一下,看那些干净的金属。就在那里:明亮的核心反射,周围一圈宽阔的彩色光晕。不是指纹,不是污渍。就是你在锅盖上看到的那种 tail-off。
这不是巧合,也不是默认 shader 的效果,是 ILM 刻意追求的结果。在 Ben Snow 关于该片的 SIGGRAPH 2010 课程材料中,团队描述了他们对真实红金、黄金金属的观察:
“更窄、更白的中心高光,周围一圈更宽的彩色光晕……把两个不同的 specular 函数叠加起来模拟。” —— Ben Snow,ILM,SIGGRAPH 2010 课程幻灯片
他们把实物色板送去做反射率测量,然后用两个不同 specular 函数的叠加来近似这种响应 [8]。一个 lobe 负责锐利核心,另一个负责宽尾巴。实测 BRDF 数据表帮助他们理解这种观感;而生产材质用的是叠加函数,这样结果始终可以被艺术指导 [9]。
那圈彩色镶边不是独立的油漆层。在金色和红金金属上,宽 lobe 携带更多材质颜色,核心则更热、更接近白色。ILM 的实现方式是把第二个高光的 specular exponent 按颜色通道拆分——这是一个生产技巧,但看起来依然是物理上可观测的金属 [9]。
他们一开始试过最直白的路线:用非常精细的划痕表面 bump map,直接建出真实的微观几何。后来放弃了,而原因正是这篇文章的核心。它又噪又慢,更糟的是:一旦他们把它调到在画面中某个大小下看着干净,只要钢铁侠在镜头里变小,aliasing 就会在另一个尺度上卷土重来 [8]。固定的微观几何永远不可能正确,因为你观察它的尺度一直在变。于是他们不再给划痕建模,转而近似划痕对光的影响:一个锐利 lobe 负责核心,一个宽 lobe 负责尾巴,第二个高光的 specular exponent 按颜色通道拆分,让彩色镶边晕染在高光周围 [9]。
这是来之不易的经验。该片的总监曾直言,在《钢铁侠》之前他们一直不满意的就是拉丝和哑光各向异性金属。铬没问题,从来做不好的是那种哑的、带划痕的、看着真实的金属 [10]。第二反射就是答案,而且它是手工搭出来的——参考实物,一个 lobe 叠一个 lobe。
Piazzini 后来联系上了 Christophe Hery——Snow 在《钢铁侠》的各向异性和 shader 工作中致谢的人之一。Hery 的回忆(照例要说明,这已是将近二十年前的事)补上了生产一线的声音:ILM 的通用 shader 从九十年代中期起就带两个 specular lobe,所以 dual specular 是基础设施,不是《钢铁侠》的一次性技巧。Fresnel 是可以艺术指导的,正对和掠射角各有一个全彩颜色,走 Schlick 曲线加可调指数。在《钢铁侠》上,随着 importance sampling 和递归反射变得更复杂,他们还要对抗能量爆炸。而当 Hery 看到多层 lobe 金属与真实参照的对比时,他的判断是:对,这就是模拟它的正确思路,因为当年那两个 lobe 就是简单相加的 [1]。相加是历史,混合(mix)是现代的修正。 这两点都要记住。
但为什么不直接把划痕建出来?
很合理的问题,也是每个人首先想到的:如果 roughness 只是亚像素法线的替身,那就把真实法线建出来——画或者生成一张精细的划痕贴图,接到 bump 或 normal 上,让渲染器做剩下的事。在真实尺度下这确实有效,因为它是 ground truth,也正是 ILM 最初尝试、随后放弃的路线。完整的原因值得理解,它决定了你的整个方案。
Normal map 是高频细节,而像素是望向它的一个有限窗口。近处,一个像素只覆盖几道划痕,你离得够近、能解析出信号,效果非常出色。把表面推远,一个像素现在覆盖数千道划痕,你等于在要求渲染器用单个样本概括这一切。这时只有两种结果,而且都是错的:如果贴图走了 mip-map,渲染器会把那数千条法线平均回平面,杀死产生尾巴的方差,你的金属塌陷成沉闷、过于光滑的反射;如果不走 mip-map,信号没有任何带宽限制,你在对远高于采样率的细节做点采样,得到的是闪烁和爬行噪点,而不是干净的衰减。要么平滑但错误,要么平均正确但全是噪点。
这就是为什么一张程序划痕纹理——比如没有 mip 金字塔的 OSL 图案——救不了场。它去掉了平均,但也一起去掉了预过滤,而预过滤才是你真正需要的东西。问题从来不在于 mip-mapping,而在于法线分布必须沿整个像素覆盖范围积分,而每次采样只返回一条法线的 shader 做不到这一点。你可以用足够多的样本硬算,直到亚像素分布收敛——过程又慢又噪。你也可以让程序纹理感知覆盖范围,随覆盖范围增大把细节淡出到均值,OSL 可以通过导数做到这一点 [11]。但淡出高频法线细节的正确方式,是把它的方差转化为 roughness——而这恰恰是从另一端重新推导出的双 lobe 模型。LEAN mapping 这类法线贴图过滤方法做的就是这件事:存储法线的方差,当凹凸缩小到像素不可见时,把它折叠进各向异性 roughness [12]。
正确过滤划痕 normal map,意味着把你再也无法解析的法线方差转化为额外的 roughness。把这个思路推到底,你就手工重建出了分层 roughness 的 lobe。划痕和 lobe 是同一套物理,只是预过滤的程度不同。
确实存在真正”渲染实际划痕”的路线——glint 与 specular 微结构方向的研究,它们正确地积分亚像素法线分布,既不平均掉也不 aliasing [13]。它很漂亮,也很昂贵,是 hero 表面充满画面时的正确工具。除此之外的一切场景,预过滤的 lobe 都不是妥协——它是同一个答案,只算一次,而且在你的资产会被看到的任何距离上都保持正确。
一句话总结:真实金属同时呈现两种 roughness,是因为它的划痕不均匀。单 lobe shader 表达不了这一点。ILM 在《钢铁侠》上的答案,就是加上第二个 specular lobe,并对照真实金属实测结果调出来。
它曾经就在你的 shader 里,后来被优化掉了
有相当长一段时间,这就是日常工作的一部分。我们这一代人当年学的材质课程,都是围绕自定义反射衰减曲线来构建的——手工塑造高光的淡出方式,因为只有这样渲染图才不像渲染图。Grant Warwick 的 Mastering V-Ray 课程,很多人就是跟着它学材质的,反复强调的正是这一点:以参考为驱动、手工调校反射,包括在 GGX 成为 V-Ray 原生选项之前很多年,就教艺术家在 V-Ray 里手工模拟 GGX 式响应。
而且它不只是手工技巧,它就在 shader 里。Anders Langlands 的 alSurface——在 Arnold 自己的 standard surface 出现之前,无数 Arnold 艺术家赖以工作的 shader——原生就给你两个完整的 specular lobe:一个锐利的,一个更宽更粗糙的,各有独立的 roughness 和 IOR。他在我们至今还在推荐给别人的那份 2014 SIGGRAPH 课程里写过这个设计 [14]。RenderMan 的 PxrSurface 多年来一直在主 specular 和 clearcoat 旁边带着第二个 “Rough Specular” lobe [15]。Pixar 自己的基础文档写明了第三个 lobe 存在的理由:有些材质需要比 GGX 更长的尾巴,有时那第二种粗糙度需要被艺术指导,而不是锁定在单一曲线上。Clearcoat 是顶部薄介质层,Specular 是主界面,Rough Specular 是刻意保留的光晕 [16]。而 V-Ray 艺术家在 blend 材质里用基础金属叠加逐渐更模糊、更微弱的副本来构建反射”尾巴”,做的事和 ILM 在《钢铁侠》上做的完全一样——纯手工,而且这条工作流一直有据可查 [17]。
所以当视频说”这一代几乎没人教 multi-lobe 金属”时,这话只对了一半。资深总监往往会耸耸肩:当然了,我们一直有两个 specular。它被教过,也被内建过,包括在 ILM,远早于《钢铁侠》[1]。真正变化的不是艺术家变差了——“现在的年轻人不会调材质”这种说法既懒惰又错误,现在入行的很多人比当年的我更强。真正变化的是默认 shader。 行业围绕一个大型 principled 式 uber-shader 收敛,理由很充分:互换性和简洁性。作为交换,第二个 lobe 被折叠进了单个 roughness 滑块加一层介质 coat。这个控制不是从知识里丢失的,而是从新人们最先上手的那个 shader 面板上被优化掉了——你无法去调一个面板上不存在的旋钮。
OpenPBR 给了你什么,又没给什么
先说好消息,因为它是真的。2024 年,Adobe 和 Autodesk 发布了 OpenPBR Surface v1.0,把两家竞争的 uber-shader 合并为 Academy Software Foundation 旗下 MaterialX 组的单一开放标准 [18]。Arnold 已经把它作为一等公民的表面积内置 [19],其他厂商也在跟进。一份材质描述可以在渲染器之间迁移,而不是每换一个渲染器就重建一次。
而且它底层的模型确实很好。那是一个真正的分层堆栈:基底是金属与介质的统计混合(metalness 是微表面中金属部分的比例,不是硬开关),往上是薄膜干涉,再是介质 coat,最上面是用于微纤维的 fuzz 层。它遵守能量守恒。metalness 是混合而非开关,正是老 shader 所缺乏的那种物理诚实。
但问题也来了,这也是你的 OpenPBR 金属依然可能显得扁平的原因:基底对每个界面只使用单个 GGX lobe,一个 roughness。 你免费得到的唯一额外 specular lobe 是 coat,而 coat 是介质——它不会带上你金属的颜色,还会改变它下面基底的外观 [20]。真正的东西——单一金属表面上真正的 hazy 多 lobe 反射——已经写进了规划。在 OpenPBR 的配套笔记里,它位于未来工作的 3.4.1 节,“Hazy specular”,围绕的正是 Barla 复合模型那种核心加光晕的思路 [7][6]。还没进入已发布的模型,只是计划。这有点讽刺,因为专用 shader 十年前就有第二个 lobe,而 RenderMan 的 Lama 分层现在就有。重点不是说 OpenPBR 落后,而是:整个行业正在标准化的、即将成为所有人默认的那个 shader,到来时并没有这个控制。 除非你主动去找,否则你会把它给出的单个反射当成真相。
所以在默认的 OpenPBR 金属上,你按设计就是单 lobe。这个标准在几乎所有方面都变得更好,却悄悄漏掉了让金属看起来”被观察过”的那个控制。这不是在批评 OpenPBR,而是提醒你:不要再指望 shader 去做一件它已经明确告诉你还没做的事。
今天如何把第二反射找回来
你不必等规范修订。现在就有几种方法可以重建 tail-off,在任何现代引擎里,从正统做法到快速取巧都有。
正统做法是手动叠加 lobe。 把金属复制成几层,每一层都比下一层更粗糙、存在感更弱,然后混合。每个渲染器都有路径。在 Blender 里,把 Principled 基底和额外的 Glossy 节点混合。在 Arnold 里,standard surface 给金属的是单个导体 lobe 加一层保持介质白的 coat,你可以用 layer_shader 叠两个 standard surface,或者用 mix_shader 混合一个锐利金属和一个粗糙金属——两种方式都是在合成 closure,能量保持正常而不是越堆越高 [21]。在 V-Ray 里,把金属放进 VRayBlendMtl,往 coat 槽位复制,glossiness 和权重逐层递减——Chaos 官方文档就把这称为构建反射”尾巴” [17]。在 RenderMan 里,用 MaterialX Lama(ILM 开发的分层节点),在基底上叠一个更粗糙的导体 lobe,能量守恒由它处理 [22]。而如果你用的 shader 还保留着第二个原生 specular——PxrSurface 的 Rough Specular 或经典的 alSurface——你可能根本不需要分层,lobe 就在那里,等你把它调大。唯一不变的规则是保持能量守恒:用混合,不要用相加,否则你的金属会凭空变亮。 这也是现代引擎相比 2008 年唯一改进的地方。Hery 回忆《钢铁侠》的双 lobe 是相加的——手工平衡好各自的存在感也行,但能量也会在你不注意的时候悄悄爬上去 [1]。Lama、mix_shader 和普通的 Mix 节点,现在替我们做好了守恒的记账。
想省事一点,有些引擎直接暴露 GGX tail-off 控制。它基本免费,因为只是重塑你已经在计算的那个反射。局限是它只有一条固定曲线:你无法独立地要求刀锋核心和超宽尾巴,推得太狠还会把不想要的反射抹满整个表面。适合快速提亮,不适合 hero asset。
最省事的是 coat 取巧法:打开 coat 层,让它的介质反射冒充尾巴。一键搞定。但只有在金属接近黑或白、且处于背景时才站得住,因为 coat 不会带上金属的颜色,还会压坏下面的材质。只要金属里有真正的颜色,取巧立刻露馅。用的时候心里要有数。
面对真实物体时的速查:锐利核心加柔和光晕——多尺度金属,用两个 lobe;只有紧凑的锐反射、没有光晕——近镜面,一个低 roughness 就够;只有宽而软的响应——喷砂或均匀粗糙,一个高 roughness 就够;拉丝圆环上的蝶形高光——anisotropy 在起作用,但你可能仍想在它下面加第二个更宽的 lobe;金色或铜色上白热核心周围的彩色镶边——那是《钢铁侠》式的观察,不是脏痕。
无论选哪种方法,都盯紧能量。旧的相加路线被淘汰,就是因为把反射加在一起会破坏能量守恒、悄悄提亮材质。用 mix、blend,或者使用在构造上就能量守恒的模型。
修复方法,是 lookdev 最古老的技能
这不是 CG 变差的证据。2008 年很多金属看着也像塑料,我们只是选择性地忘记了那些没撑住的镜头。这个观点更克制也更有用:我们的工具在几乎所有方面都变好了,唯独在让金属”像被认真观察过”这件事上倒退了,还把开关藏了起来。
找回它的方法不是某个插件,而是每个优秀 lookdev 艺术家一直在做、而最新的默认设置正在让你丢掉的事:去看真实的物体。 锅盖、电梯、冰箱、停车场的车门。找到那个锐利的反射,再找到叠在它上面的柔和反射,然后把两个都做出来。一旦你能看见第二反射,你就再也忽视不了它——而你的金属,会停止看起来像预设,开始看起来像真实存在的东西。
参考来源
视频
- Lucas Piazzini(@lucasprismal)/ YouTube,Forgotten Metal Knowledge | Vray, Cycles, Arnold..
文章
- Sébastien Lagarde,Feeding a physically based lighting model
- fxguide,Ben Snow: the evolution of ILM lighting tools
- Adobe,OpenPBR Surface v1.0: a major step forward for digital materials
论文
- Bruce Walter, Stephen Marschner, Hongsong Li, Kenneth Torrance. Eurographics Symposium on Rendering 2007,Microfacet Models for Refraction through Rough Surfaces
- Brent Burley, Walt Disney Animation Studios. SIGGRAPH 2012 course,Physically-Based Shading at Disney
- Addy Ngan, Frédo Durand, Wojciech Matusik. Eurographics Symposium on Rendering 2005,Experimental Analysis of BRDF Models
- Pascal Barla, Romain Pacanowski, Peter Vangorp. Eurographics Symposium on Rendering 2018,A Composite BRDF Model for Hazy Gloss
- Jamie Portsmouth, Peter Kutz, Stephen Hill. Companion to the OpenPBR specification,OpenPBR: Novel Features and Implementation Details
- Ben Snow, ILM. SIGGRAPH 2010 course ‘Physically-Based Shading Models in Film and Game Production’,Terminators and Iron Men: Image-based lighting and physical shading at ILM
- Marc Olano and Dan Baker, Firaxis Games. I3D 2010,LEAN Mapping (Linear Efficient Antialiased Normal Mapping)
- Ling-Qi Yan, Milos Hasan, Wenzel Jakob, Jason Lawrence, Steve Marschner, Ravi Ramamoorthi. SIGGRAPH 2014,Rendering Glints on High-Resolution Normal-Mapped Specular Surfaces
- Anders Langlands. SIGGRAPH 2014 course ‘Physically Based Shading in Theory and Practice’,Physically Based Shader Design in Arnold (alShaders)
- Christophe Hery, Ryusuke Villemin, Junyi Ling. SIGGRAPH 2017 course ‘Physically Based Shading from Theory to Implementation’,Pixar’s Foundation for Materials
幻灯片
- Ben Snow, ILM. SIGGRAPH 2010 course slides,Terminators and Iron Men (slides): Image-based lighting and physical shading at ILM
文档
- Open Shading Language documentation, Academy Software Foundation,Open Shading Language: automatic differentiation
- Pixar RenderMan documentation,PxrSurface
- Autodesk Arnold documentation,OpenPBR Surface
- Pixar RenderMan documentation(Lama,ILM 开发),MaterialX Lama
教程
- TurboSquid / Chaos,V-Ray Blend Material: building a reflection tail
规范
- Academy Software Foundation (MaterialX),OpenPBR Surface Specification
- Autodesk,Autodesk Standard Surface specification