3D grafikan·vodzbytečně počítaly při kolizích. RemoveDoubles najdete v editačním okně (EditButtons), pokud jste v editačním modu,stiskněte [F9]. Ideální je nevnořovat ani stěnymezi místnostmi, ale pěkně je mít spojenés celou budovou.Normály směřují ve směru pohledu, tedy zestěny ven, což je důležité <strong>pro</strong> zobrazení textur.Textura se zobrazuje ve směru normály.Zobrazení polygonů pouze v jednom směru jenejzákladnějším systémem optimalizace.Grafický engine zobrazuje pouze ty stranyobjektu, které jsou svou normálou namířenyna kameru. Tím se šetří čas zbytečnéhovýpočtu polygonů, které uživatel stejněnevidí. Normála určuje, jak se nám bude<strong>pro</strong>jevovat dopad světla na objekta v Blenderu určuje také stranu polygonureagující na objekty při kolizích. Zapnutíkolize na daný polygon najdete ve Face módu(Face Mode) po stisku klávesy [F]a v editačním okně (Edit Buttons - [F9]).V záložce TextureFace povolíte nebozakážete Colli<strong>si</strong>on.Změnit vlastnostněkolika polygonůnajednou můžetetlačítkem CopyDraw Mode, které zkopíruje vlastnostiz aktuálního (posledního) vybranéhopolygonu na všechny zvolené polygony.Nyní <strong>si</strong> náš model otexturujeme. Pokudvytváříte dům, můžete použít UV CubeMapping, náročnější zřejmě použijí UV LSCMmapování. Použité textury by měly býtv rozlišení násobku 2. To znamená, že našetextury by měly mít rozlišení 2 x 2, 4 x 4...128 x 128, 512 x 512 bodů a tak dále. Většinadnešních grafických karet podporuje i většírozlišení než 1024 x 1024 bodů. Pokud všakchcete mít vaši aplikaci alespoň trochukompatibilní s méně vybavenými počítači,používejte maximální rozlišení textur 1024 x1024 bodů. Tyto rozměry textur vycházejíz matematického principu, který používajígrafické karty <strong>pro</strong> ukládání do své paměti.Některé dnešní karty mají dokonce i možnostpoužívat jiné, nestandardní rozlišení textur.Hra vám s nestandardním rozlišením texturbude fungovat, ale zbytečně kartu zbrzdítea nevyužijete ji na 100 %. Na okna je vhodnépoužít texturu mraků s malým rozlišením,namapovanou jako Reflexní (Reflection).Nastavení reflexnosti najdete v UV editačnímokně v menu Image > Realtime TextureMapping > Reflection.Pro použitíprůhlednosti zapněteAdd ve Face móduv editačním okně(Edit Buttons),záložka Texture Face(odstíny šedi určujístupeň průhlednosti)nebo Alfa, pokud mávaše textura alfakanál. Otexturovanýmodel může vypadatjako na dolnímobrázku.Náš domek s texturami vypadá stáleponěkud nudně. Přidáme tedy do scény pársvětel podle našeho vkusu a nezapomenemezapnout u polygonů reakci na světlo.Zobrazení objektu v Textured módu je téměřidentické s výsledkem, který se nám zobrazív Game Enginu. Rozdíl mezi osvětlenýma pouze otexturovaným objektem můžetevidět na obrázcích ve spodní části stránky, kdeobrázek vpravo je osvětlený model. Nemáte-lijiž ve scéně kameru, přidejte <strong>si</strong> ji do scényvolbou Add > Camera. Tím určíte enginuvýchozí místo a úhel pohledu.Ujistěte se, že jste v objektovém módu(Object Mode) a stlačte klávesu [P],přičemž kurzor musí být nad 3D oknem.Klávesa [P] spustí náš objekt v hernímenginu. Někteří se mohou divit, <strong>pro</strong>č sedívají na scénu z jiného směru, než jenastavená kamera. Pozice kamery je důležitá<strong>pro</strong> Game Engine po exportu dosamospustitelné aplikace. Při práciv Blenderu se na hru díváme přes aktuálníkameru. Abychom <strong>si</strong> mohli objekty <strong>pro</strong>hlížet,je zapotřebí dívat se skrz určitou kameru.Kamera v Blenderu existuje, i když ji nevidítea dokonce ani v outlineru není vidět.Takováto kamera je automaticky součástí3D okna a my se skrz ni díváme při pohybu3D scénou. Abyste <strong>si</strong> mohli scénu <strong>pro</strong>hlížetpomocí vaší kamery, je třeba určit ji jakovýchozí. Vyberte kameru a stlačte [CTRL] +[0]. Pohled skrz kameru zvolíte klávesou [0]na numerické klávesnici.Rozdíl mezi zobrazením v Blenderu a pospuštění herního enginu je téměř nepatrný. Toje jedna z velkých výhod Blenderu a jehoGame Engine implementace. Vytvářímea vidíme to, co nám zobrazí herní engine,přičemž pracujeme v 3D modeleru.Nyní máme připravený model domu.Dokončíme scénu a vytvoříme <strong>si</strong>jednoduchého Avatara. Přidejte <strong>si</strong> do scénykostku a obraťte její normály do jejíhostředu. Pro obrácení normál můžete použítklávesu [W] s kurzorem nad 3D oknema v menu vyberte Flip Normals. Přepněte doobjektového módu a zvětšete <strong>si</strong> kostku, takaby její dolní stěna tvořila zem pod domema okolní stěny umožňovaly dostatečnýodstup <strong>pro</strong> pohyb Avatara kolem domu.Podlahu <strong>si</strong> v editačním módu rozdělíme opětpomocí klávesy [W]. Tentokrát v menuvybereme Subdivide. V objektovém módupřepněte do Face módu [F] a vybertešachovnicově každý druh face. Poté přepnětedo bodového módu (Vertex Mode - [v]).V Edit Buttons po stisku [F9] v záložce Paintzvolíte barvu, v mém případě černoua stlačíte Set VertCol. Tím obarvíte bodyvybraných polygonů. U stěn zvolímev editačním módu (Edit Buttons) záložkuTexture Face Invi<strong>si</strong>ble a vymažeme stropkostky, který nebudeme potřebovat. Připozdějším pohybu scénou pak stěnyneuvidíme. Engine bude stěny počítat jakokolizní a my při pohybu scénounevypadneme z definovaného boxu.Avatar, základní logika hryKonečně se dostáváme k tvorbě Avataraa ukážeme <strong>si</strong> základy objektového<strong>pro</strong>gramování v Blenderu.Z menu přidáme prázdný objekt volbouAdd > Empty. Tento objekt představuje bodv <strong>pro</strong>storu neobsahující informace o topologiiobjektu. To je vše, co potřebujeme <strong>pro</strong>vytvoření Avatara. Klávesami [ALT] + [R]srovnáme osy aktuálně vybraného objektuEmpty s osami scény. V okně s herní logikou(Logic Buttons - [F4]) jsou čtyři oblasti. Nalevé straně je tlačítko Actor určující, jestli117 15
n·vod3D grafikabude objekt aktivním objektem ve hře.Tlačítko Property slouží k přidání<strong>pro</strong>měnných hodnot aktuálnímu objektu(momentálně jej nebudeme potřebovat).Tlačítko Bounds určuje, který zástupný objektbude zvolen <strong>pro</strong> výpočet kolizí. Stisknemetlačítko Actor, jež nám zobrazí další možnostiGhost a Dynamic. My potřebujeme, aby seobjekt choval dynamicky, takže vyberemetlačítko Dynamic. Opět se nám nabídkatrochu rozšíří, zůstaneme však u tohotonastavení. Tím jsme nastavili Empty objektjako jednoduchý dynamický objekt reagujícína polygony se zapnutou kolizí a s ostatnímidynamickými objekty. Kolem Empty objektuse vytvořil čárkovaný kruh, určující velikostdynamické obálky objektu. Jeho velikosturčuje hodnota Size ve skupině tlačítek podtlačítkem Actor. Umístěte střed objektuzhruba pod výškou pasu vzhledemk <strong>pro</strong>porcím vašeho domu. Size nebolivelikost dynamické obálky upravte tak, abybyla lehce nad zemí. Umístěte kameru vevýšce hlavy nad Empty objektem, tak abysměřovala na dům. Vybereme kameru jakoprvní (Child) a s klávesou [SHIFT] pakvybereme Empty objekt (Parent). Zkratkou[CTRL] + [P] vytvoříme závislost kamery naobjektu, při jeho pohybu scénou pak budekamera následovat jeho pohyby.Nyní <strong>si</strong> vysvětlíme základní logiku<strong>pro</strong>gramování <strong>pro</strong> Blender engine. Již mámepředstavu o tom, co znamenají možnosti veskupině Actor. Nyní se podíváme, k čemuslouží Sensory, Controllery a Actuatory.Sensor, jak název napovídá, je senzor, kterýreaguje na akci odpovídající danému typua jeho nastavení. Dále pošle informaciControlleru. Controller ji předá buďto PythonScriptu a nebo ve většině případů Actuatoru,vykonávajícímu jednu z námi vybraných akcí.Pokud kliknete na jméno Sensoru (výchozívolba Always spustí akci v každém cyklu běhu<strong>pro</strong>gramu), objeví se vám menu s typysenzoru. Vyberte Keyboard (klávesnice),jelikož budeme potřebovat informace o tom,která klávesa byla stlačena a na základě tétoinformace budeme vykonávat akce, pohybovatAvatarem.Vybereme Empty objekt a přidáme čtyřisenzory tlačítkem Add ve sloupci pod Sensors.Všechny senzory změníme na Keyboard. Pokliknutí do prázdného pole vedle nápisu KeySensor a následném stlačení klávesy zvolíme,na kterou klávesu bude senzor reagovat. Kekaždému senzoru přiřadíme nejlépe jednu zešipek <strong>pro</strong> pohyb do stran. Zaktivujte u každéhosenzoru tlačítko nahoře v levém rohu. Tím <strong>si</strong>zajistíte, že vám senzor bude posílat informacepo celou dobu stlačení klávesy. Přidáme čtyřiControllery a čtyři Actuatory. Kliknutím nakuličku u Sensoru a tažením ke kroužkuControlleru <strong>pro</strong>pojíme každý jednotlivý Sensors Controllerem a Controller s Actuatorem. Popřidání Actuatoru nám Blender nabídneMotion Actuator, kde jsem nastavil <strong>pro</strong> pohybvpřed Force v ose X na 40 a <strong>pro</strong> pohyb vzad-40. Pro rotaci doprava jsem zvolil Rot v ose Y0.03 a do levé strany -0,03. Nastavení záleží navelikosti scény a natočení vašeho Emptyobjektu vůči scéně (tlačítka směrů jsouv pořadí X, Y, Z).Po stlačení klávesy [P] byste měli být schopnichodit ve scéně dopředu i dozadu a otáčet seve svislé ose, máte-li správně nastavenénormály a kolize na polygonech. Váš Avatarbude kolidovat se stěnami a dovolí vám<strong>pro</strong>cházet se kolem domu, v ideálním případěi uvnitř.Pokud jste s vaším nastavením spokojenia chcete váš výtvor prezentovat mimo aplikaciBlenderu, stačí otevřít menu File a zvolit SaveRuntime. Na platformě Windows je třebak vytvořenému souboru přidat dynamickéknihovny (*.dll) z adresáře Blenderu(python24.dll, SDL.dll). Tím získáte plněnezávislou aplikaci, kterou spustíte na každémpočítači se systémem Windows. Na Mac OSplatformě nic takového není potřeba a naLinuxu se vám také vytvoří samospustitelnáaplikace, která nepotřebuje žádné speciálníknihovny (samozřejmě záleží na nastaveníLinuxu).Na první pokus se může zdát nastavenísložité, ale po troše praxe oceníte rychlost,s jakou vám Blender umožní vytvořitinteraktivní scénu, a to i bez znalosti<strong>pro</strong>gramování. Pokud umíte <strong>pro</strong>gramovatv Pythonu, dostáváte do ruky velice <strong>si</strong>lnýnástroj. Blender Game Engine se hodí spíše natvorbu menších <strong>pro</strong>jektů, na art <strong>pro</strong>jekty,architektonické vizualizace a menší komerčníaplikace.BudoucnostBlender Game Engine momentálně zažíváznovuzrození v podobě implementace novéhodynamického enginu Bullet(www.continuousphy<strong>si</strong>cs.com/Bullet) a velicekvalitního grafického enginu OGRE(www.ogre.org) s podporou nejen OpenGL,GLS shaderů a DirectX. Informace a rady, jakpoužívat Blender Game Engine, najdetenejlépe na fóru www.blenderartists.org/forumnebo na českém fóru na stránkáchwww.blender3D.cz/forum.Jan Mucska16 117