Hlavní stránka Multimédia Hry a zábava Hrátky s Unreal Engine - Část II: Příběh dvou místností
Hrátky s Unreal Engine - Část II: Příběh dvou místností
autor: Aleš Ulm , publikováno 28.5.2010
Hrátky s Unreal Engine - Část II: Příběh dvou místností

Ve druhé části našeho výukového seriálu o Unreal Development Kitu si probereme tvorbu základních objektů a jejich spojování do větších celků. Vytvoříme si dvě jednoduché místnosti a spojíme je pěkně chodbou. Dále se podíváme na základy osvětlení objektů a řekneme si něco o tom, jak světlo ve 3D scéně funguje.


První díl série Hrátky s Unreal Engine - Část I: První krok do nereálna najdete zde.
Druhý díl Hrátky s Unreal Engine - Část II: Příběh dvou místností najdete zde.
Třetí díl Hrátky s Unreal Engine Část III: Konec modrobílých kachlíků najdete zde.
Čtvrtý díl Hrátky s Unreal Engine Část IV: Skriptujeme s Kismet najdete zde 
Pátý díl Hrátky s Unreal Engine Část V: Trocha pohybu neškodí najdete zde
Šestý díl Hrátky s Unreal Engine VI: Kamera, akce, jedem… najdete zde
Sedmý díl Hrátky s Unreal Engine VII: Klid před bouří najdete zde

V tomto díle našeho seriálu toho musíme stihnout opravdu hodně, takže se nebudeme příliš zdržovat předmluvou a pustíme se rovnou do toho. Na chvíli zapomeneme na pěkné předpřipravené demonstrační úrovně a zkusíme si vytvořit něco vlastního (a to i přes jisté nezanedbatelné riziko, že náš výtvor bude nakonec vypadat o něco málo hůř než zmíněné úrovně z Unreal Tournamentu III).

Základní termín, který musíme zmínit, než začneme vytvářet naši vlastní úroveň, je BSP. BSP je zkratka děsivě znějícího sousloví Binary Space Partitioning. Zjednodušeně řečeno je to matematická metoda popisu prostoru jeho rozložením na menší oblasti. Abyste mohli udělat v UDK vlastní hru ale není naštěstí ani v nejmenším nutné vědět, jak přesně tahle věc vnitřně funguje. Pokud si chcete přečíst více, můžete se podívat buď na hutnější anglickou wikipedii, nebo se spokojíte s méně hutným českým překladem. A k čemu je tedy vlastně vůbec dobrá?

Hrátky s Unreal Engine - Část II: Příběh dvou místností

Dvourozměrný případ BSP - pouze pro levé větve stromu.
1. A je kořenem stromu, reprezentuje všechny hrany
2. A je rozdělen na B a C
3. B je rozdělen na D a E.
4. D je rozdělen na F a G, které jsou konvexní, tedy tvoří listy stromu.
Zdroj wikipedia

Jedním ze základních problémů, se kterými se potýká ve větší či menší míře každý z enginů, je otázka viditelnosti. Zjednodušeně řečeno – když se ve hře ve městě postavíte čelem ke zdi a vidíte jen plochu s pár cihlami (tvořenou nejspíš jen několika desítkami polygonů), tak to neznamená, že to samé v tu chvíli „vidí“ i engine. Pokud není použita nějaká vychytralá metoda ke zjištění toho, co hráčova postava skutečně právě vidí a jaké objekty jsou zakryté, je dost dobře možné, že engine za tou zdí zpracovává zcela zbytečně objekty složené z desítek či stovek tisíc polygonů – domy, stromy či postavy. Všechny tyhle objekty poctivě projde a zakreslí. Nakonec je překreslí zdí, protože ta je k vám nejblíž a pak vám ten výsledek ukáže na monitoru. Vy máte krásný výhled do zdi a počítač dává zuřivým roztáčením všemožných chladicích větráčků najevo, že nedělá rád zbytečnou práci. Pokud se vám tedy někdy ve hře stalo, že vám fps kleslo někam pod hratelnou úroveň i přesto, že jste na monitoru viděli jen nějakou poměrně jednoduchou překážku, může to být způsobeno právě tím, co jsme si tu popsali.

Hrátky s Unreal Engine - Část II: Příběh dvou místností
Teorie zatím zní složitě, ale nevzdávejte to.
Obrázek ze hry Army of Two: The 40th Day

Využití BSP je jeden ze způsobů, jak může engine zjistit, co leží před a za tou stěnou a nepotřebným věcem nevěnovat svůj drahocený čas. K tomu je však zapotřebí, aby bylo prostředí které bere při svých kalkulacích v potaz, vytvořeno speciálním druhem objektů, které se nazývá (a to je už opravdu poslední strašidelná zkratka v tomto dílu) CSG, neboli Constructive Solid Geometry. Tady už jsou informace pouze v angličtině. Když z ní správným způsobem vytvoříte podlahy, stěny a stropy, tak si můžete být víceméně jistí, že cokoliv zůstane za nimi nebude engine zajímat. Tahle metoda se nepoužívá jen pro určování toho, co se má vykreslovat – své využití nachází například i při časově náročné detekci kolizí mezi objekty. Na tomhle místě je vhodné říct ještě jednu věc – přestože BSP a CSG jsou odlišné věci (způsob optimalizace vs. vytvořené objekty, se kterými pracuje), obvykle se všechno hromadně (a nesprávně) označuje BSP. A když už jsme u nesprávného používání termínů – předem se tímto omlouvám všem programátorským či grafickým puristům, kteří těžce nesou nepřesné označování věcí. Můj osobní názor je ten, že občas je lepší mít srozumitelný text za cenu jistého zjednodušení, než se v něm dokola zaklínat přesnými, avšak často nesrozumitelnými formulacemi. Navíc snaha zjednodušeně vysvětlit často poměrně komplikovanou problematiku s sebou přináší nutnost zaměřovat se hlavně na obecné základy a pokud možno ignorovat specifické případy a výjimky z pravidel. Primárním úkolem tohoto seriálu je co nejrychleji naučit potenciální uživatele pracovat s UDK. Nic víc. Berte to prosím tedy tak, odložte ty kameny a odpusťe mi některá budoucí lehce pokulhávající přirovnání.

Hrátky s Unreal Engine - Část II: Příběh dvou místností

Začneme tím, že si vytvoříme jednoduchou místnost. V menu pod položkou File vyberte New… a zvolte Additive Geometry Style. Možná teď někoho z vás napadlo místnost vytvořit vcelku či jako jednotlivé části v některém z modelovacích programů jako je Max či Maya. Jenže stěna takové místnosti by pro engine byla jen dalším běžným modelem, skrze který „vidí“ a my bychom žádný výkon neušetřili. Proto radši místnost vytvoříme rovnou pomocí CSG.



 
Komentáře naleznete na konci poslední kapitoly.
128 čtenářů navrhlo autorovi prémii: 64Kč Prémie tohoto článku jsou již uzavřené, děkujeme za váš zájem.
Tento web používá k poskytování služeb soubory cookie.