About紹介概要TexTargaとは、 RGB565やS3TCなど、Targa(TGA)で表現できないフォーマットについて、 RGB8またはRGBA8というTargaで表現できるフォーマットに変換し、 Targaのピクセルデータ領域に変換したデータを格納したTargaの拡張フォーマット。 付加情報領域に、テクスチャのフォーマットを示す文字列(例えばRGB565,S3TC_DXT1など)を埋め込む。 狙いTarga形式のイメージファイルは多くの3Dモデリングソフトで使用できる。 しかし、グラフィックエンジンでしか扱えない形式(RGB565、S3TCなど)を 扱うことができる3Dモデリングソフトはそれに比べて少ない。 発端3Dモデル&アニメーションの中間データとして「Collada」が存在する。 しかし、3Dモデルに貼り付けるテクスチャには、 中間データとして位置づけられるフォーマットが存在しない。 そういうフォーマットがあってもいいのではないか? そこで、グラフィックエンジンでしか扱えない形式をTarga形式に変換することで 多くの3Dモデリングソフトで使用できるようになり、また、 グラフィックエンジンが出力する絵により近いレンダリング結果を 3Dモデリングソフト上で確認することができるようになる。 Targaフォーマットをベースとして採用テクスチャの中間フォーマット、全く新しいフォーマットを作ることも可能だ。 しかし、新しいフォーマットだと、テクスチャを扱うアプリケーション(例:Maya、Photoshop、etc...)ごとに プラグインを開発する必要が出てくる。それは避けたい。 更にTexTargaフォーマットは、テクスチャのフォーマットを示す文字列や元データを拡張領域に埋め込むことで、 最終的に使用するプラットフォームに最適化されたテクスチャデータに変換することを可能にする。 想定しているデータフローそこで、いろんなアプリケーションでデフォルトで使え、かつ独自に拡張可能なイメージフォーマット、Targa(以下、TGA)を選択した。 拡張する事柄データ量の少ないテクスチャフォーマットに対応作成した3Dモデルを描画する環境が、もしメモリを気にしない環境であれば Targaがサポートする24bit(RGB8)、もしくは32bit(RGBA8)のピクセルフォーマットを選択すれば解決する。 しかし、メモリを節約しないといけない環境(例:家庭用ゲーム機,旧世代のPC,etc...)で描画するのであれば 極力テクスチャのデータ量は節約したいものだ。 そこで、テクスチャに求めるピクセルフォーマットを埋め込むことにした。 「このテクスチャは地面に貼り付けるものだから"DXT1"」 「このテクスチャはは2値のアルファを持っているだけなので"A1"」 といったように、テクスチャの使い道からピクセルフォーマットを決定する。 TGAのイメージデータ領域に存在するピクセルは、指定したピクセルフォーマットで減色する。 減色前の元のピクセルは拡張領域にバックアップしておく。 こうすることで、テクスチャを扱うアプリケーションで減色されたデータをプレビューできるようになる。 想定しているデータフローその1
その2
設計思想設計思想
フォーマット
データの例(上がデータの先頭。下がデータの末尾。)
タグリファレンスPIXEL_FORMAT(必須)データ部には、ピクセルフォーマットを示す文字列が入る。 文字列は必ず終端文字(¥0)を持つ。 History
ピクセルフォーマットを示す文字列一覧。 A4 A8 L4 L8 LA4 LA8 I4 I8 RGB232 RGB565 RGB8 RGB5A1 RGBA2 RGBA4 RGBA6 RGBA8 RGBA_S3TC_DXT1 RGBA_S3TC_DXT3 RGBA_S3TC_DXT5 SRC_DATA(任意)データ部には、変換前のピクセルバイナリデータが入る。 ピクセルバイナリデータは、TGAと同様に、 BGRA(bitsPerPixel=24のときはBGR)のブロックがwidth x height個、格納されている。 |