ホーム < ゲームつくろー! < DirectX技術編 < 半透明テクスチャの作り方
その12 半透明テクスチャの作り方
テクスチャステージによるテクスチャの貼り方やレンダリングステートの設定など、テクスチャを貼る作業は奥深いものですが、意外と困るのがテクスチャ自身の作り方です。特に半透明テクスチャはその作り方に困ります。ここでは半透明のテクスチャをどう作るのか見てみます。
@ 半透明テクスチャ
まず半透明テクスチャのおさらいから。DirectXでは半透明情報を持ついくつかのテクスチャフォーマットをサポートしています。サポートしているフォーマットはD3DFORMATにまとめられています。アルファチャンネルつきのフォーマットを列挙します。
D3DFORMAT | bit | ピクセル情報 (リトルエンディアン) |
説明 |
D3DFMT_A8R8G8B8 | 32 | ■■■■ | 一番有名どころです。1ピクセル1byte(8bit)でメモリ上に色情報が| ABGR | ABGR |...と並んでいると解釈します(リトルエンディアンのため)。 |
D3DFMT_A8B8G8R8 | 32 | ■■■■ | ピクセルの並びが| RGBA | RGBA |と解釈されます。D3DFMT_A8R8G8B8と色の並びが違う点に注意してください。 |
D3DFMT_A2R10G10B10 | 32 | ■■■■ | 色情報が10bitもあります。アルファ情報は2bit(4段階)のみです。 |
D3DFMT_A2B10G10R10 | 32 | ■■■■ | 色情報が10bit。アルファ情報は2bit(4段階)のみです。 |
D3DFMT_A1R5G5B5 | 16 | ■■■■ | アルファ情報が1bitのみです。 |
D3DFMT_A4R4G4B4 | 16 | ■■■■ | アルファ情報が4bit(16段階)あります。 |
D3DFMT_A8R3G3B2 | 16 | ■■■■ | 色情報が少ないのですがアルファ情報は8bitもあります。 |
D3DFMT_A8 | 8 | ■ | 8bitのアルファ情報専用画像と判断されます。 |
D3DFMT_A16B16G16R16 | 64 | ■■■■ | 64bitフォーマットで各色・アルファ情報ともに16bitで表されます。このフォーマットは現行デバイスではまずサポートされていないので扱いは難しそうです。 |
こう並べてみると結構あるものです。基本的に4バイト単位である事もわかりますね。頭がこんがらがるのが色の並びとメモリの並びの食い違いです。例えばD3DFMT_A8R8G8B8は32bitの並びのうちMSB(最上位バイト)にA、LSB(最下位バイト)にBがあると解釈します。しかし、Windowsは32bitのリトルエンディアンを採用しているのでメモリ上ではBGRAとまったく逆さまに並びます。
注目はD3DFMT_A8です。テクスチャが8bitのアルファ情報のみ持つと解釈します。これは256段階のモノクロ画像をアルファ情報として読み込めると言う事です。ただ、実際にテクスチャステージで色情報がどう扱われるのか、私もテストしていないのでわかりません(余力があればテストしてみます(^-^;)
一番有名どころであるD3DFMT_A8R8G8B8にしても1ピクセル32bitの情報を持った絵が必要になりますが、これをぱっと吐き出してくれるツールはなかなかありません。最近のPhotoShopでは出来るようになっているでしょうか(知っている方ご教授ください)。フリーソフトは在りそうでなかなか無いのですが、不透明ドリちゃん(ねこら様作成:http://nekora.main.jp/soft/tga32/)は使い勝手が良さそうに思います。ただしこちらのソフトを使用するにはSusieのプラグインが必要になります(上記サイトにリンクがあります)。サウンドノベルス系作成ソフト「吉里吉里2」に付属するkrkrtpc.exeなども使えます。他に良いソフトがありましたらお知らせいただきたく思います。
DirectX SDKをインストールしている場合、ルートディレクトリ→Bin→DXUtilsにあるDxTex.exeが使えます。これはテクスチャを作成する専用のアプリケーションで、扱い方も簡単です。このアプリケーションが最終的に作り出すのはDirect3Dとの相性が良い「DDS形式」の画像ファイルです。
A DxTex.exeの使用方法
DxTexは簡単に使用できます。
@ アプリケーションを起動後File→Openでアルファ情報の無い画像ファイルを読み込みます。おおよそ有名どころのファイル形式を読み込めます。Photoshopで24bitビットマップを作成している場合、R8G8B8フォーマットとして読み込まれます。
A 画像をA8R8G8B8フォーマットに変更します。これはFormat→Change Surface
Formatを選択し、Surface/Volume Formatの中からA8R8G8B8を選択することでできます。これでテクスチャにアルファ情報が付加されます。
B File→Open Onto Alpha Channel of This Texture...(このテクスチャのアルファチャンネル上にオープン)からモノクロの画像ファイルを選択すると、めでたくアルファ情報のついたテクスチャを作成できます。C
最後にSaveして終了
ただこの付属ソフト、たまに落ちます。根気良く行きましょう。また、合成前の画像はちゃんと取っておいてください。消えるわけではないのですが、DDS形式から元に戻すのは簡単ではありません。
透過情報を持ったテクスチャはDirect3Dで多用します。ツールをうまく使いこなして効率よくゲーム製作をしたいところです。