ADOBE_materials_clearcoat_tint:为 glTF 2.0 清漆层添加着色与透射控制的 PBR 材质扩展 图形学【免费下载链接】glTFglTF – Runtime 3D Asset Delivery项目地址https://gitcode.com/gh_mirrors/gl/glTF点击查看免费下载ADOBE_materials_clearcoat_tint 是 glTF 2.0 扩展体系中的一项 Vendor 扩展由 Adobe 提出当前状态为 Complete其作用是为KHR_materials_clearcoat提供的清漆clearcoat层定义颜色着色tint从而精确控制透过清漆层的光线颜色与强度模拟深红色清漆、琥珀色涂层、有色保护漆等真实物理材质。读完本文你将掌握如何在一个 glTF 2.0 材质上组合声明这两个扩展、clearcoatTintFactor与clearcoatTintTexture两个属性的语义与使用规则、清漆着色的 BRDF 计算公式以及该扩展在 glTF 对象模型ObjectModel与KHR_texture_transform交互下的完整数据指针。扩展定位给清漆层上色在 glTF 2.0 的 PBR 体系中KHR_materials_clearcoat 扩展为材质叠加一层透明的清漆clear coat用于表现车漆、木器清漆、塑料保护层等表面。默认情况下这层清漆是无色的——它只通过 Fresnel 反射与微表面 BRDF 影响光照自身不吸收颜色。ADOBE_materials_clearcoat_tint正是为了补上这个缺口它在清漆层上定义透射色tint即允许通过清漆层的颜色。这与现实世界中带色清漆如深红色木器漆、琥珀色透明涂层的物理行为一致光线穿过有色涂层时部分颜色被吸收。依赖与排除条件根据 关联文档 的规范说明依赖该扩展基于 glTF 2.0 规范编写且必须与KHR_materials_clearcoat同时定义在同一个材质上排除不得用于同时使用KHR_materials_pbrSpecularGlossiness或KHR_materials_unlit的材质与KHR_materials_clearcoat自身的排除规则一致。从命名与层级看该扩展属于 Vendor 扩展前缀ADOBE在 extensions/README.md 的 Vendor Extensions 列表中登记不被 Khronos IP 框架覆盖。在 glTF 材质上声明 tint最小可用示例将ADOBE_materials_clearcoat_tint扩展加到任何已经声明了KHR_materials_clearcoat的 glTF 材质上即可。下面来自关联文档的示例定义了一个带深红色清漆的材质{ materials: [ { name: varnish, extensions: { KHR_materials_clearcoat: { clearcoatFactor: 1.0 }, ADOBE_materials_clearcoat_tint: { clearcoatTintFactor: [ 0.4, 0.1, 0.1 ] } } } ] }在这个例子中KHR_materials_clearcoat.clearcoatFactor 1.0表示清漆层强度为满值清漆层完全生效ADOBE_materials_clearcoat_tint.clearcoatTintFactor [0.4, 0.1, 0.1]表示清漆允许透射的颜色偏向深红红色通道透射 40%绿、蓝通道各透射 10%其余光线被吸收。属性表根据关联文档及对应的 JSON Schema该扩展只贡献两个属性属性类型描述必填 / 默认值clearcoatTintFactornumber[3]清漆着色tint的颜色因子否默认[1.0, 1.0, 1.0]clearcoatTintTexturetextureInfo清漆层的着色纹理否两个属性的语义与底层约束clearcoatTintFactor清漆层的透射率Schemamaterial.ADOBE_materials_clearcoat_tint.schema.json对clearcoatTintFactor给出了精确约束类型为长度为 3 的数值数组minItems: 3、maxItems: 3对应 RGB 三个通道每个分量的取值范围为0.0到1.0minimum: 0.0、maximum: 1.0默认值为[1.0, 1.0, 1.0]白色语义为清漆层的透射率黑色表示没有任何光线透过清漆层全部被吸收白色表示所有光线都透过与 glTF 2.0 核心规范一致所有颜色因子均为线性空间linear数值。clearcoatTintTexture着色纹理clearcoatTintTexture引用标准的textureInfo结构包含index与texCoordSchema 的gltf_detailedDescription说明纹理值存储在sRGB 颜色空间若未提供纹理则假定为白色即不改变颜色。这与核心规范所有彩色纹理假定为 sRGB的约定一致。因子与纹理的乘法组合与 glTF 中其他 factor/texture 组合的规则相同两个值相乘得到最终的 tint 颜色clearcoat_tint.rgb clearcoatTintFactor.rgb * clearcoatTintTexture.rgb着色如何进入 BRDF修改 f_clearcoat 公式清漆层的分层模型要理解 tint 的作用位置需要先回顾 KHR_materials_clearcoat 的分层模型。清漆效果通过一个微表面 BRDF 叠加在 glTF 2.0 Metallic-Roughness 材质之上# from glTF 2.0 Metallic-Roughness material (core) material mix(dielectric_brdf, metal_brdf, metallic) # clearcoat clearcoat_brdf specular_brdf( normal clearcoatNormal, α clearcoatRoughness^2) # layering coated_material fresnel_coat( normal clearcoatNormal, ior 1.5, weight clearcoat, base material, layer clearcoat_brdf)其中fresnel_coat使用 Schlick Fresnel 项按权重分层coated_material mix(material, clearcoat_brdf, clearcoat * clearcoat_fresnel) clearcoat_fresnel 0.04 (1 - 0.04) * (1 - abs(VdotNc))^5加入 tint 后的着色公式关联文档 说明clearcoat_tint只对f_clearcoat公式作轻微修改——将(f_emissive f_diffuse f_specular)这一项乘以 tint以表示来自清漆层下方所有光线的吸收clearcoatBlendFactor clearcoatTexture.r * clearcoatFactor clearcoatFresnel fresnel(0.04, NdotV) color mix(vec3(1.0), clearcoat_tint, clearcoatBlendFactor) * (f_emissive f_diffuse f_specular) * (1.0 - clearcoatBlendFactor * clearcoatFresnel) f_clearcoat * clearcoatBlendFactor公式要点拆解clearcoatBlendFactor由清漆强度纹理的 R 通道与clearcoatFactor相乘得到控制清漆层的整体权重mix(vec3(1.0), clearcoat_tint, clearcoatBlendFactor)根据清漆层的覆盖权重在无色白色与tint 颜色之间插值——清漆越厚/权重越高tint 颜色对下层光线的染色越明显下层贡献(f_emissive f_diffuse f_specular)先被 tint 调制模拟透过有色涂层的光线吸收再乘(1 - clearcoatBlendFactor * clearcoatFresnel)衰减清漆层自身的反射贡献f_clearcoat * clearcoatBlendFactor不受 tint 影响——反射发生在涂层表面光线并未穿透涂层。实现提示所有实现都应采用相同的 BRDF 输入计算方式BRDF 本身的具体实现可根据设备性能与资源约束而变化详见 glTF 2.0 规范的 Appendix BBRDF Implementation。在 glTF 对象模型中的位置与扩展交互该扩展已被纳入 glTF 2.0 的对象模型ObjectModel定义。在 specification/2.0/ObjectModel.adoc 中ADOBE_materials_clearcoat_tint的属性指针如下Pointer类型/materials/{}/extensions/ADOBE_materials_clearcoat_tint/clearcoatTintFactorfloat3与 KHR_texture_transform 的交互当clearcoatTintTexture上同时声明了KHR_texture_transform扩展时以下三个指针同样可被寻址即支持对 tint 纹理做 UV 偏移、旋转与缩放Pointer类型/materials/{}/extensions/ADOBE_materials_clearcoat_tint/clearcoatTintTexture/extensions/KHR_texture_transform/offsetfloat2/materials/{}/extensions/ADOBE_materials_clearcoat_tint/clearcoatTintTexture/extensions/KHR_texture_transform/rotationfloat/materials/{}/extensions/ADOBE_materials_clearcoat_tint/clearcoatTintTexture/extensions/KHR_texture_transform/scalefloat2这使动画系统、材质变体系统等基于 JSON Pointer 的工具可以直接对 tint 属性做动画例如让清漆颜色随时间渐变或对 tint 纹理做 UV 动画。完整实战示例带纹理的着色清漆将因子与纹理结合可以构建更真实的材质。以下示例演示了一个琥珀色清漆 着色纹理的完整材质声明纹理的 sRGB 值会与线性因子相乘{ materials: [ { name: amber_varnish, pbrMetallicRoughness: { baseColorFactor: [0.8, 0.6, 0.4, 1.0] }, extensions: { KHR_materials_clearcoat: { clearcoatFactor: 0.8, clearcoatRoughnessFactor: 0.1 }, ADOBE_materials_clearcoat_tint: { clearcoatTintFactor: [1.0, 0.85, 0.6], clearcoatTintTexture: { index: 2, texCoord: 0 } } } } ] }使用时需注意该扩展必须与KHR_materials_clearcoat同时存在且不得与KHR_materials_pbrSpecularGlossiness、KHR_materials_unlit混用clearcoatTintFactor各分量取值在[0, 1]区间未提供纹理时按白色处理。参考资源扩展规范extensions/2.0/Vendor/ADOBE_materials_clearcoat_tint/README.mdJSON Schemamaterial.ADOBE_materials_clearcoat_tint.schema.json依赖的清漆扩展KHR_materials_clearcoat对象模型指针定义ObjectModel.adoc扩展索引与 Vendor 扩展列表extensions/README.md赞分享图形学【免费下载链接】glTFglTF – Runtime 3D Asset Delivery项目地址https://gitcode.com/gh_mirrors/gl/glTF点击查看免费下载相关推荐探索Lamina为ThreeJS打造的可扩展层级着色器材质探索Lamina为ThreeJS打造的可扩展层级着色器材质 项目介绍 Lamina是一款专为ThreeJS设计的可扩展层级着色器材质库。它通过层级系统使得创palera1n 越狱工具新手指南3步完成旧iPhone的DFU引导与Rootless越狱palera1n 越狱工具新手指南3步完成旧iPhone的DFU引导与Rootless越狱 朋友把停更在 iOS 15 的 iPhone 7 Plus 拍在桌图形学three.js 清漆材质深度指南ClearcoatTest 模型与 KHR_materials_clearcoat 扩展解析three.js 清漆材质深度指南ClearcoatTest 模型与 KHR_materials_clearcoat 扩展解析 导读 本文以 three.js前端3D渲染图形学上一篇GPU-Passthrough-Tutorial实战从双系统到完美虚拟化的转变下一篇LongCat-Flash-Thinking-ZigZag架构深度剖析从配置参数到MoE路由机制的实现细节创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考