• 追加された行はこの色です。
  • 削除された行はこの色です。
* About [#kdec7f9e]

** 紹介 [#kdec7f9e]
*** 概要 [#m5ac0804]
TexTargaとは、
RGB565やS3TCなど、Targa(TGA)で表現できないフォーマットについて、
RGB8またはRGBA8というTargaで表現できるフォーマットに変換し、
Targaのピクセルデータ領域に変換したデータを格納したTargaの拡張フォーマット。
付加情報領域に、テクスチャのフォーマットを示す文字列(例えばRGB565,S3TC_DXT1など)を埋め込む。
*** 狙い [#lb5c3eb7]
Targa形式のイメージファイルは多くの3Dモデリングソフトで使用できる。
しかし、グラフィックエンジンでしか扱えない形式(RGB565、S3TCなど)を
扱うことができる3Dモデリングソフトはそれに比べて少ない。
** 発端 [#ia81ff98]
3Dモデル&アニメーションの中間データとして「Collada」が存在する。
しかし、3Dモデルに貼り付けるテクスチャには、
中間データとして位置づけられるフォーマットが存在しない。
そういうフォーマットがあってもいいのではないか?

そこで、グラフィックエンジンでしか扱えない形式をTarga形式に変換することで
多くの3Dモデリングソフトで使用できるようになり、また、
グラフィックエンジンが出力する絵により近いレンダリング結果を
3Dモデリングソフト上で確認することができるようになる。
** Targaフォーマットをベースとして採用 [#oebe0b19]
テクスチャの中間フォーマット、全く新しいフォーマットを作ることも可能だ。
しかし、新しいフォーマットだと、テクスチャを扱うアプリケーション(例:Maya、Photoshop、etc...)ごとに
プラグインを開発する必要が出てくる。それは避けたい。

更にTexTargaフォーマットは、テクスチャのフォーマットを示す文字列や元データを拡張領域に埋め込むことで、
最終的に使用するプラットフォームに最適化されたテクスチャデータに変換することを可能にする。
*** 想定しているデータフロー [#ydb7b399]
そこで、いろんなアプリケーションでデフォルトで使え、かつ独自に拡張可能なイメージフォーマット、Targa(以下、TGA)を選択した。

** 拡張する事柄 [#i3b38924]
*** データ量の少ないテクスチャフォーマットに対応 [#s8b2772b]
作成した3Dモデルを描画する環境が、もしメモリを気にしない環境であれば
Targaがサポートする24bit(RGB8)、もしくは32bit(RGBA8)のピクセルフォーマットを選択すれば解決する。
しかし、メモリを節約しないといけない環境(例:家庭用ゲーム機,旧世代のPC,etc...)で描画するのであれば
極力テクスチャのデータ量は節約したいものだ。

そこで、テクスチャに求めるピクセルフォーマットを埋め込むことにした。
「このテクスチャは地面に貼り付けるものだから"DXT1"」
「このテクスチャはは2値のアルファを持っているだけなので"A1"」
といったように、テクスチャの使い道からピクセルフォーマットを決定する。

TGAのイメージデータ領域に存在するピクセルは、指定したピクセルフォーマットで減色する。
減色前の元のピクセルは拡張領域にバックアップしておく。
こうすることで、テクスチャを扱うアプリケーションで減色されたデータをプレビューできるようになる。

** 想定しているデータフロー [#ydb7b399]
その1
+PhotoshopからTexTarga形式で画像を出力する。
+PhotoshopからTexTarga形式で画像を出力する。(プラグインはまだ作成していない)
+出力した画像を用いて3Dモデリングソフトでモデルを作成する。
+作成したモデルをColladaなど中間データとして出力する。その際、TexTargaも一緒にコピーする。
+モデルの中間データ、およびTexTargaデータを、プラットフォームに最適化されたデータに変換する。

その2
+Photoshop、GIMPなどの画像処理ソフトからTarga形式で画像を出力する。
+出力した画像をtextga_convを使ってTexTarga形式に変換する。
+以下、その1の2以降の流れと同じ。
*** 設計思想 [#f19f7dd2]

** 設計思想 [#f19f7dd2]
- Colladaと併せて使いたい。
- あくまで中間フォーマット。プラットフォームに最適化されたフォーマットに変換することを推奨。
- 最終的にプラットフォームに最適化できればいい。だから、データサイズは気にしない。
** フォーマット [#qc720fa9]
- TGAの拡張領域の先頭に"TEX_TARGA"の文字列がある。
- その後、タグ名とタグ名に対応したデータ部のペアが連続する。(タグリファレンス参照)
- タグ名は必ず終端文字(¥0)を持つ。

データの例(上がデータの先頭。下がデータの末尾。)
|BGCOLOR(ORANGE):TGA Header|
|colourmaptypeは 2(未圧縮RGB)限定。|
|bitsPerPixelは 24or32限定。|
|BGCOLOR(ORANGE):Pixel Data|
|ピクセルデータ(width x height x bitsPerPixel)|
|BGCOLOR(ORANGE):Extension Area|
|文字列"TEX_TARGA"|
|タグ名と対応するデータ部のペアが任意の数並ぶ(例:"PIXEL_FORMAT""RGBA8")|
** タグリファレンス [#l189caa9]
*** PIXEL_FORMAT(必須) [#k7c60ffd]
データ部には、ピクセルフォーマットを示す文字列が入る。
文字列は必ず終端文字(¥0)を持つ。

ピクセルフォーマットを示す文字列一覧。
 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(任意) [#a9a52151]
データ部には、変換前のピクセルバイナリデータが入る。
ピクセルバイナリデータは、TGAと同様に、
BGRA(bitsPerPixel=24のときはBGR)のブロックがwidth x height個、格納されている。


    ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS