Imagemagick 翻转通道并创建 alpha 通道(Unreal RMA 到 Unity RMA)

Imagemagick flip channels and create an alpha channel (Unreal RMA to Unity RMA)

所以我有一堆带有 RMAO 贴图的 3D 模型来定义 PBR 通道。在 unreal engine 中,这样做是为了在遮罩纹理中指定粗糙度、金属度和环境遮挡通道:

现在我想将我的资产转移到 unity,但 unity 使用不同的系统并具有以下设置:

所以基本上这可以归结为执行以下操作:

R <- B
G <- R
B <- pure black
A <- Inverted G

我试过这个命令magick convert 'texture.png' -alpha opaque -separate -swap 0,2 -swap 1,2 -swap 3,2 -swap 2,2 -combine png32:texture_new.png但结果没有单独的 alpha 通道,所以不透明度在 RGB 通道上。

所以我基本上想要做的是将 RGB 纹理转换为 RGBA 纹理,稍微翻转通道,然后反转 alpha 通道。这可以用 imagemagick 实现吗?

我不使用 Unreal 或 Unity,所以我无法检查它,但如果它不起作用,它可能会帮助您找到一种方法。

我正在布置它,所以每一行都应该产生您需要的输出通道之一:

magick texture.png -write MPR:orig -channel B -separate \
    \( MPR:orig -channel R -separate \)                 \
    \( MPR:orig -channel R -separate -threshold 100% \) \
    \( MPR:orig -channel G -separate -negate \)         \
    -combine PNG32:result.png

顺便说一下,magick convert ... 几乎总是


如果不行,你可以在每个阶段输出每个通道,看看哪个是错误的:

magick texture.png -write MPR:orig -channel B -separate -write newR.png    \
    \( MPR:orig -channel R -separate                    -write newG.png \) \
    \( MPR:orig -channel R -separate -threshold 100%    -write newB.png \) \
    \( MPR:orig -channel G -separate -negate            -write newA.png \) \
    -combine PNG32:result.png