mcpField
B
blender-pbr-materials

blender-pbr-materials

github.com/el4cteo创意与媒体569112 次安装2 周前更新
代码仓库

关于 blender-pbr-materials

blender-pbr-materials 是面向艺术家和资产创作者的 Blender 技能,用于构建和检查基于物理的材质。它结合材质设置规则、纹理集处理脚本及引擎导出指导。

主要功能

  1. 01从纹理集构建材质
  2. 02使用符合物理规律的材质预设
  3. 03配置色彩空间和纹理贴图
  4. 04为引擎导出准备贴图
  5. 05设置透明度与置换

适用场景

  1. 01根据下载的纹理集创建材质
  2. 02设置金、玻璃或木材表面
  3. 03为 glTF 或 Unreal 准备贴图
  4. 04为树叶或玻璃配置 Alpha

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/el4cteo/blender-skills --skill blender-pbr-materials

安装后在 Claude Code 中输入/blender-pbr-materials确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
pbr-values.md
scripts/
_bpyx.py
build_pbr_material.py

详细介绍

PBR 材质

执行模型位于 blender-core。实测数值见 references/pbr-values.md。

快捷方式

  • 纹理集 → 材质:scripts/build_pbr_material.py -- --name M_Crate --textures //tex/crate --objects SM_Crate。它会根据文件名识别贴图(Poly Haven、ambientCG、Substance、UE 后缀),设置色彩空间、拆分 ORM、翻转 DirectX 法线,并将 AO 路由到 glTF。
  • 纯色物理合理材质:使用 --preset gold|iron|plastic|rubber|wood|glass|skin|...,可选 --color R G B(sRGB)。

规则(违反这些规则会让渲染看起来像“CG”)

  1. 金属度是二元的:0(电介质)或 1(纯金属)。仅在过渡像素上使用中间值(如金属上的灰尘或锈蚀边缘)。喷漆金属属于电介质。
  2. 基础色 = 无光照时的反照率:不包含烘焙阴影/AO/高光。电介质范围约为 sRGB 30–240(线性 0.012–0.87):木炭约为 50,新雪约为 240。金属:基础色 = F0 反射率,sRGB 180–255,绝不能偏暗。
  3. 粗糙度决定真实感。用污垢、污迹和磨损打破均匀感。恒定粗糙度看起来很假;应让表面上的粗糙度变化 ±0.1–0.2。
  4. 色彩空间:Base Color 和 Emission 使用 sRGB。Roughness、Metallic、Normal、AO、Height、Opacity 和 ORM 使用 Non-Color。色彩空间设置错误是头号问题(法线褪色、粗糙度错误)。
  5. 高光:几乎所有电介质都保留 IOR 1.5 和 Specular IOR Level 0.5。仅对已知材质更改 IOR(水为 1.33,玻璃为 1.5,钻石为 2.42)。
  6. 法线贴图:Blender、glTF、Unity 和 Roblox 使用 OpenGL(Y+)。Unreal 和 Substance 的 DirectX 预设使用 DirectX(Y-),因此转换时要翻转 G。烘焙和目标必须使用相同的切线基底(MikkTSpace)和相同的三角化方式。
  7. AO:Principled BSDF 没有 AO 输入。面向引擎时,将 AO 放入 ORM 的红色通道。使用 Cycles 渲染时,不要将 AO 乘进基础色,因为渲染器会计算遮蔽。

Principled BSDF(5.2)快速映射

Base Color、Metallic、Roughness、IOR、Alpha、Normal、Thin Wall(5.2:无体积的叶片/纸张/织物薄片)、Subsurface Weight/Radius/Scale(皮肤、蜡;皮肤的 Scale 以米为单位,约为 0.005–0.02)、Specular IOR Level、Specular Tint、Anisotropic、Transmission Weight(玻璃/液体)、Coat Weight/Roughness/Normal(汽车漆、清漆)、Sheen Weight(布料、天鹅绒)、Emission Color/Strength(强度单位约为 W/m²;屏幕使用 1–10,灯泡使用 50+)、Thin Film Thickness/IOR(肥皂、油、镀膜镜片)、Diffuse Roughness。

引擎导出规则

目标贴图打包方式法线
glTF / web / GodotbaseColor(+alpha)、metallicRoughness、normal、occlusion、emissiveglTF:R=AO G=Rough B=Metal(ORM)OpenGL
UnrealBaseColor、Normal、ORMR=AO G=Rough B=MetalDirectX(若贴图已标记,UE 会在导入时翻转)
Unity URP/HDRPBaseMap、Normal、MetallicSmoothness / HDRP MaskMapURP:R=Metal A=Smoothness(1-rough)。HDRP Mask:R=Metal G=AO B=DetailMask A=SmoothnessOpenGL
Roblox SurfaceAppearanceColorMap(+alpha)、NormalMap、MetalnessMap、RoughnessMap、EmissiveMaskContent独立灰度贴图,不打包OpenGL,切线空间
  • 只有图像贴图 → BSDF 链路可以导出。程序化节点、Mix 节点和数学运算在引擎中都会失效,因此要先烘焙(blender-texture-baking)。
  • 每个纹理集使用一种材质。每增加一种材质,就会增加一次绘制调用(blender-game-optimization)。
  • 纹理使用 2 的幂尺寸(512/1024/2048/4096)。数据贴图使用 PNG/TGA,法线贴图绝不能使用 JPEG。

Alpha

mat.surface_render_method = "DITHERED"(裁切/alpha-clip,排序正确,适合植被/头发卡片)或 "BLENDED"(真正的透明效果,适合玻璃/UI)。连接 Alpha。glTF 会根据 alpha 设置导出 CLIP/BLEND。游戏中优先使用抖动/裁切。

位移

高度贴图 → Displacement 节点 → Material Output Displacement。mat.displacement_method:BUMP(仅着色,到处适用)、BOTH/DISPLACEMENT(Cycles,需要密集或自适应细分的几何体:Subdivision 修改器 use_adaptive_subdivision)。比例单位为米;8 位图像的中间值为 0.5,32 位 EXR 的中间值为 0。

视图变换(使用合适的视图变换评估材质)

scene.view_settings.view_transform:AgX(默认,适合摄影)、Khronos PBR Neutral(所见即反照率;用于资产/产品审查,以及与 glTF 保持一致)、Standard(必须与像素匹配的 UI/图形/纹理)、ACES 1.3/2.0(VFX 工作流)。切勿在使用 Filmic/AgX 且设置了极端 “Look” 的情况下烘焙或制作纹理。

程序化效果 → 纹理

程序化设置(噪波/Voronoi 磨损、通过 Geometry > Pointiness(Cycles)或 Ambient Occlusion 节点制作曲率遮罩、通过 Bevel 节点法线制作边缘磨损)适用于渲染。对于引擎,应将其烘焙到纹理集(blender-texture-baking)。内置的 Node Wrangler 使用 Ctrl+Shift+T 可完成与 build_pbr_material.py 相同的操作,但需要使用 UI。

注意事项

  • material.use_nodes 在 5.x 中已弃用。新材质已包含 Principled + Output。
  • mat.diffuse_color 仅影响视口(Solid 模式/workbench),不影响渲染或导出。
  • 无界面加载的图像,必须在烘焙或导出前设置 image.colorspace_settings.name。
  • 多个材质共用的纹理图像:只需更改一次色彩空间,因为它是按图像设置的。

评论

支持 Markdown