Blockbench PBR材质完全指南3步搞定金属度粗糙度贴图与MER通道合并【免费下载链接】blockbenchBlockbench - A low poly 3D model editor项目地址: https://gitcode.com/GitHub_Trending/bl/blockbench3D模型里的金属件进引擎后常常纸板化——没有反射、发闷PBR质感完全丢失。问题根源通常只有一个材质缺金属度和粗糙度数据。Blockbench PBR材质用了一个很轻的办法解决它把金属度、发射度、粗糙度数据塞进同一张贴图的 RGB 通道即 MER 贴图挂到材质组上低多边形模型也能立刻拥有接近真实金属件的材质表现。为什么需要Blockbench PBR材质表面由两张贴灰度图描述PBR基于物理的渲染是按物理规律计算光线与表面交互的照明模型。它的好处是不用手动画高光而是给引擎一组描述性贴图由光照系统自己算出真实的反射效果。其中最关键的两个描述就是金属度与粗糙度金属度贴图告诉着色器这块区域有多像金属。纯黑是完全非金属木头、布料纯白是纯金属钢板、币面中间灰是过渡状态比如氧化金属或喷涂层。还有一个容易忽略的点真实金属反射的是环境而不是自身颜色所以基础色里金属区域别用高饱和色硬画金色光泽要靠反射去表现。粗糙度贴图控制反射的散开程度。纯黑是镜面光滑镜子、湿滑面纯白是完全粗糙砂纸、水泥中间灰介于两者之间塑料、皮革。粗糙区域多撒一些噪点细节质感会更耐看。金属度灰度速查表灰度值表面属性典型材质0纯黑完全非金属木材、布料、皮革128 左右中灰半金属过渡氧化金属、喷漆表面255纯白纯金属钢、铜、镀金件粗糙度灰度速查表灰度值表面属性典型材质0纯黑镜面光滑镜面、湿滑表面128 左右中灰半光滑塑料、磨损金属255纯白完全粗糙砂纸、混凝土绘制时记住一条主线就够了金属部件涂白、非金属涂黑磨损和划痕越多粗糙度数值越高。MER通道三步合并法一条数据流装进一张图每种属性单独存一张贴图内存开销会迅速膨胀社区因此流行通道打包把不同数据写进同一张 RGBA 贴图的不同通道。Blockbench 遵循 MER 方案R 通道 → 金属度G 通道 → 发射度B 通道 → 粗糙度A 通道→ 可留给透明度或其他用途合并三步① 建一张与基础色同分辨率的贴图低多边形模型 64x64 到 256x256 足够② 分别把金属度灰度画进 R 通道、发射度画进 G 通道、粗糙度画进 B 通道③ 在材质组里把这张贴图标记为mer通道。渲染时js/texturing/texture_groups.js 的updateMaterial()会把各通道抽取成对应的 PBR 贴图generateMap(0, metalnessMap); // R → 金属度 generateMap(1, emissiveMap); // G → 发射度 generateMap(2, roughnessMap); // B → 粗糙度发射度通道有个细节值得注意它不是一张独立的发光颜色图而是拿基础色乘以 G 通道灰度生成的发光色 基础色 × G/255。所以某处 G255 时该区域会用自己的基础色发亮G0 则完全不发光。在纹理列表里每张图的角色由 js/texturing/textures.js 中的pbr_channel属性管理右键任意贴图可在 color / normal / height / mer 之间切换立即生效。Blockbench材质组创建与配置流程材质组Texture Group是把多张贴图组织成一个 PBR 材质单元的容器操作路径如下在纹理面板选中基础色贴图可多选带入其余贴图点击Create Material按钮。注意当前格式必须支持 PBR 才会出现这个入口。创建时 Blockbench 会按文件名自动推断通道名称含height的归到高度通道含[._-]normal的归到法线通道含[._-]mer[._-]的归到 mer 通道。所以把文件命名为gear_mer.png就能少一步手动切换。打开材质配置面板为 color / MER / 高度或法线槽位分别选择指定贴图或直接填统一数值。挂了 MER 贴图后逐像素灰度生效不挂贴图时在配置里直接输入统一的金属度、粗糙度值即可。切到材质显示模式查看效果。绘制 mer 或 height 贴图时材质会实时更新环境光强度默认 0.8模型偏灰偏闷时可以在这附近微调。从基础色一键生成金属粗糙度数据不想手绘三个通道的话纹理菜单里的Generate PBR Map工具可以从基础色贴图里采样数据支持平均值、亮度、饱和度、色相或直接取 R/G/B 通道作为来源再经过输入范围、输出范围重映射还能勾选反转。生成结果会以附加图层的方式写入 MER 贴图的对应通道。一个常见用法是按亮度提取粗糙度基础色亮的区域更粗糙或勾选反转后暗处更粗糙并把参数存成预设套用到后续贴图。完整案例青铜齿轮从绘制到导出以一枚青铜齿轮为例全程沿用上面建立的低多边形 PBR 工作流。绘制青铜齿轮的MER贴图基础色64x64齿轮齿面填中亮度的青铜色轴孔处略深点缀几个暗色斑点模拟氧化坑木质轴段用棕色。记住金属色别太饱和给反射留余地。MER 贴图同为 64x64R 通道齿轮金属部分纯白 255木质轴段纯黑 0。G 通道整张纯黑这件没有自发光需求。B 通道齿轮主体约 128 中灰磨损金属齿缘和轮体外圈叠加 150–200 的划痕噪点磨损更粗糙木质轴段给约 220 的高值木头本身粗糙。材质组配置基础色挂到 color 槽、MER 贴图挂到 mer 槽。挂了贴图后统一数值不再起作用最终效果由你画的逐像素数据决定。预览调优在材质模式下观察齿面高光反射、边缘磨损与木轴的哑光感。如果金属显得发蜡把齿面 B 通道数值调低降低粗糙度。导出GLB/OBJ与PBR纹理选项跨平台交换首选GLBGLTF 导出器js/lib/GLTFExporter.js会把金属度/粗糙度数据打包进 glTF 标准的pbrMetallicRoughness字段Unity、Unreal、three.js 都能直接读取。选 OBJ 时材质会被写入配套的.mtl文件但 MTL 对 PBR 贴图的支持有限更适合简单展示或几何交换。另外提醒贴图务必用无损格式PNG保存。MER 贴图一旦走 JPEG 之类的有损压缩通道数据会被压缩噪点污染金属和粗糙度会糊在一起。材质不生效排查清单⚠️ 刚上手 PBR 时几乎都会踩下面这些坑动手排查前先过一遍这张表现象可能原因处理办法金属区域无反光整体像塑料MER 贴图未标记为 mer 通道或 R 通道没填数据右键贴图把 PBR 通道切到 mer检查 R 通道黑白数据粗糙度怎么调都没变化B 通道为空全 0或被压缩噪点污染重新绘制灰度贴图存为无损 PNG整体偏亮 / 偏暗环境光强度不合适把材质环境光强度调到 0.5–1.0 区间微调贴图拉伸金属区错位基础色与 MER 分辨率或 UV 不一致统一分辨率如都 64x64 或 256x256对齐 UV 布局画了自发光区域却发黑G 通道为 0G255 时按基础色全亮发光G0 则无发光引擎里识别不出金属属性导出了 OBJPBR 贴图丢失改导 GLB或单独交付金属度/粗糙度贴图如果都不命中再回头核对两点材质组类型是否开启只有 is_material 的材质组会参与材质构建以及纹理的pbr_channel是否指对了角色。下一步次表面散射、texture_set 导入与插件自动化金属做完之后路还可以往这几个方向走次表面散射Bedrock 的 texture_set 支持 subsurface 数值材质配置里有对应开关格式版本会升到 1.21.30玉石、皮肤这类半透明材质会更可信。手上若已有现成的texture_set.json资源Blockbench 可以直接导入并自动还原材质组与通道分配。参考照片工作流动手前拍几张真实金属、粗糙表面的照片作为参考图放进视口对照绘制纹理质量会明显提升。插件自动化批量模型需要同款材质时用 Blockbench APIjs/api.ts写个插件从基础色一键生成 MER 贴图——前面提到的 Generate PBR Map 预设本质上就是这个思路的官方实现。金属度粗糙度贴图是低多边形模型上性价比最高的一次升级几何不动质感先变。先按上面的流程做一枚青铜齿轮等反射在材质模式下亮起来的那一刻这套工作流你就彻底通了。【免费下载链接】blockbenchBlockbench - A low poly 3D model editor项目地址: https://gitcode.com/GitHub_Trending/bl/blockbench创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考