第4.1章: テクスチャ (.paa, .edds, .tga)
ホーム | テクスチャ | 次: 3Dモデル >>
はじめに
DayZで目にするすべての表面 -- 武器のスキン、衣服、地形、UIアイコン -- はテクスチャファイルによって定義されています。エンジンは実行時にPAAと呼ばれる独自の圧縮フォーマットを使用しますが、開発中はビルドプロセスで変換されるいくつかのソースフォーマットで作業します。これらのフォーマット、テクスチャをマテリアルに紐付ける命名規則、そしてエンジンが適用する解像度ルールを理解することは、DayZモッドのビジュアルコンテンツを作成するための基本です。
この章では、遭遇するすべてのテクスチャフォーマット、エンジンが各テクスチャをどのように解釈するかを示すサフィックス命名システム、解像度とアルファチャンネルの要件、そしてフォーマット間の変換の実際のワークフローについて説明します。
目次
- テクスチャフォーマットの概要
- PAAフォーマット
- EDDSフォーマット
- TGAフォーマット
- PNGフォーマット
- テクスチャ命名規則
- 解像度の要件
- アルファチャンネルのサポート
- フォーマット間の変換
- テクスチャの品質と圧縮
- 実践的な例
- よくある間違い
- ベストプラクティス
テクスチャフォーマットの概要
DayZは開発パイプラインの各段階で4つのテクスチャフォーマットを使用します。
| フォーマット | 拡張子 | 役割 | アルファ対応 | 使用場面 |
|---|---|---|---|---|
| PAA | .paa | ランタイムゲームフォーマット(圧縮済み) | 対応 | 最終ビルド、PBOに同梱 |
| EDDS | .edds | エディタ/中間DDSバリアント | 対応 | Object Builderプレビュー、自動変換 |
| TGA | .tga | 非圧縮ソースアートワーク | 対応 | アーティストのワークスペース、Photoshop/GIMPエクスポート |
| PNG | .png | ポータブルソースフォーマット | 対応 | UIテクスチャ、外部ツール |
一般的なワークフローは以下の通りです: ソース (TGA/PNG) --> DayZ Tools変換 --> PAA (ゲーム対応)
PAAフォーマット
PAA (PAcked Arma) は、Enfusionエンジンが実行時に使用するネイティブ圧縮テクスチャフォーマットです。PBOに同梱されるすべてのテクスチャはPAAフォーマットである必要があります(またはバイナライズ中に変換されます)。
特徴
- 圧縮済み: アルファチャンネルの有無と品質設定に応じて、内部的にDXT1、DXT5、またはARGB8888圧縮を使用します。
- ミップマップ付き: PAAファイルには変換中に自動的に生成される完全なミップマップチェーンが含まれます。これはレンダリングパフォーマンスに不可欠です -- エンジンは距離に基づいて適切なミップレベルを選択します。
- 2の累乗の寸法: エンジンはPAAテクスチャの寸法が2の累乗(256、512、1024、2048、4096)であることを要求します。
- 実行時は読み取り専用: エンジンはPBOからPAAファイルを直接ロードします。PAAファイルを編集することはありません -- ソースを編集して再変換します。
内部圧縮タイプ
| タイプ | アルファ | 品質 | 用途 |
|---|---|---|---|
| DXT1 | なし(1ビット) | 良好、6:1比率 | 不透明テクスチャ、地形 |
| DXT5 | 完全8ビット | 良好、4:1比率 | スムーズアルファ付きテクスチャ(ガラス、植物) |
| ARGB4444 | 完全4ビット | 中程度 | UIテクスチャ、小さなアイコン |
| ARGB8888 | 完全8ビット | ロスレス | デバッグ、最高品質(大きなファイルサイズ) |
| AI88 | グレースケール + アルファ | 良好 | ノーマルマップ、グレースケールマスク |
PAAファイルが表示される場面
- アンパック済みのバニラゲームデータ内(
dta/およびアドオンPBO) - TexView2変換の出力として
- ソーステクスチャを処理するBinarizeの出力として
- ビルド後のモッドの最終PBO内
EDDSフォーマット
EDDSは、主にDayZのObject Builderおよびエディタツールで使用される中間テクスチャフォーマットです。標準的なDirectDraw Surface (DDS) フォーマットのバリアントで、エンジン固有のメタデータが含まれています。
特徴
- プレビューフォーマット: Object BuilderはEDDSテクスチャを直接表示できるため、モデル作成中に便利です。
- PAAへの自動変換: BinarizeまたはAddonBuilder(
-packonlyなし)を実行すると、ソースツリー内のEDDSファイルは自動的にPAAに変換されます。 - PAAより大きい: EDDSファイルは配布用に最適化されていません -- エディタの利便性のために存在します。
- DayZ-Samplesフォーマット: Bohemiaが提供する公式DayZ-SamplesではEDDSテクスチャが広く使用されています。
EDDSを使ったワークフロー
アーティストがTGA/PNGソースを作成
--> PhotoshopのDDSプラグインがプレビュー用にEDDSをエクスポート
--> Object BuilderがモデルにEDDSを表示
--> BinarizeがEDDSをPAAに変換してPBOに格納ヒント: 必要であればEDDSを完全にスキップすることができます。TexView2を使用してソーステクスチャをPAAに直接変換し、マテリアル内でPAAパスを参照してください。EDDSは便利ですが、必須ではありません。
TGAフォーマット
TGA (Truevision TGA / Targa) は、DayZテクスチャ作業の伝統的な非圧縮ソースフォーマットです。多くのバニラDayZテクスチャはもともとTGAファイルとして作成されました。
特徴
- 非圧縮: 品質損失なし、フルカラー深度(24ビットまたはアルファ付き32ビット)。
- 大きなファイルサイズ: アルファ付きの2048x2048 TGAは約16 MBです。
- 専用チャンネルのアルファ: TGAは適切な8ビットアルファチャンネル(32ビットTGA)をサポートし、PAAの透明度に直接マッピングされます。
- TexView2互換: TexView2はTGAファイルを直接開いてPAAに変換できます。
TGAの使いどころ
- ゼロから作成するテクスチャのマスターソースファイルとして。
- Substance PainterやPhotoshopからDayZ用にエクスポートする場合。
- DayZ-SamplesのドキュメントやコミュニティチュートリアルでソースフォーマットとしてTGAが指定されている場合。
TGAエクスポート設定
DayZ変換用にTGAをエクスポートする場合:
- ビット深度: 32ビット(アルファが必要な場合)または24ビット(不透明テクスチャ)
- 圧縮: なし(非圧縮)
- 方向: 左下原点(標準TGA方向)
- 解像度: 2の累乗である必要があります(解像度の要件を参照)
PNGフォーマット
PNG (Portable Network Graphics) は広くサポートされており、特にUIテクスチャ用の代替ソースフォーマットとして使用できます。
特徴
- ロスレス圧縮: TGAより小さいですが完全な品質を維持します。
- 完全なアルファチャンネル: 32ビットPNGは8ビットアルファをサポートします。
- TexView2互換: TexView2はPNGを開いてPAAに変換できます。
- UI向き: 多くのモッドのUIイメージセットやアイコンはソースフォーマットとしてPNGを使用しています。
PNGの使いどころ
- UIテクスチャとアイコン: PNGはイメージセットやHUD要素に実用的な選択肢です。
- シンプルなリテクスチャ: 複雑なアルファを持たないカラー/ディフューズマップのみが必要な場合。
- クロスツールワークフロー: PNGは画像エディタ、Webツール、スクリプト全体で普遍的にサポートされています。
注意: PNGはBohemiaの公式ソースフォーマットではありません -- 彼らはTGAを推奨しています。ただし、変換ツールはPNGを問題なく処理でき、多くのモッダーが正常に使用しています。
テクスチャ命名規則
DayZは各テクスチャの役割を識別するための厳格なサフィックスシステムを使用しています。エンジンとマテリアルはファイル名でテクスチャを参照し、サフィックスはエンジンと他のモッダーの両方にテクスチャが含むデータの種類を伝えます。
必須サフィックス
| サフィックス | 正式名称 | 目的 | 一般的なフォーマット |
|---|---|---|---|
_co | Color / Diffuse | 表面のベースカラー(アルベド) | RGB、オプションのアルファ |
_nohq | Normal Map (High Quality) | 表面のディテールノーマル、バンプや溝を定義 | RGB(タンジェントスペースノーマル) |
_smdi | Specular / Metallic / Detail Index | 光沢とメタリック特性を制御 | RGBチャンネルが個別のデータをエンコード |
_ca | Color with Alpha | アルファチャンネルが意味のあるデータ(透明度、マスク)を持つカラーテクスチャ | RGBA |
_as | Ambient Shadow | アンビエントオクルージョン/シャドウベイク | グレースケール |
_mc | Macro | 遠距離で見える大規模な色のバリエーション | RGB |
_li | Light / Emissive | 自己発光マップ(光る部分) | RGB |
_no | Normal Map (Standard) | 低品質ノーマルマップバリアント | RGB |
_mca | Macro with Alpha | アルファチャンネル付きマクロテクスチャ | RGBA |
_de | Detail | クローズアップ時の表面バリエーション用タイリングディテールテクスチャ | RGB |
命名規則の実践
1つのアイテムは通常、すべて共通のベース名を持つ複数のテクスチャを持ちます。
data/
my_rifle_co.paa <-- ベースカラー(目に見えるもの)
my_rifle_nohq.paa <-- ノーマルマップ(表面のバンプ)
my_rifle_smdi.paa <-- スペキュラ/メタリック(光沢)
my_rifle_as.paa <-- アンビエントシャドウ(ベイク済みAO)
my_rifle_ca.paa <-- アルファ付きカラー(透明度が必要な場合)_smdiチャンネル
スペキュラ/メタリック/ディテールテクスチャは、1つのRGB画像に3つのデータストリームをパックします。
| チャンネル | データ | 範囲 | 効果 |
|---|---|---|---|
| R | メタリック | 0-255 | 0 = 非金属、255 = 完全な金属 |
| G | ラフネス(反転スペキュラ) | 0-255 | 0 = 粗い/マット、255 = スムーズ/光沢 |
| B | ディテールインデックス / AO | 0-255 | ディテールタイリングまたはアンビエントオクルージョン |
_nohqチャンネル
DayZのノーマルマップはタンジェントスペースエンコーディングを使用します。
| チャンネル | データ |
|---|---|
| R | X軸ノーマル(左右) |
| G | Y軸ノーマル(上下) |
| B | Z軸ノーマル(視点方向) |
| A | スペキュラパワー(オプション、マテリアルに依存) |
解像度の要件
Enfusionエンジンは、すべてのテクスチャが2の累乗の寸法を持つことを要求します。幅と高さはそれぞれ独立して2の累乗である必要がありますが、等しくなくてもかまいません(非正方形テクスチャは有効です)。
有効な寸法
| サイズ | 一般的な用途 |
|---|---|
| 64x64 | 小さなアイコン、UI要素 |
| 128x128 | 小さなアイコン、インベントリサムネイル |
| 256x256 | UIパネル、小さなアイテムテクスチャ |
| 512x512 | 標準的なアイテムテクスチャ、衣服 |
| 1024x1024 | 武器、詳細な衣服、車両パーツ |
| 2048x2048 | 高詳細な武器、キャラクターモデル |
| 4096x4096 | 地形テクスチャ、大型車両テクスチャ |
非正方形テクスチャ
2の累乗の非正方形テクスチャは有効です。
256x512 -- 有効(両方とも2の累乗)
512x1024 -- 有効
1024x2048 -- 有効
300x512 -- 無効(300は2の累乗ではない)解像度ガイドライン
- 武器: メインボディは2048x2048、アタッチメントは1024x1024。
- 衣服: 表面積のカバレッジに応じて1024x1024または2048x2048。
- UIアイコン: インベントリアイコンは128x128または256x256、HUD要素は64x64。
- 地形: サテライトマップは4096x4096、マテリアルタイルは512x512または1024x1024。
- ノーマルマップ: 対応するカラーテクスチャと同じ解像度。
- SMDIマップ: 対応するカラーテクスチャと同じ解像度。
警告: テクスチャが2の累乗でない寸法を持つ場合、エンジンはロードを拒否するか、マゼンタのエラーテクスチャを表示します。TexView2は変換中に警告を表示します。
アルファチャンネルのサポート
テクスチャのアルファチャンネルは、カラー以外の追加データを持ちます。その解釈方法は、テクスチャのサフィックスとマテリアルシェーダーに依存します。
アルファチャンネルの役割
| サフィックス | アルファの解釈 |
|---|---|
_co | 通常未使用。存在する場合、シンプルなマテリアルの透明度を定義する可能性あり |
_ca | 透明度マスク(0 = 完全に透明、255 = 完全に不透明) |
_nohq | スペキュラパワーマップ(高い = シャープなスペキュラハイライト) |
_smdi | 通常未使用 |
_li | エミッシブ強度マスク |
アルファ付きテクスチャの作成
画像エディタ(Photoshop、GIMP、Krita)での手順:
- 通常通りRGBコンテンツを作成します。
- アルファチャンネルを追加します。
- 完全な不透明度/効果が必要な場所に白(255)を、不要な場所に黒(0)を塗ります。
- 32ビットTGAまたはPNGとしてエクスポートします。
- TexView2を使用してPAAに変換します -- アルファチャンネルは自動的に検出されます。
TexView2でのアルファの確認
TexView2でPAAを開き、チャンネル表示ボタンを使用します:
- RGBA -- 最終コンポジットを表示
- RGB -- カラーのみを表示
- A -- アルファチャンネルのみを表示(白 = 不透明、黒 = 透明)
フォーマット間の変換
TexView2(主要ツール)
TexView2はDayZ Toolsに含まれており、標準的なテクスチャ変換ユーティリティです。
ファイルを開く:
- DayZ Toolsから、または
DayZ Tools\Bin\TexView2\TexView2.exeから直接TexView2を起動します。 - ソースファイル(TGA、PNG、またはEDDS)を開きます。
- 画像が正しく表示されることを確認し、寸法を確認します。
PAAへの変換:
- TexView2でソーステクスチャを開きます。
- File --> Save Asに移動します。
- 出力フォーマットとしてPAAを選択します。
- 圧縮タイプを選択します:
- DXT1 - 不透明テクスチャ用(アルファ不要)
- DXT5 - アルファ透明度のあるテクスチャ用
- ARGB4444 - ファイルサイズが重要な小さなUIテクスチャ用
- Saveをクリックします。
コマンドラインによるバッチ変換:
# 単一のTGAをPAAに変換
"P:\DayZ Tools\Bin\TexView2\TexView2.exe" -i "source.tga" -o "output.paa"
# TexView2はアルファチャンネルの有無に基づいて圧縮を自動選択しますBinarize(自動)
Binarizeがモッドのソースディレクトリを処理する際、認識されたすべてのテクスチャフォーマット(TGA、PNG、EDDS)を自動的にPAAに変換します。これはAddonBuilderパイプラインの一部として行われます。
Binarize変換フロー:
source/mod_name/data/texture_co.tga
--> BinarizeがTGAを検出
--> 自動圧縮選択でPAAに変換
--> 出力: build/mod_name/data/texture_co.paa手動変換テーブル
| 変換元 | 変換先 | ツール | 備考 |
|---|---|---|---|
| TGA --> PAA | TexView2 | 標準ワークフロー | |
| PNG --> PAA | TexView2 | TGAと同様に動作 | |
| EDDS --> PAA | TexView2またはBinarize | ビルド中に自動 | |
| PAA --> TGA | TexView2(Save As TGA) | 既存テクスチャの編集用 | |
| PAA --> PNG | TexView2(Save As PNG) | ポータブルフォーマットへの抽出用 | |
| PSD --> TGA/PNG | Photoshop/GIMP | エディタからエクスポート後に変換 |
テクスチャの品質と圧縮
圧縮タイプの選択
| シナリオ | 推奨圧縮 | 理由 |
|---|---|---|
不透明ディフューズ (_co) | DXT1 | 最良の比率、アルファ不要 |
透明ディフューズ (_ca) | DXT5 | 完全なアルファサポート |
ノーマルマップ (_nohq) | DXT5 | アルファチャンネルがスペキュラパワーを持つ |
スペキュラマップ (_smdi) | DXT1 | 通常不透明、RGBチャンネルのみ |
| UIテクスチャ | ARGB4444またはDXT5 | 小さなサイズ、きれいなエッジ |
エミッシブマップ (_li) | DXT1またはDXT5 | アルファが強度を持つ場合はDXT5 |
品質 vs. ファイルサイズ
フォーマット 2048x2048 おおよそのサイズ
-----------------------------------------
ARGB8888 16.0 MB (非圧縮)
DXT5 5.3 MB (4:1圧縮)
DXT1 2.7 MB (6:1圧縮)
ARGB4444 8.0 MB (2:1圧縮)ゲーム内品質設定
プレイヤーはDayZのビデオ設定でテクスチャ品質を調整できます。品質が下がるとエンジンはより低いミップレベルを選択するため、低設定ではテクスチャが徐々にぼやけて見えます。これは自動的に行われます -- 個別の品質レベルを作成する必要はありません。
実践的な例
武器テクスチャセット
一般的な武器モッドには以下のテクスチャファイルが含まれます:
MyWeapons/data/weapons/m4a1/
my_weapon_co.paa <-- 2048x2048, DXT1, ベースカラー
my_weapon_nohq.paa <-- 2048x2048, DXT5, ノーマルマップ
my_weapon_smdi.paa <-- 2048x2048, DXT1, スペキュラ/メタリック
my_weapon_as.paa <-- 1024x1024, DXT1, アンビエントシャドウマテリアルファイル(.rvmat)がこれらのテクスチャを参照し、シェーダーステージに割り当てます。
UIテクスチャ(イメージセットソース)
MyFramework/data/gui/icons/
my_icons_co.paa <-- 512x512, ARGB4444, スプライトアトラスUIテクスチャは多くの場合、単一のアトラス(イメージセット)にパックされ、レイアウトファイルで名前で参照されます。ARGB4444圧縮はUIでよく使われます。きれいなエッジを保ちながらファイルサイズを小さく保てるためです。
地形テクスチャ
terrain/
grass_green_co.paa <-- 1024x1024, DXT1, タイリングカラー
grass_green_nohq.paa <-- 1024x1024, DXT5, タイリングノーマル
grass_green_smdi.paa <-- 1024x1024, DXT1, タイリングスペキュラ
grass_green_mc.paa <-- 512x512, DXT1, マクロバリエーション
grass_green_de.paa <-- 512x512, DXT1, ディテールタイリング地形テクスチャは景観全体にタイリングされます。_mcマクロテクスチャは、繰り返しを防ぐために大規模な色のバリエーションを追加します。
よくある間違い
1. 2の累乗でない寸法
症状: ゲーム内でマゼンタのテクスチャ、TexView2の警告。 修正: 変換前にソースを最も近い2の累乗にリサイズしてください。
2. サフィックスの欠落
症状: マテリアルがテクスチャを見つけられない、または正しくレンダリングされない。 修正: ファイル名には必ず適切なサフィックス(_co、_nohqなど)を含めてください。
3. アルファに対する誤った圧縮
症状: 透明度がブロック状またはバイナリ(グラデーションなしのオン/オフ)に見える。 修正: スムーズなアルファグラデーションが必要なテクスチャにはDXT1の代わりにDXT5を使用してください。
4. ミップマップの忘れ
症状: テクスチャは近くでは問題ないが、遠くでシマーやキラキラが発生する。 修正: TexView2で生成されたPAAファイルには自動的にミップマップが含まれます。非標準ツールを使用している場合は、ミップマップ生成が有効になっていることを確認してください。
5. 誤ったノーマルマップフォーマット
症状: モデルのライティングが反転または平坦に見える。 修正: ノーマルマップがDirectXスタイルのY軸規則(緑チャンネル: 上 = 明るい)のタンジェントスペースフォーマットであることを確認してください。一部のツールはOpenGLスタイル(反転Y)でエクスポートします -- 緑チャンネルを反転する必要があります。
6. 変換後のパス不一致
症状: モデルまたはマテリアルが.tgaパスを参照しているが、PBOには.paaが含まれているためマゼンタで表示される。 修正: マテリアルは最終的な.paaパスを参照する必要があります。Binarizeはパスの再マッピングを自動的に処理しますが、-packonly(バイナライズなし)でパックする場合は、パスが正確に一致していることを確認する必要があります。
ベストプラクティス
ソースファイルをバージョン管理に保管してください。 TGA/PNGマスターをモッドと一緒に保存してください。PAAファイルは生成された出力です -- 重要なのはソースです。
解像度を重要性に合わせてください。 プレイヤーが何時間も見つめるライフルは2048x2048に値します。棚の奥にある缶詰は512x512で十分です。
常にノーマルマップを提供してください。 フラットなノーマルマップ(128, 128, 255のソリッドフィル)でもないよりはましです -- ノーマルマップが欠落するとマテリアルエラーが発生します。
一貫して命名してください。 1つのベース名に複数のサフィックス:
myitem_co.paa、myitem_nohq.paa、myitem_smdi.paa。命名スキームを混在させないでください。ビルド前にTexView2でプレビューしてください。 PAA出力を開いて正しく見えることを確認してください。各チャンネルを個別に確認してください。
デフォルトでDXT1を使用し、アルファが必要な場合のみDXT5を使用してください。 DXT1はDXT5の半分のファイルサイズで、不透明テクスチャでは同じ見た目です。
低品質設定でテストしてください。 ウルトラで素晴らしく見えるものも、エンジンがミップレベルを積極的にドロップするため、低設定では読めなくなる可能性があります。
ナビゲーション
| 前 | 上 | 次 |
|---|---|---|
| Part 3: GUIシステム | Part 4: ファイルフォーマット & DayZ Tools | 4.2 3Dモデル |
