(Problematice 3D
zobrazení jsem se začal věnovat už ve verzi 0.6, ale zatím zůstává poněkud
stranou. Grafické experimenty jsem posunul na zobrazování celých kolejišť.)
S verzí 0.6 vstupuji do druhé poloviny přípravné části vývoje projektu Železnice. Zatím jsem se problematice 3D zobrazení kolejiště vyhýbal, ale tento okamžik jsem měl už předem zvolený jako místo, kdy se pustím tímto směrem vývoje. Odhadoval jsem, že se někdy v tuto dobu objeví vhodné 3D grafické nástroje, které budou zdarma dostupné a spolu s momentálním výkonem počítačů upotřebitelné i na amatérské úrovni. Při úvahách o 3D grafice jsem zvažoval tyto tři kritéria:
- jaké zvolit grafický systém
- jakou zvolit programovou nadstavbu tohoto systému
- jaký zvolit nástroj (editor) pro vytváření 3D objektů
V prvním bodě se rozhodovalo mezi DirectX a OpenGL. Uvažoval jsem nad oběma, ale rozhodnutí spojené s druhým bodem rozhodlo ve prospěch OpenGL. Jako grafickou nadstavbu jsem si totiž zvolil Coin3D, který je stavěn právě na podpoře OpenGL. Důvodů pro tuto volbu bylo víc, ale rozhodla především snadná dostupnost, srozumitelná dokumentace a zjevně pokračující vývoj. Nejslabším bodem je tedy nyní vhodný grafický editor. Zde jsem si pohrál s několika (gmax , Blender, 3DCanvas), ale ve všech případech stojím před problémem exportu. Tato volba je tudíž zatím otevřená.
Objekty kolejiště, na kterých bude 3D grafika aplikována, lze rozdělit do čtyř kategorií
- koleje
- železniční vozy
- krajinný reliéf
- stavby a jiné objekty
Každá z těchto kategorií bude zpracovávána jinak. Např. koleje musí být generovány programově. Vozy a stavby bude třeba vytvořit v 3D grafickém editoru, avšak vozy budou zobrazovány jinými mechanizmy než stavby, protože budou na kolejišti v pohybu. Pro vykreslení krajinného reliéfu bude třeba vycházet z geografických dat a postupů.
První pokusy jsem dělal právě s kolejemi. Následující obrázek např. ukazuje jednoduchou rovnou kolej, která byla vygenerována programově a prozatímně opatřena primitivní texturou. V reálu bude samozřejmě použita textura realističtější:

Mnohem složitější je model oblouku. K jeho vygenerování jsou použity parametry určující poloměr a úhlový výsek. Složitost vzniklého objektu nejlépe přiblíží drátový graf na následujícím obrázku:

Objekt koleje je zde zobrazen pomocí 3D prohlížeče, který je součástí grafické knihovny Coin3D. Dělal jsem už i pokusy se zobrazením většího počtu takovýchto kolejových objektů (viz Download) a například tady se můžete podívat na 3D vzhled souboru Kolejiště.trd:

V poslední verzi je kamera umístěna na čelo vlaku, kterým s omezenými možnostmi (ovládat jej lze pouze klávesami šipka nahoru a dolů, nelze přestavovat výhybky) můžete kolejiště projíždět. Při průjezdu nelze si nevšimnout spousty problematických detailů počínaje ne úplně skvělou texturou (použitý jediný pražec nedává moc dobrý výsledek), pokračujíc nerealizovanými objekty výhybky a křížení, a konče nepříliš dobře navazujícími kolejemi.
Tři rozměry
Ačkoliv pro současné zobrazení kolejiště je použito ortogonální promítání, je kolejiště už v této verzi trojrozměrné. Každý objekt má i svoji výšku a v určité výšce je též umístěn. Výšku polohy objektu v určitém bodě kolejiště pod myší zobrazuje údaj na pravé části stavového řádku. Nejhmatatelnějším projevem přítomnosti výšky je umístění odbrzděného vlaku na koleji s dostatečným sklonem (tak 10 ‰). Vlak se samospádem rozjede.
Co dál
Docela velkou čáru přes rozpočet mi udělalo ukončení vývoje rozhraní Coin3D společností Kongsberg Oil & Gas Technologies. Coin3D se sice následně ujala počítačová komunita, ale jeho další vývoj je zatím fakticky zastaven. Pro mě zůstává otázkou, nakolik stávající stav systému dokáže zvládat tak rozsáhlé prostory, jaké je schopen obsáhnout Železnice. Zatím se mi poslední verzi podařilo rozchodit pod Windows 8 a implementoval jsem pohyb kamery umístěné v kabině lokomotivy.
Naposledy změněno 14-09-28