ここではDCSに塗装を読み込ませるために必要なdescription.luaについて解説します。
DCSの3Dモデルのどの部分にどのテクスチャ(dds画像ファイル)を読み込ませるかの定義がしてあるファイルです。
中身はLuaの文法で書かれています。
まずはデフォルトで入っているdescription.luaを開いてみましょう。
DCSのインストールフォルダ(デフォルトでは公式安定版ならC:\Program Files\Eagle Dynamics\DCS World、
公式openbeta版ならC:\Program Files\Eagle Dynamics\DCS World OpenBeta
Steam版ならC:\Program Files (x86)\Steam\steamapps\common\DCSWorld)
を開きます。
上記画像のようなフォルダ構造になっています。
Bazarフォルダの中にはFlaming Cliffs 3収録機種やAI機種などの3Dモデルデータ、塗装データなどが入っています。
Bazarフォルダ→Liveriesフォルダと移動すると機種名ごとのフォルダがあります。さらに機種名のフォルダを開くと塗装名ごとのフォルダがあります。
塗装名ごとのフォルダ内にdescription.luaを見つけることができます。
Bazarフォルダの中身
Bazarフォルダ内Liveriesフォルダの中身
Liveriesフォルダ内機種名フォルダの中身の例(F-15C)
塗装名フォルダの中身の例(Ferris Scheme)
CoreModsフォルダの中には有料モジュール機種などの3Dモデルデータ、塗装データなどが入っています。
例えばF/A-18CならCoreModsフォルダ→aircraftフォルダ→Liveriesフォルダ→FA-18C_hornetフォルダと移動すると、塗装名のzipファイルがあり、その中にdescription.luaを見つけることができます。
CoreModsフォルダの中身
aircraftフォルダの中身
aircraftフォルダ内機種名フォルダの中身の例(FA-18C)
FA-18Cフォルダ内Liveriesフォルダの中身
FA-18C_hornetフォルダの中身
default livery.zipの中身
<DCSのインストールフォルダ>\CoreMods\aircraft\FA-18C\Liveries\FA-18C_hornet内にある
default livery.zip内のdescription.luaを開いてみます。
開く際にはメモ帳よりもnotepad++などのテキストエディタを用いることをおすすめします。
本文章を執筆時点で中身は次のようになっています。
左の番号は行数で、実際には入力されていません。
livery = {
{"f18c1", 0 ,"F18C_1_DIFF_default",false};
{"f18c1", ROUGHNESS_METALLIC ,"F18C_1_DIF_RoughMet",true};
{"f18c2", 0 ,"F18C_2_DIFF_default",false};
{"f18c2", ROUGHNESS_METALLIC ,"F18C_2_DIF_RoughMet",true};
{"f18c1_number_nose_right", 0 ,"F18C_1_DIFF_default",false};
{"f18c1_number_nose_right", ROUGHNESS_METALLIC ,"F18C_1_DIF_RoughMet",true};
{"f18c1_number_nose_right", DECAL ,"empty",true};
{"f18c1_number_nose_left", 0 ,"F18C_1_DIFF_default",false};
{"f18c1_number_nose_left", ROUGHNESS_METALLIC ,"F18C_1_DIF_RoughMet",true};
{"f18c1_number_nose_left", DECAL ,"empty",true};
{"f18c2_kil_right", 0 ,"F18C_2_DIFF_default",false};
{"f18c2_kil_right", ROUGHNESS_METALLIC ,"F18C_2_DIF_RoughMet",true};
{"f18c2_kil_right", DECAL ,"empty",true};
{"f18c2_kil_left", 0 ,"F18C_2_DIFF_default",false};
{"f18c2_kil_left", ROUGHNESS_METALLIC ,"F18C_2_DIF_RoughMet",true};
{"f18c2_kil_left", DECAL ,"empty",true};
{"f18c1_number_F", 0 ,"F18C_1_DIFF_default",false};
{"f18c1_number_F", ROUGHNESS_METALLIC ,"F18C_1_DIF_RoughMet",true};
{"f18c1_number_F", DECAL ,"empty",true};
{"f18c2_number_X", 0 ,"F18C_2_DIFF_default",false};
{"f18c2_number_X", ROUGHNESS_METALLIC ,"F18C_2_DIF_RoughMet",true};
{"f18c2_number_X", DECAL ,"empty",true};
{"FPU_8A", 0 ,"FPU_8A_Diff",true};
{"FPU_8A", 2 ,"FPU_8A_Diff_RoughMet",true};
}
name = "default livery"
name_ru = "Камуфляж по умолчанию"
countries = {"RUS","UKR","USA","TUR","UK","FRA","GER","AUSAF","CAN","SPN","NETH","BEL","NOR","DEN","ISR","GRG","INS","ABH",
"RSO","ITA","AUS","SUI","AUT","BLR","BGR","CZE","CHN","HRV","EGY","FIN","GRC","HUN","IND","IRN","IRQ","JPN","KAZ","PRK",
"PAK","POL","ROU","SAU","SRB","SVK","KOR","SWE","SYR","YEM","VNM","VEN","TUN","THA","SDN","PHL","MAR","MEX","MYS",
"LBY","JOR","IDN","HND","ETH","CHL","BRA","BHR","NZG","YUG","SUN","RSI","DZA","KWT","QAT","OMN","ARE","CUB","RSA"}
order = 999
custom_args =
{
[27] = 1, -- Tail change of type of board number (0.0 -default USA, 0.1- )
[1000] = 1, -- Flaps
[1001] = 1, -- Nose
[1002] = 1, -- Kuwait Squadron
[1003] = 1, -- Australian Squadron
[1004] = 1, -- Finland Squadron
[1005] = 1, -- Switzerland Squadron
[1006] = 1, -- Blue Angels Jet Team
}
2行目から51行目は3Dデータと画像ファイル(テクスチャファイル)との紐づけを行う部分になります。
livery = {
{紐づけ情報};
}
のようになっています。
実際の4行目と5行目、16行目を例にとって解説していきます。
4. {"f18c1", 0 ,"F18C_1_DIFF_default",false};
5. {"f18c1", ROUGHNESS_METALLIC ,"F18C_1_DIF_RoughMet",true};
16. {"f18c1_number_nose_right", DECAL ,"empty",true};
4行目は{"3Dモデルのパーツ名", 数字 ,"テクスチャデータ名",false};
5行目は{"3Dモデルのパーツ名", ROUGHNESS_METALLIC ,"テクスチャデータ名",true};
16行目は{"3Dモデルのパーツ名", DECAL ,"テクスチャデータ名",true};
となっています。まとめると
{"3Dモデルのパーツ名", 数字 or ROUGHNESS_METALLIC or DECAL ,"テクスチャデータ名",true or false};
という形です。
{"3Dモデルのパーツ名",
の直後は0~14までの数字か、ROUGHNESS_METALLICやDECALなどが選べますが、ここでは代表的なもののみ解説します。
詳しくは公式フォーラム内のガイド(英語)を参考にしてください。
選んだ数字や名前によって、画像ファイルの読み込まれ方が変わります。
下地の塗装なら、赤、青、緑はそれぞれ通常の意味で使われますが、ROUGHMETなら赤がアンビエントオクルージョン、青が金属光沢の具合、緑が表面のざらざら具合、というように、意味が変わります。
テクスチャデータ名には3Dモデルのパーツに読み込ませたい画像ファイルの名前を入れます。拡張子(ddsなど)は必要ありません。
最後のtrueやfalseは、デフォルトのテクスチャフォルダ(Liveriesフォルダ以外のTexturesフォルダなど)に入っている画像を使用しているかどうかで変更します。
default livery.zip内のF18C_1_DIFF_default.dds及びF18C_2_DIFF_default.ddsを使う部分はfalseになっています。
一方、デフォルトで別フォルダ(Texturesフォルダなど)やzipに入っているF18C_1_DIF_RoughMet.dds、F18C_2_DIF_RoughMet.ddsなどを使う部分はtrueになっています。
falseの場合は、description.luaがいるのと同じフォルダやzipファイル内の画像ファイルしかDCSが読み取らないので注意です。
今回の例では、falseの際、default livery.zip内の画像ファイルのみを読み取ります。
おさらいも含めて解説すると、
4. {"f18c1", 0 ,"F18C_1_DIFF_default",false};
の意味はf18c1という3Dパーツに、下地の塗装として、同じzipファイル内のF18C_1_DIFF_default.ddsを読み取る、ということです。
5. {"f18c1", ROUGHNESS_METALLIC ,"F18C_1_DIF_RoughMet",true};
は同じf18c1という3Dパーツに、ROUGHMETとして、デフォルトのテクスチャフォルダ(正確には、<DCSのインストールフォルダ>\CoreMods\aircraft\FA-18C\Textures\FA-18C.zip)にあるF18C_1_DIF_RoughMet.ddsを読み取る、という意味です。
16. {"f18c1_number_nose_right", DECAL ,"empty",true};
はf18c1_number_nose_rightという3Dパーツに、デカールとして、デフォルトのテクスチャフォルダ(こちらは<DCSのインストールフォルダ>\Bazar\TempTextures)にあるemptyという画像を読み取る、という意味です。ちなみに、DECALを指定してからemptyという画像ファイルを指定すると、デカールなしの塗装データにできます。
name = "表示名"
とすることで、DCSでの表示名を指定することができます。指定しない場合、塗装フォルダ(もしくはzipファイル)の名前が表示名になります。
name_ru = "表示名"
はロシア語版の場合に使われる表示名です。
countries = {"3文字の国コード1","3文字の国コード2"}
などとすることで、特定の国でのみ塗装データを使えるようにします。
例えば、
countries = {"JPN","USA"}
とすることで、日本とアメリカを選択したときのみ、塗装データが使えるようになります。
DCSで塗装データを選択する際、通常はアルファベット順(正確には文字コード順)に並べられますが、
order = 数字
を入れることで、指定した数字の順に表示することができます。
例えば、ある塗装データ(名前をBとする)で999、別の塗装データ(名前をAとする)で1000を指定すると、塗装データBの下に塗装データAが表示されます。
数字が同じものの中では文字コード順になります。(塗装データAもBも999を指定した場合は、Aの下にBが表示される)
custom_args =
{
[アニメーション番号] = -1~1までの数字,
}
とすることで、アニメーション部分を任意の状態にできます。
今回の例ではアニメーション番号27、1000~1006をすべて1にすることで、ボードナンバーのデカールを全く表示しない設定にしています。
アニメーション番号がどのアニメーションに対応しているかは、DCSに付属するModelViewer2.exeで確認ができます。