テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

アルファ入りの PVRTC を奇麗にするコツ

これは凄い情報。
Unityで開発する人・iOSで開発する人には是非とも広がって欲しい。



PVRTCのアルファ画像の滲みを減らせる良い方法が見つかった。

keijiro/unity-pvr-cleaner

左が適応前、右が適応後。若干外側ににじみ出ている部分が無くなり、綺麗になっているのが判る。

スクリーンショット 2013-10-02 22.49.49 スクリーンショット 2013-10-02 22.50.10

何をやったかと言うと、下の画像のアルファで透明になる部分に色(灰色)を設定しただけ。
(理由は良くわからないが、アルファを出力した画像のアルファを抜くと、こんな感じの色になる)

スクリーンショット 2013-10-02 22.54.39

詳しくはURLで解説しているので割愛するが、要するにアルファ0描画されないハズの部分が圧縮に影響を与えてしまっているらしい。

なので、その辺りを塗りつぶしてやればOKとの事。
ちなみにPVRTexToolには「アルファ部分を特定色で塗りつぶす」というオプションが有るが、Unityはそれを使っていないらしい。

もうちょっと言えば、黒線等は兎も角、この絵のような「枠線の色が部位によって異なる」場合、その色の延長で塗りつぶすのが最も綺麗に表示される気がする。


使い方は簡単で、まずunity-pvr-clearnerTextureModifierEditorフォルダ以下に配置。

スクリーンショット 2013-10-02 23.16.15

後はファイルのラストがPVRとついているファイルをインポートすると、自動的に色を塗りつぶして圧縮する。例えば「Test A PVR.png」等。

スクリーンショット 2013-10-02 23.13.55


アルファ部分が関係しているとは思わなんだ…

ちなみに、PVRTCは画像の縁の部分(例えばpos(0,1)やpos(512,512)等)が超荒れるのは仕様らしい(ドキュメントに書いてあるとの事)。なので、縁の10pixelは使用を避けるのが良さそうだ。