Železničný prejazd s animovanými závorami.

Tvorba textúr

Textúru si pripravíme tak, že nafotíme závoru a mechanizmus zo všetkých strán, k tomu kus hrdzavej koľaje a betónový panel prípadne i gumu.  Všetky časti závory a mechanizmu po úprave vložíme do jednej bitmapy, napríklad v celých častiach ktoré budeme neskôr mapovať ako celky. Z dôvodu animácie je lepšie mať závory ako jeden kompaktný objekt a preto je aj jednoduchšie pre prácu mať k nim jednu bitmapu. Ostatné textúry môžu byť samostatné, alebo v druhej bitmape.


alebo
podrobnejšia
pre
detailnejšie
prepracovanie


Rozdiel medzi prvou a druhou bitmapou samotných závor je okrem rozloženia aj v tom, že v prvom prípade je priecestie jednoducho nafotené bez úprav a tak pre mnohé časti na mapovanie treba hľadať v textúre náhradnú oblasť, ktorá patrí v reále inej. To v istej situácii môže spôsobyť nepresnosti, ktoé však pri šikovnosti môžu byť zanedbateľné. Naviac žiaden normálný hráč TRS nebude váš objekt analyzovať aj keď osobne som už takého stretol.
Druhá bitmapa je digitálne upravena tak aby každá časť závor mala samostatnú oblasť. Treba ju teda doslova rozobrať. Pomocou takto upravenej bitmapy je mapovanie jednoduchšie, prehľadnejšie a závora môže byť detailnejšie a kvalitnejšie otextúrovaná  príslušnou časťou a hľavne presne podľa reálu. Príprava bitmapy je ale omnoho pracnejšia a vyžaduje si to isté grafické skúsenosti a trocha kvalitnejší softtware ako paint z windows.

Modelovanie

Modelovanie nebudem dopodrobna rozpisovať čo a ako krok za krokom. keďže mnohé je popísane v ostatných tútorialov a vzhľadom na množstvo krokov a možností postupov by text takto neúmerne narástol. Zameriam sa hlavne na kľúčové veci a špecifiká. V prípade, že si niekto nebude dať vedieť rady stačí ma kontaktovať.
Vytvoríme si teda najskôr  samotnú závoru. Z jednoduchého boxu o rozmeroch 0.4x0.4x0.5m betónový základ a do neho umiestnime 6-uholník s výškou 1.5 m. Potom si napríklad z boxu rozdeleného na 2 časti do výšky a 3 časti do šírky, po odstránení nepotrebných polygónov a spojení ostávajúcich polygónov a následného použitia EXTRUDE pre spodný stredový polygón vymodelujeme skrinku ovládania na spodnej strane stĺpika tak ako v nasledujúcom obrázku
.



Potom si vymodelujeme z boxu motor a z dvoch malých boxov čiastočne vnorených do stĺpika jeho ukotvenie na stĺpe. A nakoniec celú mechanickú časť aj s osou a proti závažiami, pričom najskôr vymodelujeme jednu stranu a jej klon použijeme ako druhú stranu. Na modelovanie ramien nám môže dobre poslúžiť napríklad aj funkcia BENDY ku ktorým ako posledné vymodelujeme z troch boxov o hrúbke  0.02m a výške  0.2m samotnú preglejkovú závoru. Všetko môžeme ale modelovať aj z kriviek ktoré si nakreslíme v pohľade zhora s aktivovaným 2D Snap Toggle a mriežkou nastavenou na 0.01 pre lepšie modelovanie.  Ak chceme ušetriť polygóny môžeme zrušiť 2cm hrúbku preglejkových častí závory. Tak či tak tým máme samotný mechanizmus závory hotový. Pričom druhú vytvoríme klonovaním tejto ako celku ale až po jej otextúrovaní aby sme nemuseli dva krát textúrovať. Dôležité je aby aj keď sa modelovalo so samostatných častí, sa tieto navzájom vo vertexoch na záver spojili do monolitu.



Ako ďalšie si teraz vymodelujeme samotnú cestu prejazdu. Môžeme ju iba naznačiť jednou plochou ktorú pokryje default cesta definovaná v config.tx a neskôr cesta ktorú pripojíme. Ale môžeme vymodelovať aj priamo pekný prejazd napríklad z betónových panelov. Toto riešenie má ale iste špecifiká ku ktorým ešte prídeme. Preto si teraz napríklad z troch boxov vymodelujme samotnú panelovú cestu prechodu tak aby miesto kadiaľ povedú koľaje bolo dvojnásobne široké ako šírka koľaje a predpokladanej medzery. Vonkajšia vzdialenosť musí zodpovedať rozchodu na ktorý sa prechod modeluje a do vnútornej vložíme dve ďalšie vodiace vnútorné koľaje. Nakoniec na oba konce pridáme nárazovú plochu.
Horná plocha na panelovú časť cesty bude zložená z jednej alebo dvoch plôch. Z jednej plochy za predpokladu napojenia sa rovnej cesty a z troch plôch za predpokladu sa napojenia bežnej cesty, ktorej stred je vyššie ako jej okraje. Pre kompatibilitu by výška stredu na styčnom bode kde sa bude v budúcnosti napájať cesta mala byť zhodná so stredom cesty pričom  treba vziať do úvahy aj vyvýšenie dané v config.txt. Najideálnejšia je zhoda vo všetkých nastaveniach keď potom pri nastavení krivkových bodov a povrchu na rovnakú hodnotu všetko vzájomne sedí. Keď túto časť dokončíme môžeme pristúpiť k otextúrovaniu železničného prejazdu pričom použijeme multy textúru. Keď dokončíme mapovanie textúr vytvoríme kópiu závory a premiestnime na opačnú stranu prejazdu. Celý prechod potom môžeme na skúšku exportovať do TRS ako scenery objekt WA zatiaľ bez funkčnosti a bez bodov na pripojenie ciest a koľajníc iba pre kontrolu správneho namapovania textúr
.




Prejazd má v súčasnosti 618 polygónov čo nieje práve málo, ale má aj veľa detailov ktoré sa dajú bez problému zjednodušiť, prípadne niektoré detaily vypustiť celkom a tak znížiť počet polygónov až na polovicu. Je vhodné ak si vytvárate svoje vlastné objekty pre určitú konkrétnu mapu a umiestnenie na nej, aby ste aj množstvo detailov a vypracovanie prispôsobili predpokladanému miestu umiestnenia čo do blízkosti trate a tiež predpokladaného počtu použití v mape. Ale treba si aj uvedomiť že pre hru je lepšie použitie menšieho počtu rôznosti objektov aj častejšie použitých pokiaľ máte dobre nastavenie cache kde si ich hra ukladá. Počet polygónov však zaťažuje procesor ktorý musí všetko prepočítať a generovať. V prípade že máte miesto kde je už aj tak mnoho objektov a  veľká hustota polygónov nieje príliš vhodné tam umiestniť takýto prejazd a miesto ešte viac zaťažiť. Lepšie je použiť jednoduchší. Ale naopak ak máte relatívne. prázdne miesto je použitie takéhoto prejazdu na mieste. Preto ako som už povedal pokiaľ staviate pre konkrétnu mapu všetko prispôsobte umiestneniu a nestavajte univerzálne.


Pomocné body pre cesty a koľajnice.

Aby sme mohli pripojiť cestu a koľajnice musíme pre TRS do objektu vložiť pomocné body. Body sa ukladajú do miesta pripojenia cesty (koľají) k objektu, sú obvykle v strede a označujú sa obvykle ako a.road1a, a.road1b, a.road2a, a.road2b, a.track1a, a.track1b, a pod. Číslo 0,1 a 2 označuje identifikáciu konkrétnej cesty, pretože v jednom objekte môže byť viac ciest ktoré sú od seba nezávislé, alebo na seba nadväzujú, sa spájajú. Písmeno "a" a "b" označuje konkrétny bod od , bod cez 1, bod cez 2,... bod po, pričom obvykle v "a" cesta začína a v "b" (pokiaľ nieje viac písmen) končí. Tieto názvy budú neskôr aj definované v config.txt a pokiaľ nebudú zhodné nebude možné cestu (koľaje) pripojiť. 
Položme si teda teraz body pre cestu a koľajnice. V COMMAND PANEL pod CREATE - HELPERS - POINT  v hornom pohľade položte body na kraj prechodu a stred budúcej cesty (porovnajte s koordinátami krajných vertexov prechodu). Prvý pomenujte ako a.road0a a druhý ako a.road0b. To samé spravte pre koľajnice a body pomenujte ako a.track0a a a.track0b. Výška bodov pre koľaje bude 0.0 a pre cestu podľa cesty pre ktorú staviate. Môže to byť aj záporná hodnota a záleží to od najviac používaných ciest ktoré budete k prejazdu pripájať.  Rozhodne je lepšie tieto body prispôsobiť svojim cestám a mať pekné rovné prejazdy ako ich spraviť univerzálne. Každopádne pri zápornej hodnote treba dávať pozor aby sa vám cesta ktorá ma obvykle stred 0.2 až 0.4 nad povrchom, šikmo neskosila do prechodu ak je táto hodnota príliš v mínuse.
Výšku kde bude cesta prechádzať zistite tak, že si zistíte výšku stredu cesty (napr. 0.3) a k tomu pripočítate výšku zobrazenia cesty nad povrchom udanú v config.txt. (napr. 0.2) Stred cesty sa teda zobrazí v skutočnosti 0.5 nad povrchom.
To samé si musíte zistiť pre okraj cesty (obvykle - 0.1 až 0.2 oproti stredu). Tejto výške musíte teda buď prispôsobiť výšku prejazdu (príliš vysoký utopí koľajnice), alebo adekvátne nastaviť hodnotu "Z" bodom pripojenia cesty. Teoreticky by teda
prejazd mal mať výšku 0.5, alebo bod pripojenia musí byť výška povrchu - výška zobrazenia. Teda ak máte povrch 0.3 a stred cesty 0.5 bude to -0.2. Do hry však ešte vstupuje profil cesty čo je obvykle v strede vyšší ako na okrajoch a  teda aj prejazd by mal byť rovnakého profilu. Ak je bod príliš vysoko alebo povrch prejazdu príliš nízko, tak sa vám po pripojení cesty táto zobrazí nesprávne a prekryje časť betónovej plochy
.




Ak naopak je vrch plochy príliš vysoko alebo bod pripojenia príliš nízko budete mať v spoji ostrú hranu a cesta vám pôjde v prejazde do jarku čo je ešte horší prípad a ako som si všimol dosť častý problém mnohého tvorcu.



Možno sa vám to zdá príliš veľa čísiel a príliš zložité, ale nieje to tak a má to veľa možností riešenia od samotného modelovania po úpravu ciest už priamo v editore máp. Dobré nastavenie je každopádne základ pekného vzhľadu prejazdov. Dôkazom nech je nasledujúci obrázok s použitím komponentov z mojej stavebnice ciest.



Treba si zvoliť čo chcete uprednostniť a často hľadať kompromis. Každopádne auta idúce vo vzduchu, je rovnakou chybou ako ich pohupnutie sa na prejazde, či nerovná cesta, pričom auto vo vzduchu sa mi zdá ako najmenšie zlo, lebo ak je auto správne postavené vo vzduchu vám nejazdí .
Takže naše body dáme do polohy 0.0 a ak cesta ktorú pripojíme bude vysoko, tak jej krivkové body znížime.



Teraz môžete exportovať prejazd do príslušného poadresáru Train Symulator\World\Custom\Scenery\zeleznicny_prejazd  pričom v configu musí byť okrem kuid a bežných parametrov
kind                                              mocrossing
category-class                               "BT"
mesh-table {
    default {
        mesh                                                            "prejazd.IM"  (ak sa tak volá exportovaný súbor im)
        auto-create                                                  1
    }
}

a nasledujúca definícia kde sú použité default implementované kuid cesty a koľajníc. Môžete však samozrejme použiť aj svoje vlastné, či celkom iné

attached-track {
    track_0 {
        track                    <kuid:-10:137>
        vertices {
            0                "a.track0a"
            1                "a.track0b"
        }
    }
    road {
        track                    <kuid:-1:100409>
        vertices {
            0                "a.road0a"
            1                "a.road0b"
        }
    }
}

V prípade, že máte použite - vymodelované - v objekte aj skutočné koľajnice v pravom menu v karte DISPLAY si po aktivovaní koľají zvoľte HIDE na ich deaktivovanie aby nerušili. Ak ste postupovali správne mať k dispozícii priecestie zatiaľ bez animácie závor.







Animácia

Najskôr si musíme nastaviť takzv. PIVOT body, čo sú body okolo ktorých sa daný objekt otáča a ktorý určuje jeho hlavný centrálny bod, ktorý určuje X,Y a Z koordinát objektu ako celku. Tieto body majú aj veľa možností využitia nielen pri modelovaní, posunoch, zarovnávaní a podobne. V našom prípade je ešte podmienkou, že celá pohyblivá časť závory je ako jeden objekt teda s pripojenými všetkými jej časťami.
Označte si teda závoru a kliknite v command panely na HIERARCHY, potom aktivujte kartu PIVOT a kliknite na tlačítko AFECT PIVOT ONLY. Nastavte bod tak aby bol v strede osy okolo ktorej sa bude závora otáčať a v strede stĺpika
.



Teraz zvoľte objekt prechod a atachnite k nemu aj stĺpy na ktorých sú upevnené závory. Potom aj tu zvoľte HIERARCHY,  aktivujte kartu PIVOT a kliknite na tlačítko AFECT PIVOT ONLY. Vycentrujte ho pomocou ALIGN TO WORLD a ak sa nenachádza v strede tak ešte CENTER TO OBJECT (jedine pre objekt prejazd). To samé spravíme aj so závorami kde už bod otáčania máme definovaný. Správne nasmerovanie týchto bodov je dôležité, lebo by mohlo prísť k posunom objektov počas animácie.

Teraz si vytvoríme 3 pomocné body - DUMMY v edit menu zvolíme objekty HELPERS  a tam máme tlačítko DUMMY. Jeden označíme ako b.r.prejazd, druhý b.r.zavora1 a tretí b.r.závora2
.




Prepneme na kartu DISPLAY a tam  v LINK DISPLAY aktivujeme dve zaškrtávanie políčka  DISPLAY LINKS a LINK REPLACES OBJECT čím sa zmení ak tvar našich pomocných bodov.



Teraz pomocou bežného ALIGN prirovnáme bod. b.r.prejazd s pivot bodom prejazdu, bod b.rzavora1 s pivot bodom závory1 a nakoniec bod b.r.zavora2 s pivot bodom závory 2.




Teraz vzájomne zlinkujeme body pričom vyberať budeme pomocou SELECT BY NAME aby sme minimalizovali chybu. Najskôr vyberieme prejazd a v hornej lište obrazovky klikneme na tlačítka SELECT AND LINK a SELECT BY NAME. 
Vo výbere vyberieme b.r.prejazd a zlinkujeme s tlačítkom LINK.
Potom cez tlačítko v hornej lište SELECT AND MOVE a SELECT BY NAME vyberieme  b.r.zavora1 a cez  SELECT AND LINK  -SELECT BY NAME prilinkujeme b.r.zavora2 a neskôr rovnako aj b.r.prejazd. Nakoniec závoru1 zlinkujeme s b.r.zavora1 a závoru 2 s b.r.zavora2. V SELECT BY NAME pri zaškrtnutom políčku DISPLAY SUBTREE by hierarchia mala vypadať nasledovne pričom  aj vizuálne sú objekty spojené
.




S pravou myšou klikneme na PLAY ANIMATION a v menu nastavíme parametri animácie tak že FRAME RATE zvolíme CUSTOM a FPS nastavíme na 10. V ANIMATION nastavíme LENGTH na 15, FRAME COUNT na 16 a END TIME na 15. Tým bude animácie viac realistická.



Teraz previnieme animáciu na koniec kliknutím na GO TO END. V políčku pod PLAY sa objaví číslo 15. Klikneme na veľké tlačítko ANIMATE vyberieme bod b.r.zavora1 a po ose "X" ho otočíme o 90 stupňov. To isté aj pre bod b.r.zavora2. Ako vidíte obe závory sa zdvihli.



Teraz deaktivujeme tlačítko ANIMATE a previnieme animáciu na začiatok kliknutím na GO TO START čím sa závory vrátia do pôvodného stavu. Kliknutím na tlačítko PLAY ANIMATION sa spustí animácia.



Samozrejme môžete si animovať okienko po okienku, ale pre tak jednoduchú animáciu to je zbytočné. Každopídne animácia je najkrajšia vlastnosť 3D objektov, kráľovna počítačovej grafiky a preto dávajte pozor aby ste jej neprepadli a neanimovali každý objekt čo postavíte. Bolo by to zbytočné zaťažovanie procesoru už aj tak dosť zaťaženého počtom polygónov a aj samotnou hrou.
Nakoniec  exportneme už hotový prejazd  do príslušného adresáru a následne animáciu pod názvom ANIM.KIN do rovnakého adresáru


Config.txt

Vytvoríme resp. doplníme ešte náš config.txt o parametre animácie a prípadne aj zvuku ak k prechodu máme aj vlastný zvuk vo formáte wav. Config bude vzýzerať nejako nasledovne.

kuid                       <kuid:XXXXXX:XXXXX>
kind                       "mocrossing"
region                    "Slovakia"
Type                      Zeleznicne prechody
light                       1
rotstep                   0.3
uncached_alphas    0
mesh-table {
    default {
        mesh                    "prejazd.im"
        anim                    "anim.kin"
        auto-create                1
    }
}
soundscript {
    dayloop {
        repeat-delay                0
        distance                10,150
        sound {
            prejazd.wav               
        }
    }
}
attached-track {
    track_0 {
        track                    <kuid:-10:137>
        vertices {
            0                "a.track0a"
            1                "a.track0b"
        }
    }
    road {
        track                    <kuid:-1:100409>
        vertices {
            0                "a.road0a"
            1                "a.road0b"
        }
    }
}
asset-filename              "pole"
category-region-0        "SK"
category-era-0             "2004"
category-class              "WS"
trainz-build                  2.0
username                    "prechod_2pr90_beton"



Teraz máte v ponuke váš prvý animovaný objekt.