Obsah

Technická zpráva

Blender vs. Second Life

Ačkoliv je v zadání bakalářské práce uvedeno Prezentace FIT v Second Life, po první konzultaci s vedoucím bakalářské práce Doc. RNDr. Pavlem Smržem, Ph.D. (dále jen vedoucí) jsme se dohodli že je v podstatě jedno jaký software použiji. Důležité je především zaměření na prezentaci videa. Ihned mě napadl Blender, především pro mé dlouhodobé zkušenosti s ním. Nyní si oba produkty představíme.

Second Life

Second Life (dále SL) je rozsáhlý virtuální svět abstrahující internet, avšak na komerční bázi. Po registraci si může uživatel přizpůsobit svého avatara a vyrazit do „světa“. Namísto dvourozměrných webových stránek se zde ale setkáte s trojrozměrným světem. Jako abstrakce serverů jsou zde ostrovy či jiné územní jednotky. Toto území má ovšem ve správě pouze společnost Linden Lab který svět Second Life provozuje, a samozřejmě je nerozdává zadarmo.

Plocha parcely [m²] Měsični poplatek [USD]
512 5
1024 8
2048 15
4096 25
8192 40
16384 75
32768 125
65536 195

1)

Výhodou je multiplaformnost tohoto řešení. Klient pro SL existuje pro OS Windows, Linux i Mac. Obsah je navíc dostupný odkudkoliv on-line. Z toho plyne snadná údržba obsahu. SL umožňuje streaming zvuku i videa včetně VoIP komunikace.

Blender

Blender je komplexní nástroj pro práci s 3D grafikou vyvíjený jako open source. Umožňuje vše od modelování, texturování přes animace až po pokročilý rendering. Navíc obsahuje tzv. Game Engine (dále GE) umožňující interaktivitu a její programování pomocí jazyka Python.

Problémem se zprvu zdálo ono přehrávání videa. Oficiální poslední verze v zimě 2008 byla 2.48a, která sice měla značně rozšířený GE z projektu Apricot 2), navíc má už delší dobu možnost výstupu výsledné animace přímo do videa díky FFmpeg, avšak přehrávání videa v GE implementována není. Po položení otázky na neoficiálním (avšak nejpoužívanějším) fóru o Blenderu3) jsem zjistil že v SVN verzi je plugin který umožňuje vykreslování videa do textury.

Making of

Modelování

Blender umožňuje několik způsobů modelování: polygonové, meta objekty, NURBS plochy, beziérovy křivky. Nejvíce je ovšem optimalizován pro první možnost, která je také ve světě 3D grafiky nejpoužívanější a pro hranaté budovy se také hodí nejvíce. Při modelování jsem vycházel z mapek fakulty4), vlastních znalostí a CAD výkresů které mi poskytl Lukáš Duránik.

Modelování probíhalo tak, že jsem si zobrazil scénu shora a na pozadí umístil staženou mapku fakulty. Podle mapky jsem si polygony „obtáhl“ okraj budovy. Poté jsem posunul 3D kurzor (bod, na který se vkládají nové objekty) o jeden dílek výš, skryl si nižší patra budovy, nahrál novou mapku patra a tu opět „obtáhl“ polygony. Takto jsem si vytvořil řezy pater budovy.

Následovalo vyplnění prostoru mezi řezy facy (ploškami) jako obvodovými zdmi. Blender umožňuje vytváření tří a čtyřhranných faců, což byl občas problém zvolit vhodné rozmístění. Preferovány jsou čtyřúhelníky (quady). Ty mají tu výhodu, že lze vždy určit dvě protější hrany a díky této vlastnosti vybírat celé loopy (smyčky) quadů, což bývá velmi užitečné. Bohužel, občas nebylo zbytí a bylo nutné použit trojúhelníky. Po dokončené této fáze již budovy na prvbní pohled vypadaly tak jak mají.

Pokud jste se ale podívali na jejich drátěný model, zjistili jste, že je zde spousta zbytečných vertexů a hran. Pokud totiž některá obvodová zeď byla vysoká přes všechny patra, byla tato zeď podélně rozdělena v jednotlivých patrech, a tak zdánlivě jedna rovná plocha byla ve skutečnosti spojením více ploch. Následovala tedy fáze optimalizace drátové sítě při které byla skoro celá budova smazána, a zůstaly jen ty vertexy a hrany, na nichž skutečně dochází k nějakému zlomu v geometrii budovy. Následovalo opětovné vytvoření faců a geometrie budovy již byla ve své finální podobě. Při modelování dalších budov a objektů byla tato fáze částečně sloučena s fází předchozí.

Poslední důležitou částí bylo rozložení 3D modelů do 2D souřadnic5) pro pozdější texturování. Tato činnost je v Blenderu velmi hezky vyřešena. Stačí se vrátit do dětských let a uvažovat o budově jako o vystřihovánce. Pak jen stačí vybírat vhodné hrany (zde se opět hodí výběr celých smyček) a označovat je jako řezy (švy, seams). Pak jen stačí kliknout na tlačítko Unwrap a Blender se pokusí rozložit model do plochy podle Vámi zadaných řezů. Pokud jste řezy umístil správně, vznikne vám krásné pravoúhlé rozložení.

Každá z budov (Starý pivovar, klášter, E1xx, děkanát) byla modelována zvlášť do jednoho .blend souboru.

Ilustrační obrázek

Ilustrační obrázek

  1. Půdoryst pater budovy obkreslené z orientačního plánku.
  2. Vyextrudované půdorysy. Všimněte si, že vybraný vertex je napojen pouze na 1. patro, nikoliv přízemí. Modré čáry trčící s polygonů naznačují směr normál. Ty musely být upraveny, aby směřovaly vně objektu, protože Blender po extrudování jen z obrysu vždy alespoň jednu otočil špatným směrem.
  3. Objekt s opravenou geometrií. Byly odstraněny 2 vertext vpravo tak, aby se celá pravá stěna dala nahradit jedním polygonem namísto dvou.
  4. Finální podoba vzorové budovy, dvojice předních a zadních polygonů byly spojeny do FGonu (falešného polygonu), protže Blender zvládá maximálně čtyřúhelníky. Také bytly doplněny střechy.

Texturování

Po dokončení modelů je potřeba je potáhnout texturami, aby nevypadaly jako šedé kostky.

Texturování v Blenderu se skládá ze tří kroků. Nejprve mu řeknete zdroj textury. Zdroje mohou být v zásadě dvou typů – bitmapový obrázek nebo procedurální, definovaná různými matematickými funkcemi. Game engine ale zvládá pouze bitmapové obrázky, takže se procedurálními nebudu dále zabývat. Procedurální textury stejně nejsou pro fotorealistické texturování vhodné.

Po zadání textury nastavíte její mapování na povrch. Typicky jako na plochu, krychli, kouli, válec, ale především UV. UV mapování umožňuje trojrozměrný objekt rozložit do dvou rozměrů a poté na něj velmi přesně nanášet texturu. UV je tedy ideální volba pokud potřebujete aby vám textura na povrchu seděla tam kde má.

Poslední volbou je co má textura ovlivňovat. Kromě zřejmé změny barvy povrchu může textura upravovat také sílu odlesků, průhlednost, zrcadlivost, směr normály na povrchu (normal nebo bump mapping) a dokonce skutečně deformovat geometrii povrchu (displacement mapping, je ale nutné mít dostatečně hustou síť). Je možné aby jedna textura ovlivňovala i více vlastností zároveň, ale v praxi se používá jedna textura pro jednu materiálovou vlastnost.

Získávání obrázkových textur

Pro získání textur z fakulty jsem se do školy vydal s kompaktním digitálním fotoaparátem Canon PowerShot A540. Cílem bylo získat co možná nejvíce použitelných fotografií. Získané fotografie by se daly rozdělit do dvou kategorií: textury, které by měly jít vedle sebe naskládat jako dlaždice, a zbytek.

Mezi dlaždicovatelné lze zařadit například fotografii povrchu na nádvoří kláštera. Při focení dlaždicovatelných textur je třeba si pohlídat několik věcí. Fotografovat pokud možno kolmo na povrch, aby nedocházelo k deformaci perspektivou a pokud možno redukovat měkké odlesky (například na podlaze před učebnou D105). Takto získané obrázky byly v GIMPu6) ořezány na čtverec a zmenšeny na rozměr mocniny dvou (nejčastěji 512 * 512 pixelů). Jeden z neoficiálních pluginů pro GIMP je i gimp-texturize7) sloužící k syntéze textur. Tomu jsem zadal aby mi z připraveného čtvercového obrázku vyrobil dlaždicovatelnou texturu o rozměrech 1024 * 1024 pixelů. Procento úspěšnosti bylo asi 50 % protože občas vyrobil něco co neodpovídalo vůbec mým požadavkům, jindy ale svou práci odvedl dokonale. Bophužel, rychlost tohoto pluginu není nikterak závratná, navíc není vícevláknový, takže syntéza občas trvala i více než hodinu. Pokud gimp-texturize selhal, nebyla jiná možnost než použít vestavěný plugin GIMPu pro udělání dlaždicovatelných obrázků. Výsledky z něj nejsou tak hezké jak ideální výstupy z gimp-texturize, ale jiná možnost nebyla.

Interaktivita

FIXME