おもちゃラボ

Unityで遊びを作ってます

テクスチャの黒色部分を透明化する

Unityではテクスチャの設定で「Alpha Source:From Gray Scale」というものがあります。これは画像のグレースケール値をアルファチャネルに設定するものです。

f:id:nn_hokuson:20201031115503p:plain:w400

これをPhotoshopでやろうとすると、マスクを作ったり、アルファチャネルを追加したりと案外大変だったのでpythonでスクリプトを作りました。

import cv2

#読み込み
img = cv2.imread('src.jpg')

#グレースケール化
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)

#アルファチャネルに追加
r, g, b = cv2.split(img)
img = cv2.merge((r, g, b, gray))

#保存
cv2.imwrite('dst.png', img)

やっていることとしては、まずOpenCVでRGB画像を読み込み、これをグレースケール化したものをアルファチャネルに追加してマージしているだけです。

f:id:nn_hokuson:20201031121929p:plain:w500