MOD/Modding Leitfaden 7

Last-modified: 2016-09-04 (日) 02:23:00

需要がありそうなところを途中から。3Dモデリングちっとも知らないからとんでもない間違いがある可能性は高い……

Aber zurück zur .mdl Datei. In der oberen Hälfte wird steht als erstes die Information zu den Abmesungen des Fahrzeuges (bounding info) darauf folgt eine Übersicht der verwendeten Meshs und Groups. Zudem ist deren Position, Skalierung und Rotation hier festgelegt. Da das Modell ja bereits in Blender angepasst wurde, sind hier normalerweise keine Änderungen mehr notwendig. Einzige Ausnhme sind mehrere identische Meshs. Darauf gehe ich aber bei der Bearbeitung der .grp Dateien nochmals genauer ein. Danach folgen noch die Angaben für die Sichtbarkeit ("visibleFrom" und "visibleTo"). Habt ihr nur ein LOD gibt es diese Angaben auch nur einmal. Ihr legt dann nur fest, ab welcher Entfernung das Fahrzeug komplett ausgeblendet wird. Beim TEE sieht das ganze wie folgt aus:

ではmdl.ファイルに戻って下さい。上半分にはまず最初に車両の外形寸法(bounding info)として、使われるMeshとGroupの概要を記すことができます。また、それらの位置、スケーリングおよび回転がここで設定されています。モデルはBlenderで調整済みですので、ここではこれ以上の変更は、通常は必要ありません。唯一の例外は、幾つかの一致する(訳註:競合する?)Meshの数です。しかし私は再び.grpファイルの調整をします。その後可視性のための情報に続きます ("visibleFrom"と"visibleTo")。LODには一度きりの指示が書かれます。これは車両がどの距離で完全に隠されるのかを決定します。TEEの場合、全体像は次のようになります:

ソース
function data()
return {
   boundingInfo = {
       bbMax = {
           10.38415, 1.50419, 4.03346,
       },
       bbMin = {
           -8.85, -1.58113, -0.01016,
       },
   },
   collider = {
       params = {
       },
       type = "MESH",
   },
   lods = {
       {
           animations = {
           },
           children = {
               {
                   id = "vehicle/train/VT11_5/VT11_5_lod_0_body.msh",
                   transf = {
                       0.00097, 0.0, 0.0, 0.0, 0.0, 0.00097, 0.0, 0.0, 0.0, 0.0, 0.00097, 0.0, 0.3, -0.03997, 0.0, 1.0,
                   },
                   type = "MESH",
               }, {
                   id = "vehicle/train/VT11_5_lod_0_bogie.grp",
                   transf = {
                       1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 6.0, 0.0, 0.0, 1.0,
                   },
                   type = "GROUP",
               }, {
                   id = "vehicle/train/VT11_5_lod_0_bogie2.grp",
                   transf = {
                       1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -6.25, 0.0, 0.0, 1.0,
                   },
                   type = "GROUP",
               },
           },
           events = {
           },
           matConfigs = {
               {
                   0, 0, 0,
               },
           },
           static = false,
           visibleFrom = 0,
           visibleTo = 2500,
       },
   },

Im unteren Teil der Datei geht es dann um die technisch Daten. Dazu zählt der Name des Fahrzeugs („name“), die Fahrzeugbeschreibung („description“), die Höchstgeschwindigkeit („topSpeed“) , das Gewicht („weight“) und die Motordaten („engines“) mit den Unterkategorien für die Antriebsart („type“), die Leistung („power“), und die Zugkraft („tractiveEffort“). Anschließend findet sich ein Eintrag zu den Achsen des Zuges (configs“ bzw. „axles“). Hier müssen alle Räder bzw. Achsen angegeben werden, die sich später bei der Fahrt drehen sollen. Außerdem sind diese Einträge für das Fahrverhalten durch Kurven zwingend erforderlich. Beim TEE ist zu bedenken, dass der Zug am vorderen Drehgestell über größere Räder als am hinteren Drehgestell verfügt. Somit gibt es zwei verschieden Achsen. Diese werden jeweils doppelt verwendet. Bei einem vierachsigen Wagen wäre nur ein Eintrag nötig, da alle Achsen ja identisch sind.

ファイルの下の方は技術情報になります。これは車両の名前("name")、車両の説明("description")、最高速度("topSpeed")、重量("weight")、そしてサブカテゴリに動力源の種類("type")、出力("power")、牽引力("tractiveEffort")を含むエンジンの情報("engines")が含まれます。 次の新しい項目は、列車の軸("configs"または"axles")となります。ここでは車輪または軸が与えられる必要があり、これは旋回駆動に必要になります。またこれらの項目は、曲線での運転挙動に必須です。TEEの場合、後部台車より前部台車の車輪が大きいことが特徴だということに注意する必要があります。二つの違う種類の軸があるわけです。これらが二度づつ使われています。(訳註:通常の)4軸車の場合は全ての軸が同一なので、一つの項目だけが必要でしょう。

Danach muss noch auf die entsprechenden Sounddateien („soundSet“) verwiesen werden. Hier kann man natürlich auch auf bestehende Dateien zurückgreifen. Im Falle des TEE habe ich eigene Sounds verwendet. Folgender Ausschnitt aus der .mdl Datei des TEE zeigt, die entsprechenden Werte. Jetzt fehlen noch die Wert für die Fahrzeugart („transportVehicle“), die Verfügbarkeit im Spiel („availability“), die Kosten („cost“), die Lebensdauer („lifespan“), die Betriebskosten („runningCosts“) und die genutzten Raucheffekte („particleSystem“). Bei letzteren empfiehlt es sich wieder, Werte von bereits existierenden Fahrzeugen zu übernehmen und diese dann nach den eigenen Vorstellungen anzupassen. Die benötigten Positionsdaten können in Blender abgelesen werden. Am Beispiel des TEE kann dies nachvollzogen werden:

続いて、音声データ("soundSet")を参照する必要があります。もちろん、既存のデータを利用することもできます。TEEの場合は私はオリジナルの音声を使いました。TEEの.mdlファイルからの次の抜粋は、対応する値を示しています。車種("transportVehicle")、ゲーム内での利用可能性("availavility")、費用("cost")、寿命("lifespan")、運行費用("runningCosts")、必要な煙の効果("particleSystem")が欠けています(訳註:???)。既存の車両の価値観を引き継いだ上で、新たな考えを適合させることを最後に再度お勧めします。必要な位置データはBlenderで読み取ることが出来ます。TEEの例を用いて、これを理解することができます:

ソース
metadata = {
       description = {
           name = _("TEE"),
           description = _(
           "Trans Europ Express")
       },
       railVehicle = {
           topSpeed = 160.0,
           weight = 43.0,
           engines = {
               { type = "DIESEL", power = 810.0, tractiveEffort = 280.0 }
           },
           configs = {
               {
                   axles = {
                       "vehicle/train/VT11_5/VT11_5_lod_0_w1.msh",
                       "vehicle/train/VT11_5/VT11_5_lod_0_w2.msh",
                   }
               },
           },
           soundSet = { name = "vt11_5" }
       },
       transportVehicle = {
           carrier = "RAIL",
           multipleUnitOnly = true
       },
       availability = {
           yearFrom = 1957,
           yearTo = 1990,
       },
       cost = {
           price = 1000000,
       },
       maintenance = {
           lifespan = 50,
           runningCosts = 400000,
       },
       particleSystem = {
           emitters = {
               {
                   position = { 5200., .0, 4200.1 },
                   velocity = { .0, .0, 4.0 },
                   color = { .3, .1, .1 },
                   frequency = 50,
                   lifeTime = 1.0,
                   size01 = { .5, 4.0 },
                   child = 1
               },
           }
       }
   },