Skip to content

第4.1章: テクスチャ (.paa, .edds, .tga)

ホーム | テクスチャ | 次: 3Dモデル >>


はじめに

DayZで目にするすべての表面 -- 武器のスキン、衣服、地形、UIアイコン -- はテクスチャファイルによって定義されています。エンジンは実行時にPAAと呼ばれる独自の圧縮フォーマットを使用しますが、開発中はビルドプロセスで変換されるいくつかのソースフォーマットで作業します。これらのフォーマット、テクスチャをマテリアルに紐付ける命名規則、そしてエンジンが適用する解像度ルールを理解することは、DayZモッドのビジュアルコンテンツを作成するための基本です。

この章では、遭遇するすべてのテクスチャフォーマット、エンジンが各テクスチャをどのように解釈するかを示すサフィックス命名システム、解像度とアルファチャンネルの要件、そしてフォーマット間の変換の実際のワークフローについて説明します。


目次


テクスチャフォーマットの概要

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は各テクスチャの役割を識別するための厳格なサフィックスシステムを使用しています。エンジンとマテリアルはファイル名でテクスチャを参照し、サフィックスはエンジンと他のモッダーの両方にテクスチャが含むデータの種類を伝えます。

必須サフィックス

サフィックス正式名称目的一般的なフォーマット
_coColor / Diffuse表面のベースカラー(アルベド)RGB、オプションのアルファ
_nohqNormal Map (High Quality)表面のディテールノーマル、バンプや溝を定義RGB(タンジェントスペースノーマル)
_smdiSpecular / Metallic / Detail Index光沢とメタリック特性を制御RGBチャンネルが個別のデータをエンコード
_caColor with Alphaアルファチャンネルが意味のあるデータ(透明度、マスク)を持つカラーテクスチャRGBA
_asAmbient Shadowアンビエントオクルージョン/シャドウベイクグレースケール
_mcMacro遠距離で見える大規模な色のバリエーションRGB
_liLight / Emissive自己発光マップ(光る部分)RGB
_noNormal Map (Standard)低品質ノーマルマップバリアントRGB
_mcaMacro with Alphaアルファチャンネル付きマクロテクスチャRGBA
_deDetailクローズアップ時の表面バリエーション用タイリングディテールテクスチャ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-2550 = 非金属、255 = 完全な金属
Gラフネス(反転スペキュラ)0-2550 = 粗い/マット、255 = スムーズ/光沢
Bディテールインデックス / AO0-255ディテールタイリングまたはアンビエントオクルージョン

_nohqチャンネル

DayZのノーマルマップはタンジェントスペースエンコーディングを使用します。

チャンネルデータ
RX軸ノーマル(左右)
GY軸ノーマル(上下)
BZ軸ノーマル(視点方向)
Aスペキュラパワー(オプション、マテリアルに依存)

解像度の要件

Enfusionエンジンは、すべてのテクスチャが2の累乗の寸法を持つことを要求します。幅と高さはそれぞれ独立して2の累乗である必要がありますが、等しくなくてもかまいません(非正方形テクスチャは有効です)。

有効な寸法

サイズ一般的な用途
64x64小さなアイコン、UI要素
128x128小さなアイコン、インベントリサムネイル
256x256UIパネル、小さなアイテムテクスチャ
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)での手順:

  1. 通常通りRGBコンテンツを作成します。
  2. アルファチャンネルを追加します。
  3. 完全な不透明度/効果が必要な場所に白(255)を、不要な場所に黒(0)を塗ります。
  4. 32ビットTGAまたはPNGとしてエクスポートします。
  5. TexView2を使用してPAAに変換します -- アルファチャンネルは自動的に検出されます。

TexView2でのアルファの確認

TexView2でPAAを開き、チャンネル表示ボタンを使用します:

  • RGBA -- 最終コンポジットを表示
  • RGB -- カラーのみを表示
  • A -- アルファチャンネルのみを表示(白 = 不透明、黒 = 透明)

フォーマット間の変換

TexView2(主要ツール)

TexView2はDayZ Toolsに含まれており、標準的なテクスチャ変換ユーティリティです。

ファイルを開く:

  1. DayZ Toolsから、またはDayZ Tools\Bin\TexView2\TexView2.exeから直接TexView2を起動します。
  2. ソースファイル(TGA、PNG、またはEDDS)を開きます。
  3. 画像が正しく表示されることを確認し、寸法を確認します。

PAAへの変換:

  1. TexView2でソーステクスチャを開きます。
  2. File --> Save Asに移動します。
  3. 出力フォーマットとしてPAAを選択します。
  4. 圧縮タイプを選択します:
    • DXT1 - 不透明テクスチャ用(アルファ不要)
    • DXT5 - アルファ透明度のあるテクスチャ用
    • ARGB4444 - ファイルサイズが重要な小さなUIテクスチャ用
  5. Saveをクリックします。

コマンドラインによるバッチ変換:

bash
# 単一の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 --> PAATexView2標準ワークフロー
PNG --> PAATexView2TGAと同様に動作
EDDS --> PAATexView2またはBinarizeビルド中に自動
PAA --> TGATexView2(Save As TGA)既存テクスチャの編集用
PAA --> PNGTexView2(Save As PNG)ポータブルフォーマットへの抽出用
PSD --> TGA/PNGPhotoshop/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(バイナライズなし)でパックする場合は、パスが正確に一致していることを確認する必要があります。


ベストプラクティス

  1. ソースファイルをバージョン管理に保管してください。 TGA/PNGマスターをモッドと一緒に保存してください。PAAファイルは生成された出力です -- 重要なのはソースです。

  2. 解像度を重要性に合わせてください。 プレイヤーが何時間も見つめるライフルは2048x2048に値します。棚の奥にある缶詰は512x512で十分です。

  3. 常にノーマルマップを提供してください。 フラットなノーマルマップ(128, 128, 255のソリッドフィル)でもないよりはましです -- ノーマルマップが欠落するとマテリアルエラーが発生します。

  4. 一貫して命名してください。 1つのベース名に複数のサフィックス: myitem_co.paamyitem_nohq.paamyitem_smdi.paa。命名スキームを混在させないでください。

  5. ビルド前にTexView2でプレビューしてください。 PAA出力を開いて正しく見えることを確認してください。各チャンネルを個別に確認してください。

  6. デフォルトでDXT1を使用し、アルファが必要な場合のみDXT5を使用してください。 DXT1はDXT5の半分のファイルサイズで、不透明テクスチャでは同じ見た目です。

  7. 低品質設定でテストしてください。 ウルトラで素晴らしく見えるものも、エンジンがミップレベルを積極的にドロップするため、低設定では読めなくなる可能性があります。


ナビゲーション

Part 3: GUIシステムPart 4: ファイルフォーマット & DayZ Tools4.2 3Dモデル

Released under CC BY-SA 4.0 | Code examples under MIT License