必要条件

この記事に必要な予備知識

コマンドラインツールとテクスチャファイル形式に関する知識は、このガイドを最大限活用するために役立ちます。

ユーザーレベル

中級

原文 作成日: 2012/12/3
Adobe Texture Format (ATF) tools user's guide

Adobe Texture Format(ATF)は、FlashランタイムのStage3D APIで使用するテクスチャのアセット用に推奨されているファイルタイプです。

この記事では、アドビがATFファイルを作成および管理するために提供している、以下のツールを解説します。

  • png2atf
  • pvr2atf
  • atf2pvr
  • ATFViewer
  • atfinfo
  • pngalpha
  • pngsquare

ATFの基本情報

ATFファイルは圧縮技術に依存しています、また、覚えておくべき制限事項がいくつかあります。

ATF圧縮

ATFファイルは、テクスチャデータを保持するファイルのコンテナです。ATFファイルでは、JPEG XR圧縮と、ブロックベースの圧縮という、2種類の一般的な技術を使った非可逆圧縮が利用できます。JPEG XR圧縮は、記憶領域とネットワーク帯域幅の節約に有効な方法です。ブロックベースの圧縮は、RGBAテクスチャと比較して1:8の一定の比率で、クライアント側のテクスチャメモリの使用量を低減する方法です。ATFは、DXT1ETC1、PVRTCという3種類のブロックベース圧縮をサポートします。


ATFファイルでは、圧縮は2つのレベルで行われます。最初は、オプションのブロックベースの圧縮です。それに加えて、標準の非可逆または可逆のJPEG XR圧縮が適用されます。ATFファイル形式には、以下のような機能もあります。

  • ミップマップの埋め込み
  • 完全なキューブマップ(スカイマップ)の埋め込み(オプション)
  • 内部カラースペース(4:4:4、4:2:2、4:2:0)の選択(オプション)

ATFの制限事項

ATFファイルには、様々なモバイルデバイスの持っているハードウェア機能の直接の影響による制限事項がいくつか存在します。制限事項の内容は、以下の通りです。

  • テクスチャの最大サイズは2048x2048ピクセル。
  • テクスチャのそれぞれの辺の長さは2のべき乗であること。1、2、4、8、16、32、64、128、256、512、1024、2048。
  • ブロックベースの圧縮を使用する場合は、テクスチャの両辺が等しいこと(テクスチャは正方形であること)。1x1、2x2、4x4, 8x8、16x16、32x32、64x64、128x128、256x256、512x512、1024x1024、2048x2048。
  • ブロックベースの圧縮は、現時点では、どんな種類のアルファチャンネル(透過)にも使用できない。
  • テクスチャが最大サイズの2048x2048である場合は、少なくとも1つの標準ミップマップレベルの提供が必要。これは、特定のデバイスでは、テクスチャサイズが最大1024x1024までしか受け入れないため。Falshランタイムは、必要に応じて、テクスチャサイズを1024x1024に自動変換する機能を持つ。

png2atf

png2atfコマンドラインユーティリティは、PNGファイルをATFファイルに変換するツールです。生成されるATFファイルは、TextureクラスのuploadCompressedTextureFromByteArray()メソッドで使用できます。ツールへの入力は、有効なPNGファイルであることだけが条件です。デフォルトの動作では、PNGファイル内の透過情報の有無に応じて、RGBまたはRGBA ATFファイルのいずれかに変換します。png2atfツールは、入力のPNGファイルに透過情報が含まれていない場合、ブロックベースの圧縮をしたテクスチャを作成することもできます。

使用例

PNGファイルを、RGBまたはRBGA ATFファイルに変換する場合は、png2atfコマンドを次の様に実行します。

> png2atf -i test.png -o test.atf . [In 4096 KB][Out 410 KB][Ratio 10.0241%][LZMA:0KB JPEG-XR:410KB]

ブロックベースの圧縮でテクスチャファイルを作成する場合は、パラメーター「-c」を使ってコマンドを実行します。

> png2atf -c -i test.png -o test.atf .......................................................... [In 2048KB][Out 1704KB][Ratio 83.2007%][LZMA:937KB JPEG-XR:766KB]

コマンドラインオプション

表1は、png2atfの利用可能なコマンドラインオプションを示しています。

表1. png2atfのコマンドラインオプション

パラメーター

説明

-i <file>

入力ファイル名を指定する。

-o <file>

出力ファイル名を指定する。

-c

ブロックベースの圧縮による出力ファイルを作成する。DXT1、ETC1、PVRTCの3種類のブロックベースの圧縮テクスチャを作成し、出力されるATFファイルに埋め込む。この指定により生成されたテクスチャがFlash PlayerまたはAIRに読み込まれると、ランタイムはデバイスに適した形式を使用する。
PNGファイルに透過情報が含まれている場合、png2atfは代わりにRGBAテクスチャを作成する。ATFファイルに何が含まれているかを確認する場合は、atfinfoツールを使用する。ATFファイルの作成前に、特定のPNGファイルに透過ピクセルが含まれているか確認する場合は、pngalphaツールを使用する。

-m

キューブマップテクスチャを作成する。1つのキューブマップテクスチャには6つの入力ファイルが必要となる。入力ファイルは、「XXXn.png」という形式で名前を付ける必要がある。XXX」はベースとなるファイル名で、「n」には0~5までの数字を入れる。「例: cube0.png、cube1.png、cube2.png、cube3.png、cube4.png、cube5.png。入力ファイルとしては一番目のファイル(この場合はcube0.png)をパラメーター -iの後に指定するだけでよい。
ファイルの配置は図1を参照。

-n <start>,<end>

ミップマップの自動生成を無効にし、特定範囲のテクスチャレベル(メインのテクスチャとミップマップ)のみを埋め込む。範囲は<start>,<end>の形式で指定し、メインテクスチャはレベル0で、ミップマップはレベル1からになる。このパラメーターを指定しないと、png2atfはすべての適切なミップマップレベルを生成する。ただし、ミップマップを有効にしないほうがいいケース(スカイマップなど)もある。

-x

ミップマップ画像を自動生成する代わりに、入力ファイルから読み込む。入力ファイルは、「XXXnnpng」という形式で名前を付ける必要がある。「XXX」はベースとなるファイル名で、「nn」には00~12までの数字を入れる。ファイル00はメインのテクスチャを指し、ファイル01から12までがミップマップとなる。入力ファイルとしては一番目のファイル(XXX00.png)をパラメーター -xの後に指定するだけでよい。

-s

圧縮作業中のツールからの出力を無効にする。バッチ処理の際にこのパラメーターを使うと便利かもしれない。

-4

JPEG XRエンコーダーに、内部で4:4:4のカラースペースを使うように指示する。これは、ブロックベースの圧縮のデフォルト設定である。RGB/RGBAテクスチャに、赤や青のシェイプの周りににじみがある場合や標準マップの場合などは、このカラースペースを使うのが望ましい。

-2

JPEG XRエンコーダーに、内部で4:2:2のカラースペースを使うように指示する。ブロックベースの圧縮にはこのカラースペースを使用しを進めない。深刻な影響が発生する可能性がある。

-0

JPEG XRエンコーダーに、内部で4:2:0のカラースペースを使うように指示する。一般的に、深刻な影響が発生する可能性があるため、ブロックベースの圧縮にこのカラースペースを使用することは推奨されない。ただし、画像データがモノクロの場合は、このオプションを試す価値はある。

-q <0-180>

量子化レベルを選択し、画像データをどのくらい圧縮するかを決定する。値が大きいと影響が増加し、小さいと減少する。
 値「0」は、可逆圧縮(ロスレス)を意味する(ブロックベースの圧縮テクスチャに対するデフォルト設定)。ブロックベースの圧縮に非可逆圧縮を使用することは推奨されない。ただし、ケースバイケースでこの値を試す価値はある。
RGBおよびRGBAテクスチャのデフォルト値は30。
この値を、JPEG圧縮の圧縮率と混同しないこと。似たような概念ではあるが、異なる非線形領域に適用される。

-f <0-15>

JPEG XR圧縮でどのくらいの数のビットが切り捨てられるかを選択する。このオプションは、量子化レベルとは関係がない。むしろ、画像にどのくらいのノイズが残されるかに影響する。値が大きいとノイズが増加し、小さいと減少する。デフォルト値は0。

pvr2atf

pvr2atfコマンドラインユーティリティは、PVRテクスチャファイルをATFファイルに変換します。このツールで生成されるATFファイルは、TextureクラスのuploadCompressedTextureFromByteArray()メソッドで使用することができます。このツールは、入力ファイルがPVRテクスチャ形式であること以外は、png2atfと同じ様な使い方です。ブロックベースの圧縮には、事前にPVRファイル形式で圧縮された3つのテクスチャを提供する必要があります。

使用例

PVRファイルを、RGBまたはRBGA ATFファイルに変換する場合は、pvr2atfコマンドを次のように実行します。

> pvr2atf -r test.pvr -o test.atf . [In 4096 KB][Out 410 KB][Ratio 10.0241%][LZMA:0KB JPEG-XR:410KB]

ブロックベースの圧縮でテクスチャファイルを作成する場合は、次のようにコマンドを実行します。それぞれのPVRファイルがブロックベースで圧縮された各フォーマットに対応します。

> pvr2atf -d test_dxt1.pvr -e test_etc1.pvr -p test_pvrtc.pvr -o test.atf .......................................................... [In 2048KB][Out 1704KB][Ratio 83.2007%][LZMA:937KB JPEG-XR:766KB]

利用可能なPVRテクスチャの種類

pvr2atftツールは、以下の種類のPVRファイルを入力として扱えます。

  • OpenGL ES 2.0 RGB 888(OGL_RGB_888)
  • OpenGL ES 2.0 RBGA 8888(OGL_RGBA_8888)
  • DirectX 9 DXT 1(D3D_DXT)
  • OpenGL ES 2.0 ETC(ETC_RGB_4BPP)
  • OpenGL ES 2.0 PVRTC 4BPP(OGL_PVRTC4)
  • キューブマップ(PVRTEX_CUBEMAP)
  • ミップマップ(PVRTX_MIPMAP)

反転させたテクスチャは受け入れられません。必ず、反転オプションを無効にしてPVRテクスチャを作成するようにしてください。PVRTexToolのコマンドラインツールの「-yflip0」オプションを使用するか、PVRTexTool GUIツールの「Flipped(反転)」チェックボックスをオフにすると、反転オプションを無効にできます。

コマンドラインオプション

表2では、pvr2atfのコマンドラインオプションを説明します。

表2. pvr2atfのコマンドラインオプション

パラメーター

説明

-r <file>

入力用のRGBまたはRGBA PVRファイルを指定する。このオプションは、 -d、-e、-pと一緒に使うことはできない。

-d <file>

入力用のDXT1 PVRファイルを指定する。

-e <file>

入力用のETC1 PVRファイルを指定する。

-p <file>

入力用のPVRTC PVRファイルを指定する。

-o <file>

出力ファイルを指定する。

-s

圧縮作業中のツールからの出力を無効にする。バッチ処理の際にこのパラメーターを使うと便利かもしれない。

-4

JPEG XRエンコーダーに、内部で4:4:4のカラースペースを使うように指示する。これは、ブロックベースの圧縮のデフォルト設定である。RGB/RGBAテクスチャに、赤や青のシェイプの周りににじみがある場合や標準マップの場合などは、このカラースペースを使うのが望ましい。

-2

JPEG XRエンコーダーに、内部で4:2:2のカラースペースを使うように指示する。ブロックベースの圧縮にはこのカラースペースを使用しを進めない。深刻な影響が発生する可能性がある。

-0

JPEG XRエンコーダーに、内部で4:2:0のカラースペースを使うように指示する。一般的に、深刻な影響が発生する可能性があるため、ブロックベースの圧縮にこのカラースペースを使用することは推奨されない。ただし、画像データがモノクロの場合は、このオプションを試す価値はある。

-q <0-180>

量子化レベルを選択し、画像データをどのくらい圧縮するかを決定する。値が大きいと影響が増加し、小さいと減少する。
 値「0」は、可逆圧縮(ロスレス)を意味する(ブロックベースの圧縮テクスチャに対するデフォルト設定)。ブロックベースの圧縮に非可逆圧縮を使用することは推奨されない。ただし、ケースバイケースでこの値を試す価値はある。
RGBおよびRGBAテクスチャのデフォルト値は30。
この値を、JPEG圧縮の圧縮率と混同しないこと。似たような概念ではあるが、異なる非線形領域に適用される。

-f <0-15>

JPEG XR圧縮でどのくらいの数のビットが切り捨てられるかを選択する。このオプションは、量子化レベルとは関係がない。むしろ、画像にどのくらいのノイズが残されるかに影響する。値が大きいとノイズが増加し、小さいと減少する。デフォルト値は0。

atf2pvr

atf2pvrツールは、ATFファイルをPVRテクスチャファイルに変換します。その際、一つのATFファイルは複数のPVRファイルに分割されます。ブロックベースの圧縮を行ったATFファイルからは3つのPVRファイルが生成されます。それぞれのPVRファイルは拡張子でファイルの種類がわかります。以下は、atf2pvrコマンドを実行する例です。

> atf2pvr -i test.atf -o test

ATFViewer

ATFViewerは、ATFファイルのプレビューや検証に使用するGUIツールで、DXT1、ETC1、PVRTCの圧縮の様子の確認を第一の目的として提供されています。

ATFファイルを表示するには、ATFViewreを起動してから、[File] > [Open]から選択するか、ファイルシステムからウィンドウにドラッグします。するとATFファイルに含まれるコンテンツがメインウインドウに表示されます(図2を参照)。

スニペットプレビューには(下がその内容の例)ActionScript 3のコードでATFファイルを読み込む方法を示したサンプルが表示されます。

[Embed( source = "mytexture.atf", mimeType="application/octet-stream")] public static const CubeTextureAsset:Class; public var context3D:Context3D; public function init():void{ var cubeTexture:CubeTexture = context3D.createCubeTexture(512, Context3DTextureFormat.COMPRESSED, false); var cubeTextureAsset:ByteArray = new CubeTextureAsset() as ByteArray; cubeTexture.uploadCompressedTextureFromByteArray(cubeTextureAsset, 0); }

atfinfo

atfinfoコマンドラインユーティリティは、ATFファイルの内部情報を表示します。サイズ、ミップマップの数、テクスチャの種類、そしてファイルにキューブマップが含まれるかを表示します。また、ActionScript 3のクラスとテスチャフォーマット名も表示します。以下は、atfinfoの使用とその出力の例です:

> atfinfo -i test.atf File Name : test.atf ATF File Type : Compressed (DXT1+ETC1+PVRTC4bpp) Size : 1024x1024 Cube Map : no Mip Map Count : 10 (512x512,256x256,128x128,64x64,32x32,16x16,8x8,4x4,2x2,1x1) AS3 Texture Class : Texture (flash.display3D.Texture) AS3 Texture Format : Context3DTextureFormat.COMPRESSED (flash.display3D.Context3DTextureFormat)

pngalpha

pngalphaコマンドラインユーティリティは、PNGファイルに透明なピクセルが含まれるかを判定します。出力される結果は2つの値のどちらかです:透明なピクセルが存在する場合はalpha、しない場合はopaqueになります。以下は、pngalphaの使用とその出力の例です:

> pngalpha -i test.png alpha

pngsquare

pngsquareは、PNGファイルが正方形か長方形かを判別する際に使用できます。出力される結果は2つの値のどちらかです:PNGファイルが正方形の場合はsquare、長方形の場合はrectangleになります。以下は、pngsquareの使用とその出力の例です:

> pngsquare -i test.png square

次のステップ

ATFファイルを使用する様々な利点についてはATF SDKを使った圧縮テクスチャの使い方入門をご覧下さい。