Jednoduché koľajové vozidlo - cab


K vášmu vozidlu môžete cab buď priradiť nejaký existujúci, alebo si ho vytvoriť vlastný. Pokúsim sa vám v stručnosti popísať to najdôležitejšie čo by ste mali vedieť o vytvorení cabu k vášmu vozidlu.
V zásade je to skladačka. Základom je hlavný priestor pre vodiča a k nemu sú pomocou helper pointov priradené ovládacie prvky ako samostatné animované objekty podporované aj zvukom. Preto aj tu treba vychádzať z existujúceho interiéru vozidla. Preto podobne ako u svietiaceho interiéru aj tu si vezmete vaše vozidlo a z neho odstránite aj tu všetky vonkajšie časti a časti ktoré z neho nieje vidieť.


Všimnite si, že nechávam zachované externé časti ako stierače, spätné zrkadielka, smerovky a podobne.  Tie je totiž z cabu vidieť rovnako ako sklo. Pripravený cab uložíme do adresáru mojevozidlo_interier kde budú všetky jeho súčasti.
Teraz v samostatnom okne gmaxu vymodelujeme jednotlivé časti ovládania pričom proporcionálne musia sedieť z cabom. Pri modelovaní je vhodné ísť aj do veľkých detailov pretože sa jedná o súčasti priamo na očiach.

1. KLAKSÓN  -  V našom prípade to bude pedál vymodelovaný ako jednoduchý 8 uholník na tyči. Všimnite si zároveň jeho umiestnenie v priestore ktoré hrá dosť dôležitú rolu.



Pomenujeme a exportujeme ho ako samostatný im súbor do adresáru mojevozidlo_interier a nazveme ho horn.im

2. PANTOGRAF – Ovládač pantografu je v našom prípade lano visiace zo stropu a zakončené guľou pre lepšie uchopenie. Vymodelujeme ho z jednoduchého 12 uholníka, alebo gule a 6 uholníkového lana v dostatočnej dĺžke 70cm. Podobne ako pedál klaksónu sa bude  pohybovať hore dolu. Keďže ale opačne, tak aj jeho umiestnenie v priestore bude opačné.



Pomenujeme a exportujeme ho ako samostatný im súbor do adresáru mojevozidlo_interier a nazveme ho pantograf.im

3. SVETLO – Osvetlenie bude ovládané prepínačom ktorý je umiestnený spolu s ďalšími v samostatnej krabici na prednej strane pod čelným oknom. Preto si najskôr vymodelujeme samostatnú krabicu z jednotlivých kvádrov.



K tomuto panelu vytvoríme jednu samostatnú páčku ktorú neskôr priradíme na všetky miesta v ovládači. Je dobré modelovať tieto časti spolu pre lepšiu kompatibilitu a predstavu ako to bude v konečnom dôsledku vyzerať.



Ovládač importujeme do cabu pod čelné sklo do stredu a páčku exportujeme ako samostatný im súbor do adresáru mojevozidlo_interier a nazveme ho tlacitko.im

4. DINAMICKÁ BRZDA – Naše vozidlo bude mať iba jednu brzdu. Tú si vymodelujeme z prstenca, niekoľkých rôzne upravených a do seba zapadajúcich viac uholníkov a trubiek. Aj tu si všimnite jeho umiestnenie v priestore.



Pomenujeme a exportujeme ju ako samostatný im súbor do adresáru mojevozidlo_interier a nazveme ho dbrzda.im

5. PLYN – Ovládač – akcelerátor je umiestnený na samostatnom stojane spolu s prepínačom smeru. Preto aj tu najskôr vymodelujeme stojan .



Ten umiestnime na svoje miesto do cabu a k nemu vymodelujeme samostatnú páku akcelerátoru.



a exportujeme ju ako samostatný objekt do adresáru mojevozidlo_interier a nazveme ho speed_controler.im

6. PREPÍNAČ SMERU – Ovládač – je rovnako ako akcelerátor umiestnený na samostatnom stojane.



Aj ten po vymodelovaní exportujeme ako samostatný objekt do adresáru mojevozidlo_interier a nazveme ho reverser.im. Tým máme základné prvky ovládania nášho vozidla hotové. Samozrejme ovládacích prvkov je viac a s príslušným scriptom môžeme pridať aj naše vlastné. Ja som vám chcel ukázať iba tie základné, aby ste z vášho cabu mohli ovládať svoje vozidlo.  

Keď máme objekty a samotný cab hotový pridáme do cabu ešte helper pointy ktoré nám všetko vzájomne prepoja.

a.brake
brzda
a.cabfront základný pohľad vodiča smerom von
a.horn klaksón
a.pantograf pantograf
a.reverser prepínač smeru
a.tlacitko_svetlo tlačítko pre svetlo
a.tlacitko1 nefunkčné tlačítko
a.tlacitko2 nefunkčné tlačítko
a.tlacitko3 nefunkčné tlačítko

Nezabúdajte že tak ako všade, aj tu je mimoriadne dôležité otočenie bodov. Špatne otočený bod spôsobí nesprávne zobrazenie či animáciu objektu k nemu priradeného. A nezabudnite, že v základnom nastavení je dôležité pre orientáciu aj to v akom pohľade bod vytvoríte.
Celý cab musí byť potom umiestnený tak aby sedel s bodom pre cab v modely. Teda tak aby nepretŕčal, alebo sa neprekrýval s vozidlom pred, alebo za našim vozidlom. Tento je umiestnený v geometrickom strede priestoru pre vodiča x=0, y=0 a z=0. To však ale u vášho vozidla môže byť aj inak. Tak isto je iba na vás či váš cab bude iba malý priestor okolo vodiča, alebo to bude viac ako v tomto prípade mestskej električky kde súčasťou je aj interier vozidla do ktorého vidieť zo stanovišťa vodiča aj v skutočnosti.

Takto vypreparovaný cab potom môžeme exportovať do pripraveného adresáru mojevozidlo_interier a nazveme ho int.im
Ako ďalšie si vytvoríme v ňom pod adresár
\sound\ a do neho umiestnime príslušné zvuky, ktoré sa budú objavovať pri používaní jednotlivých ovládačov. V našom prípade tam bude panto.wav, reverser.wav, speed.wav, switch.wav, throttle.wav a jeden textový súbor cabin.txt ktorý bude obsahovať inštrukcie – názov ovládača, činnosť a príslušný zvuk (wav súbor) čo pri nej má zaznieť.

throttle_lever change-notch speed.wav
reverser_lever change-notch reverser.wav

pantograph_lever change-notch panto.wav
light_switch change-notch switch.wav

trainbrake_lever change-notch switch.wav
switch0 change-notch switch.wav
<>
switch1 change-notch switch.wav
switch2 change-notch switch.wav
horn change-notch throttle.wav

Teraz si ešte musíme vytvoriť config.txt pre náš cab. Bude vyzerať asi nasledovne.

kuid                            <kuid:XXXXX:XXXXXX>
category-class                        "ZI"
kind                                       "interior"
category-region-0                  "SK"
category-era-0                       "1930s"
kuid-table {
}
obsolete-table {
}
cameralist {
    camera0                        0,0.55,0.52,0,-0.1
    camera1                        0,0.55,0.35,0,0.5
    camera2                        0.1,0.55,0.35,-1,0
    camera3                        -0.1,0.55,0.35,1,0
    camera4                        0,-0.03,0.73,-3,0.66
    camera5                        0,0.15,0.5,12.565,-1.4
}
cameradefault                        0
mesh-table {
    default {
        mesh                    "int.im"
        auto-create                1
    }
    throttle_lever {
        kind                    "lever"
        auto-create                1
        mesh                    "speed_controller.im"
        att                    "a.speed_controller"
        limits                    0,9
        angles                    0,1.4
        notches                    0,0.1,0.2,0.3,0.4,0.6,0.7,0.8,0.9,1
        notchheight                1,2,2,2,2,2,2,2,2,1
        radius                    0
        mousespeed                1
        att-parent                             "default"
    }
    reverser_lever {
        kind                    "lever"
        auto-create                1
        mesh                    "reverser.im"
        att                    "a.reverser"
        limits                    0,2
        angles                    0,1.4
        notches                    0,0.5,1
        notchheight                1,1,1
        radius                    0
        att-parent                              "default"
    }
    trainbrake_lever {
        kind                    "lever"
        auto-create                1
        mesh                    "brzda.im"
        att                    "a.brake"
        limits                    0,2
        angles                    1,4.8
        notches                    0,0.2,0.4,0.6,0.8,1
        notchheight                1,1,1,1,1,1,1
        radius                    0
        mousespeed                1
        att-parent                             "default"
    }
              light_switch {
        kind                     "lever"
        auto-create                1
        att                     "a.tlacitko_svetlo"
        mesh                     "tlacitko.im"
        limits                     0, 1
        angles                     2, 4
        notches                     0, 1
        notchheight                 0,0
        radius                    0
        att-parent                             "default"
    }
    switch0 {
        kind                     "lever"
        auto-create                1
        att                     "a.tlacitko1"
        mesh                     "tlacitko.im"
        limits                     0, 1
        angles                     2, 4
        notches                     0, 1
        notchheight                 0,0
        radius                    0
        att-parent                             "default"
    }
    switch1 {
        kind                     "lever"
        auto-create                1
        att                     "a.tlacitko2"
        mesh                     "tlacitko.im"
        limits                     0, 1
        angles                     2, 4
        notches                     0, 1
        notchheight                 0,0
        radius                    0
        att-parent                             "default"
    }
    switch2 {
        kind                     "lever"
        auto-create                1
        att                     "a.tlacitko3"
        mesh                     "tlacitko.im"
        limits                     0, 1
        angles                     2, 4
        notches                     0, 1
        notchheight                 0,0
        radius                    0
        att-parent                             "default"
    }
    pantograph_lever {
        kind                     pullrope
        auto-create                1
        mesh                     pantograf.im
        att                     a.pantograf
        limits                     0, 1
        angles                     0, 0.2
        notches                     0, 1
        notchheight                1, 1
        mousespeed                1
        radius                     0
    }
    horn {
        kind                     pullrope
        auto-create                1
        mesh                     horn.im
        att                     a.horn
        limits                     0, 1
        angles                     0, -0.1
        notches                     0, 1
        notchheight                1, 1
        radius                     0
        mousespeed                -1
    }
}
trainz-build                        2.4
asset-filename                   "int"


V stručnosti vysvetlím niektoré pojmi. Každopádne si ale pozrite CCG kde je všetko podrobne popísané.

cameralist {}
Sú pohľady a nasmerovanie virtuálnej kamery pohľadu. Musí byť najmenej jeden základný.

mesh-table {}
To je asi každému jasné. Zaujímavý je skôr ďalší obsah a tagy. Sú to samotné definície jednotlivých ovládačov. Ich pomenovanie je to isté ako pri definícii zvukov.


kind                                                     "lever"
Definuje typ. Teda či sa jedná o páku - lever, alebo posuvný ovládač – pullrope.


mesh                                                    "speed_controller.im"
Definuje príslušný exportovaný im súbor ovládača


att                                                        "a.speed_controller"
Definuje príslušný helper point v cabe na ktorý je zavesený.


limits                                                    0,9
angles                                                  0,1.4
notches                                                0,0.1,0.2,0.3,0.4,0.6,0.7,0.8,0.9,1
notchheight                                          1,2,2,2,2,2,2,2,2,1
radius                                                   0
Sú parametre určujúce jeho samotný pohyb. Doraz posunu od do, uhol otáčania, smer otáčania a podobne.

Teraz vám už treba iba príslušný cab priradiť k vášmu vozidlu pomocou kuid čísla v jeho config.txt súbore.