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:
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.
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.
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.
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.
Keď teraz program spustíte, mali by ste vidieť vytvorená prázdne políčka bludisko (podlaha).
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ý.
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.
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.
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.
A po zrušení príkazu providitelnost oboch strán vidíme iba správnej strany múrov.
.... 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ť)