通道打包为什么存在
环境光遮蔽、粗糙度和金属度,每一项在每个纹素上都只是一个数字。把它们作为三张独立贴图发布,意味着三次下载、三个GPU采样器、三套mipmap——而且是三张RGB图像,各自把同一个数值存了三遍。把它们打包进一张贴图的各个通道,这一切就压缩成一次采样。这款免费的在线ORM贴图打包工具在你的设备上完成打包,也用同样的方式拆分已有贴图。
几种布局
ORM(glTF / Khronos)——红 = 环境光遮蔽,绿 = 粗糙度,蓝 = 金属度。glTF并不把它当作一种优化,这就是规范本身:pbrMetallicRoughnessTexture 把粗糙度存在绿色通道、金属度存在蓝色通道,而 occlusionTexture 按惯例指向同一张图像并读取其红色通道。要导出GLB?那就用这个布局。
RMA——红 = 粗糙度,绿 = 金属度,蓝 = 环境光遮蔽。在Unreal和各类素材商店的资源包里很常见。同样是那三张贴图,只是顺序不同——这也正是把两种布局搞混之后,本该粗糙的材质却变得锃亮的原因。
Unity Metallic/Smoothness——红 = 金属度,Alpha = 光滑度。Unity的Standard着色器从Alpha通道读取光滑度,也就是粗糙度的反值。如果你的源文件是粗糙度贴图,就为该通道打开反转,转换会在打包时一并完成。
自定义——把任意已加载图像的任意通道送入任意输出通道,需要保持恒定的地方则直接填常量。
读取正确的通道
每个通道可以读取亮度(默认值,适合灰度输入),也可以指定读取R、G、B或A中的某一个。后者在源文件本身就是打包贴图、而你正在两种布局之间转换时尤为重要——加载一张RMA贴图,把绿色通道取出来放进金属度槽位。
尺寸不一致的输入
2048的粗糙度贴图配上512的环境光遮蔽烘焙图,是再常见不过的事。打包需要统一的网格,因此默认情况下输出会与最大的输入保持一致,较小的贴图被放大;你也可以强制指定一个正方形分辨率。工具会列出它缩放过哪些输入。
Alpha通道得到了正确处理
浏览器的canvas以预乘Alpha的方式存储像素,这会在Alpha偏低的地方悄悄毁掉颜色精度——对Unity的metallic/smoothness贴图来说更是致命的,因为它最重要的数据恰好就在Alpha里。当打包结果带有任何透明度时,本工具会绕开canvas编码器,逐字节自行写出PNG文件。出于同样的原因,拆分时也按直通Alpha(非预乘)解码。
拆分打包贴图
加载一张已打包的贴图,选择它所用的布局,就能得到四张可下载的灰度PNG,文件名按内容命名。反转Alpha通道,即可从Unity的光滑度贴图中还原出粗糙度。没有任何内容被上传——一切都在本地完成。
Tiny Online Tools







