2024/06/02(日) [n年前の日記]
#1 [cg_tools] 画像の透明部分の境界の色を調整したくて試行錯誤中
png画像の透明部分と不透明部分の境界の色を調整する方法がないか、GIMP 2.10.34 Portable を使って試行錯誤中。
OpenGLでテクスチャを描画した際、アルファチャンネルの値が255(不透明)のところと、0(完全に透明)のところの境界で、妙な線が入ってしまう。OpenGLのテクスチャのフィルタ設定で、GL_NEAREST を指定した時はそういう状態にならないのだけど、GL_LINEAR を指定した時はそういう状態になる。
おそらくだけど、不透明部分のRGB値と、透明部分のRGB値を持ってきて、補間して描画色を決めてるから、妙な線が入るのだろうと思っているけれど…。おそらく透明部分のRGB値は(0.0, 0.0, 0.0) になっているのではないか…。だからうっすらと黒い線(灰色の線)が描画されてしまうのではないかと…。
だとしたら、テクスチャ画像のアルファチャンネルが0のところにも、何かしらのRGB値を入れてやれば改善しそう。ただ、どんなツールを使って作業すればそんなことができるのかが分からない…。
GIMP とレイヤーマスクを使って色々試していたら、アルファチャンネルが0のところにもRGB値を指定できそう、ということは分かった。ピクセル情報タブを表示しておけば、マウスカーソルの位置のRGBA値を確認することができる。A=0でも、RGBにそれらしい値が入ってることは確認できた。
ただ、これをpngで保存すると、そのRGB値が消えてしまう。別のツールを使うしかないのかな…。それとも自分で画像処理をするスクリプトを書くしかないのだろうか…。
OpenGLでテクスチャを描画した際、アルファチャンネルの値が255(不透明)のところと、0(完全に透明)のところの境界で、妙な線が入ってしまう。OpenGLのテクスチャのフィルタ設定で、GL_NEAREST を指定した時はそういう状態にならないのだけど、GL_LINEAR を指定した時はそういう状態になる。
おそらくだけど、不透明部分のRGB値と、透明部分のRGB値を持ってきて、補間して描画色を決めてるから、妙な線が入るのだろうと思っているけれど…。おそらく透明部分のRGB値は(0.0, 0.0, 0.0) になっているのではないか…。だからうっすらと黒い線(灰色の線)が描画されてしまうのではないかと…。
だとしたら、テクスチャ画像のアルファチャンネルが0のところにも、何かしらのRGB値を入れてやれば改善しそう。ただ、どんなツールを使って作業すればそんなことができるのかが分からない…。
GIMP とレイヤーマスクを使って色々試していたら、アルファチャンネルが0のところにもRGB値を指定できそう、ということは分かった。ピクセル情報タブを表示しておけば、マウスカーソルの位置のRGBA値を確認することができる。A=0でも、RGBにそれらしい値が入ってることは確認できた。
ただ、これをpngで保存すると、そのRGB値が消えてしまう。別のツールを使うしかないのかな…。それとも自分で画像処理をするスクリプトを書くしかないのだろうか…。
◎ 2024/06/03追記 :
GIMPでpng保存すると透明部分のRGB値が消えてしまう件は、png保存時のオプション指定で状態を変えることができると分かった。pngで保存(エクスポート)時、オプションの中に、「透明ピクセルの色の値を保存」と言う項目がある。ここにチェックを入れて保存すれば、透明部分のRGB値も残した状態で保存してくれる。たぶん。
[ ツッコむ ]
以上です。