DDSフォーマットについて

DDSとは?

DDSとは、画像の圧縮フォーマット形式のことです。

MMDのアクセサリやモデルに貼るテクスチャには、BMPやPNG以外にも、DDSフォーマットが使えます。

2011/11/22 追記: MMD ではメモリ節約にはならないとのことです。すみません。

このDDSフォーマット、非可逆圧縮なのでBMPやPNGよりも多少品質は落ちますが、非常に大きな利点が1つあります。

それは、グラフィックカードのメモリを節約することができる ことです。

使用するメモリ量は、BMPやPNGに比べて 1/4~1/8 になります。

これは、DirectXが、DDSフォーマットのテクスチャを圧縮されたままの状態で処理できるためです。

なお、以下に説明するDDSフォーマットの種類を適切に選択すれば、ほとんど品質も落ちません。

もし大きいテクスチャを使いたいけどメモリが・・・と思っている方はぜひ使ってみてください。

下に比較画像を載せます。左がPNG、右がDDS (DXT3)の画像です。

DDSの種類

DDSには、以下のような種類があります。

用途によって使い分けることができます。

通常、DXT1、DXT3、DXT5 を使います。

アルファが不要であればDXT1、アルファ値がはっきりした画像はDXT3、アルファ値がゆっくりと変化する画像はDXT5が有効です。

作り方 - はじめに

メモリ節約に有効なDDSですが、使われない理由の1つとして、Windowsデフォルトで対応していないフォーマットであり、

かつ作るのが少し面倒(対応ソフトの導入や少なさという点で)ということがあります。

現在、DDSフォーマット画像を作成するには、私が知っている範囲では以下の方法があります。

    1. Microsoft純正の、DirectX Texture Tool を使って画像を変換する

    2. PhotoShopのプラグインを利用する

    3. GIMPプラグインを利用する

    4. Paint.NETを利用する

DirectX Texture Toolは変換方法が分かりにくいので、下に説明を記載しています。

その他画像ソフトについては、リンクを掲載しました。

追記:2011/11/04 GIMPやPaint.NETでも使えるという情報をいただきました。

DirectX Texture Tool

DirectX Texture Tool は、面倒なことにDirectX SDK に同梱されています。

ですので、DirectX SDK をインストールする必要があります。

1. ツールのダウンロードとインストール

下記サイトから、DirectX SDK をダウンロードし、インストールしてください。

DirectX ダウンロード

http://msdn.microsoft.com/ja-jp/directx/aa937788

2. ツールの起動

スタートメニュー → プログラム → Microsoft DirectX SDK → DirectX Utilities → DirectX Texture Tool

3. 画像の読み込み

File → Open から、変換元の画像を読み込みます。

4. DDSに変換

Format → Change Surface Format... でダイアログが開きます。

ダイアログから、変換先フォーマットを選択します。

DXT1、DXT3、DXT5 のフォーマット項目名は以下の通りです。

DXT1 : Four CC 4-bit: DXT 1

DXT3 : Four CC 8-bit: DXT 3

DXT5 : Four CC 8-bit: DXT 5

これでDDSフォーマットに変換できました。

5. 保存

File → Save から、画像を保存します。

PhotoShopプラグイン

PhotoShopのプラグインが、NVIDIAから提供されています。

NVIDIA Texture Tools for Adobe Photoshop

http://developer.nvidia.com/nvidia-texture-tools-adobe-photoshop

これで、PhotoShopでDDSフォーマット画像の読み込み、保存ができるようになります。

また、Windowsエクスプローラ上でサムネイルが表示されるようになります。

こちらのほうが導入が楽なのですが、もちろんPhotoShop本体が必要です。

GIMPプラグイン

GIMPでDDSを扱えるようになるプラグインが提供されています。

GIMP DDS Plugin

http://code.google.com/p/gimp-dds/

Paint.NET

Paint.NETではデフォルトでDDSを扱えます。

Paint.NET

http://www.paint.net/

As of 2011/11/04