Lovíme Minótaura (1. časť, bludisko)
Tak trochu sa vrátime k nášmu obľúbenému bludisku, ktoré sme vytvárali v poličkový grafike. Tentokrát ale v plne 3D. A s lepšími príšerami.
Založte si nový program, Bludisko 3D. Zo všetkého najskôr budeme potrebovať návrh bludisko. Využijeme opäť poličkový grafiku a plochu, ktorá je na návrhy scén ako ušitá.
Pripravte si nejaké textúry, ktoré použijete na vytvorenie stien, podlahy a stropu. Môžete použiť tie, čo sú na konci lekcie. Každé políčko bude tvoriť 1 štvorcovú plochu s rozmermi 1 x 1 as vlastnou textúrou. Textúry použite o veľkosti 256 x 256 bodov (tj. 8 x 8 políčok). Pre všetky textúry budeme používať vyhladenie textúr stupňa 2. Tým sa síce všetky textúry zredukujú na rozmer 128 x 128 bodov, ale vyhladí sa tým artefakty vzniknuté prevodom True Color textúr do 256 farieb, ktoré používa Peter. Vďaka tomu, že prevody prebehli s ditheringom, vzniknú po zmenšení opäť textúry v True Color.
Pre každú textúru múru si pripravte jeden predmet s obrázkom múru. Predmety použite k návrhu bludisko. Každé políčko pre múr bude nahradené blokom až 4 stien s rovnakou textúrou. Prázdne políčko prekreslite obrázkom podlahy. Návrh by mohol vyzerať napríklad takto:
![3D grafika](images/41/images/img/petr_tutorial_bludiste1.jpg)
Program zahájime klasicky skupinou inicializácia programu a príkazom pre inicializáciou 3D grafiky. V programe budeme používať vyhladenie textúr 2, preto môžeme tento príkaz uviesť už nazačátku programu. Výsledkom bude hra bežiaci v celoobrazovkovom režime, preto pripravíme príkaz celoobrazovkový režim, ktorý zaistí prepnutie. Zatiaľ ho však necháme vypnutý (tlačidlom Vypnúť), pretože prepínanie videomódu chvíľu trvá a navyše môže mať za následok rozhodenie rozmerov niektorých okien, preto radšej program vyvíjame v oknovém režime.
Ďalej si pripravíme prázdnu funkciu vytvorenie 3D bludisko a nakoniec hlavné slučku programu ukončovaní stlačením klávesy Esc. Pretože sa bude jednať o 3D hru vceloobrazovkovém režime, môžeme si dovoliť ju preferovať pred ostatnými aplikáciami, zvolíme preto časovač s časom 0. Tým zabezpečíme maximálnu plynulosť chodu hry.
![3D grafika](images/41/images/img/petr_tutorial_bludiste_minotaurus2.gif)
Prejdeme na obsluhu vytváraniu bludisko. Vytvoríme len tie plochy, ktoré by sme mohli vidieť z priechodného políčka. Preto prejdeme postupne všetky políčka plochy a ak narazíme na prázdne (priechodná) políčko, vytvoríme podlahu a strop. Potom testujeme susedné políčka a ak nie je na nich prázdne políčko, vytvoríme tam príslušnú stenu.
Na navigáciu políčok plochy využijeme Petra. Vypneme jeho viditeľnosť (nepotrebujeme aby bol animovaný, rovnako ho v 3D nevidíme) a nastavíme riadok na 0 a smer doprava. Potom prechádzame postupne všetky riadky a pozície plochy a testujeme, či sme narazili na priechodné políčko.
![3D grafika](images/41/images/img/petr_tutorial_bludiste_minotaurus3.gif)
Narazíme Ak na prázdne (priechodné) políčko, zo všetkého najskôr vytvoríme podlahu. Len z toho jednoduchého dôvodu, že ju môžeme ľahko vidieť počas ladenia. Podlaha bude objekt steny (ktorý je tvorený dvoma pravouhlými trojuholníkmi). Stena sa vytvorí ako stojace, otočená prednou stranou smerom k nám (my sedíváme smerom kladnej osi Z). Pretoe rotáciou podľa osi X o 90 stupňov položíme na zem. Potom ju nastavíme na súradnice zhodné so súradnicami Petra. S tým však, že v našom 3D svete používame osu Y smerom nahor a os Z smerom od nás vpred. Kým na plochu sa pozeráme pohľadom zhora. Preto nastavíme súradnicu Z steny podľa súradnice Y Petra. Stena má rozmer 1 x 1, preto steny môžeme jednoducho skladať vedľa seba podľa políčkových súradníc, ktoré sa tiež líši o 1. U 3D objektov je nula súradníc v stredu objektu, preto pripočítame k súradniciam 0.5, aby podlaha ležala v intervale súradníc 0 AZ1. So stenami bludisko nebudeme v budúcnosti už nijako manipulovať, preto si ich ID nebudeme uchovávať a môžeme teda použiť pre všetky steny jednu spoločnú premennú pomocné ID, ktorú si vytvoríme len dočasne v lokálnych premenných funkcie.
![3D grafika](images/41/images/img/petr_tutorial_bludiste4.gif)
Aby sme mohli vyskúšať, jaknám funguje vytváranie podlahy, musíme si najskôr posunúť kameru na pozícii, z ktorej bludisko dobre uvidíme. Kamera je tiež jeden z objektov, má číslo 1. Vyberte ju ako aktívny objekt. Nastavením súradnice X na 10 ju posúva do stredu bludiska. Nastavením súradnice Y na 18 ju posunieme tak nejako primerane nahor (hodnotu sme zistili skusmo). Nastavením súradnice Z na -6 cúvne trochu dozadu, to aby sme videli celé bludisko. No a nakoniec nastavením rotácie X na hodnotu 1 sklopíme svoj pohľad trochu dole. Hodnota bola stanovená opäť skusmo. Je to v radiánoch, takže by to bolo asi tak 52 stupňov.
![3D grafika](images/41/images/img/petr_tutorial_bludiste5.gif)
Keď teraz program spustíte, mali by ste vidieť vytvorená prázdne políčka bludisko (podlaha).
![3D grafika](images/41/images/img/petr_tutorial_bludiste6.jpg)
Strop vytvoríme podobne ako podlahu. Preto skopírujeme skupinu pre vytvorenie podlahy a len ju zmeníme a doplníme. Rotáciu podľa osi X musíme robiť obráteným smerom, preto namiesto 90 stupňov použijeme uhol 270 stupňov. Podlaha bola vo výške 0, zatiaľ čo strop bude vo výške 1. Preto nastavíme súradnicu Y na 1. Nakoniec pridáme malú svietivosť povrchu stropu, pretože je osvetlený zhora a bol by inak príliš tmavý.
![3D grafika](images/41/images/img/petr_tutorial_bludiste7.gif)
Aby sme vytvorený strop videli, stačí len aby sme zmenili znamienko súradnice Y kamery na -18 a znamienko rotácie podľa osi X na -1. Pri spustení by sme mali vidieť strop, ktorý je podobný zrkadlovo otočené podlahe.
![3D grafika](images/41/images/img/petr_tutorial_bludiste8.jpg)
Pri vytváraní stien budeme testovať susedné políčka. Ak sa nejedná o prázdneho (priechodná) políčko, vytvoríme pred sebou stenu. Textúru nastavíme podľa obsahu políčka. Pre múr 1 zvolíme vetva inak vykonaj príkazy, ktorá zahrnie nielen políčko pre múr 1, ale aj okraj plochy. Múr otočíme správnym smerom podľa aktuálneho smeru otočenie Petra a posunieme na správnu pozíciu, opäť výpočtom zo súradníc Petra a smeru otočenia. Nastavením súradnice Y na 0.5 zabezpečíme správnu výšku múru nad zemou. U 3D objektov sa súradnice nastavujú pre stred objektu. Podlaha má Y súradnicu 0, strop 1 a preto múr bude mať 0.5. Na záver nastavíme viditeľnosť pre obe strany steny - to je len pre ladiace účely, až bludisko vyskúšame, tak príkaz opäť zrušíme.
![3D grafika](images/41/images/img/petr_tutorial_bludiste9.gif)
Po spustení by mali byť vidieť múry okolo ciest. Nezabudnite ale ešte najskôr vrátiť kameru na kladnú súradnicu Y (18) a rotáciu X na 1.
![3D grafika](images/41/images/img/petr_tutorial_bludiste10.jpg)
A po zrušení príkazu providitelnost oboch strán vidíme iba správnej strany múrov.
![3D grafika](images/41/images/img/petr_tutorial_bludiste11.jpg)
.... pokračovanie nabudúce
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 390x (1.17 MB)
Aplikácia je vrátane zdrojových kódov v jazyku Petr Lite (sú obsiahnuté v EXE súbore, ktorý možno v programe priamo otvoriť)