DDS 形式の画像ファイルを作成する

前田稔(Maeda Minoru)の超初心者のプログラム入門

DDS(DDSURFACEDESC)は DirectX7 から使われ始めたαチャンネル付の画像です。
32ビット BMP では、RGB の24ビットだけが有効で、一般的にαビットは使われていません。
このαビット(8 bit)を利用して白黒 256 階調の画像を付加したものがαチャンネル付の画像です。
さらに DDS にはミップマップに対応したテクスチャおよびキューブ環境マップも格納できるようです。
詳細は DIrctX のヘルプファイルを参照して下さい。

DDS 形式のファイルを作成するツール DirectX Texture Tool(dxtex.exe) が DirectX に添付されています。
DirectX8 ではSDKのフォルダーの \bin\DXUtils に格納されています。
DirectX9 ではSDKのフォルダーの \Utilities に格納されています。
August 2007 では C:\Program Files\Microsoft DirectX SDK (August 2007)\Utilities\Bin\x86\ に格納されています。
スタートボタンをクリックして [DirectX Utilities] を選び DirectX Texture Tool から起動して下さい。

DirectX Texture Tool の操作概要

  1. ページ先頭の画面左端の画像はベースとなる通常の BMP 画像(kishi.bmp)です。
  2. 画面中央の画像は背景を透明にするマスク画像(kishi_a.bmp)です。
    私は D-PIXED を使って、白黒二階調の画像を16色パレットで保存しました。
  3. 画面右端の画像は周囲をぼかすマスク画像(kishimsk.bmp)です。
    私は D-PIXED を使って、白黒256色パレットで保存しました。
  4. DDS 形式のファイルを作成する方法です。
    1. DirectX Texture Tool(dxtex.exe) を起動します。
    2. [File][Open] メニューから kishi.bmp を入力します。
      この段階でファイル名の後に _a が付けられている kishi_a.bmp も読み込まれます。
    3. [View][Alpha Channel Only] でマスク画像だけが表示されます。
    4. 画面右端の画像をマスクとして使うときは [File][Open As Alpha Channel] メニューから kishimsk.bmp を入力します。
    5. [File][Save] から保存するとDDS形式の画像ファイルが作成されます。
  5. 現在の所、DDS形式の画像ファイルを表示できるのは、一部の画像ツールと dxtex.exe だけです。
    Windows Program でDDS画像を描画するプログラムを掲載しています。
    詳細は αチャンネル付の DDS 画像ファイルを表示する を参照して下さい。
  6. DirectX で DDS 形式の画像ファイルを表示するプログラムはホームページを参照して下さい。
    DDS でαブレンディングする

ジャギーを取る

  1. 画像の輪郭部分で、ぎざぎざのノイズをジャギーと言います。
    ゲームでは何故かジャギーが極端に嫌われ、ジャギーがある画像を使っているだけで評価が下がります。 (;_;)
    そこで中間色を発生させて、ギザギザを消す作業(アンチエイリアス)を行います。
    昔は画像を拡大して、ドットごとに修正していたのですが、現在ではマスク画像を使ってアルファブレンディングします。
  2. 背景画像とアルファブレンディングするには「ぼかし」をかけたマスク画像が必要です。
    Photoshop で「ぼかし」をかけるには、白黒265階調に設定して[フィルタ][ぼかし]を実行します。
    Photoshop は高価なので、今回はネットからダウンロードした Edge2 を使ってマスク画像を作成してみましょう。
  3. Edge2 を起動して、元の画像(ファイル名.bmp)を表示して下さい。
    スポイトツールで背景色の領域を選択して[編集][コピー]します。
    [編集][新しいウインドウに貼り付け]で背景領域をコピーした画像を貼り付けます。
    機体部分を白で、背景部分を黒で塗りつぶします。
    [イメージ][効果][ぼかし強]で機体部分の白をぼかします。
    ぼかした画像を「ファイル名_a.bmp」で保存します。

  4. スタート [DirectX Utilities] から DirectX Texture Tool を起動します。
    [File][Open] メニューから「ファイル名.bmp」の画像を入力します。
    この段階でファイル名の後に _a が付けられている画像がマスクとして読み込まれます。
    [View][Alpha Channel Only] でマスク画像だけが表示されます。
  5. [File][Save] から保存するとDDS形式の画像ファイルが作成されます。
    周辺部は背景画像とアルファブレンディングするのですが、それ以外のジャギーは画像を拡大してドット単位に修正するのでしょうか? (^_^;)

超初心者のプログラム入門(DirectX9 game program)