Tak trochu odzadu - 3D grafika - 3Dscena.cz: 3D grafika jako na dlani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



3D grafika

Tak trochu odzadu

30. dubna 2009, 00.00 | Dalo by se to možná s trochou nadsázky pojmenovat jako poučení z krizového vývoje, ale to je možná přeci jen přílišně dramatická paralela. Dnešní článek bych totiž rád věnoval úvaze, zcela obecné, o tom, zda není někdy od věci modelovat tak trochu odzadu.

A jak mám vymodelovat, třebá....

Tuhle otázku asi zná úplně každý, kdo se jen na maličký okamžik setkal s 3D grafikou. Jednak ji skoro každý jednou položil a jednak se skoro každý jedovatě pousmál, když ji zahlédl již jako zkušený matador. Ale máme li alespoň trochu sebekontroly víme, že nikdo učený z nebe nespadl, každé začátky jsou těžké a že „vím, že nic nevím“. Prostě chci říci, že zkušenost dělá mistra jak říkají němci, ale i mistr by měl ke svému řemeslu přistupovat s tím, že ani on není neomylný. A že cest je mnoho.

Tímto trochu obšírným úvodem bych se pozastavil nad jednou situací, kterou jsem byl nucen řešit. Situací relativně koncepčně jednoduchou, kterou jsem si ale možná poněkud zbytečně zkomplikoval svou vlastní úpravou zadání. Pro svého kolegu jsem vytvářel model a textury (prostředí není na mne) románského domu na základě nálezů odkrytých na Náměstí republiky v Praze, prostoru nákupního centra Palladium.

V případě takové konstrukce je totiž otázkou jak postupovat a v zásadě máme dvě základní možnosti. Generovat modely řekněme konstrukčně. Tedy od základní konstrukce, kterou budeme postupně obohacovat o další a další modely, které ve výsledku vytvoří potřebné detaily. V tomto smyslu hovoříme o obou základních možnostech, tedy o možnosti využívání dílčích elementárních modelů (kupříkladu model obvodového zdiva, modely oken, přípory, opěráky, konzole, žebra a podobně), nebo o modelu spojitém, který je sice náročnější na přípravu, ale má některé elementární výhody.

A jaké jsou takové výhody? V prvé řadě je takovou výhodou spojitost modelu. Je známým faktem, že i stovky nulových prázdných objektů dokáže scénu docela slušně zahltit (případ nevhodně nastaveného exportu, respektive importu různých formátů DWG/DXF či formátů a´la IGES). Musíme si totiž uvědomit skutečnost, že pokud je ve scéně kupříkladu 1000 objektů (prázdné polygonové objekty), tak při jakékoliv analýze scény musí systém zhodnotit každý takový objekt, jeho polohu, natočení a také velikost (ve smyslu k animaci, tedy velikost os) a následně také distribuci případných bodů a polygonů. Každý takový přístup logicky vzato znamená zpomalení procesu a proto je z obecného pohledu vždy výhodnější mít ve scéně méně objektů (které obsahují i nespojitou geometrii) než více objektů s malým počtem polygonů.

Další výhoda spojitosti modelu spočívá v tom, že v případě texturování unikátními texturami generujeme menší počet materiálů. Jistě, můžeme mít v rámci více objektů jen jednu texturu/(textury v rámci materiálů), která bude zahrnovat více UV souřadnic více objektů,ale ani to nemusí být efektivní u komplexnějších scén, u kterých potřebujeme mimo jiné řešit také chování povrchu modelu. Jinak řečeno řídit model, který bude materiálu nastaven (Blinn, Phong, lambertovské povrchy typu Oren Nayar apod).

Další výhodou je ale i samotná práce s povrchy, protože je snazší definovat méně i když komplexnějších materiálů, než více jednoduchých (pokud mají být povrchy stále „malované“, v případě shaderů a jednoduchých povrchů to ne tak zcela platí).

Výhody, výhody, ale uvedený postup má i své nevýhody. Apriori bych jej volil spíše v případech, které jsou více kreativní. V případě více technických modelů by byla taková praxe pravděpodobně zbytečně pracná a tudíž z časového hlediska neefektivní. Další nevýhodou je nutná segmentace. V uvedeném příkladě, ve kterém jsem se přes schematičnost snažil dbát i detailů na modelu (všechny základní konstrukční prvky jsou modelované), se poměrně zásadně zvyšuje počet polygonů, což může mít efekt na rychlost zobrazení v editoru. A i to může být poměrně limitující. Další pravdou je, že uvedený postup může být náročný i na zkušenost uživatele a jeho schopnost využití komplexnějších výběrových nástrojů v procesu přípravy UV mapy.

Někde mezi oběmi postupy je možnost model spojovat do logických skupin obsahující objekty se stejnými modely povrchu, které ale nejsou spojité. Ano, i to je možnost, kterou poměrně rád využívám a to zejména v případě dřevěných konstrukcí, u kterých požaduji proměnlivý vzhled povrchu závislý na tom kterém místě konstrukce.

Příkladem budiž dvojka

V případě zadání tohoto románského domu jsem měl připravenu od kolegů Matouše Semeráda a Jaroslava Podlisky (a dalších, kteří se k tomu běžně vyjadřují jako například Zdeněk Dragoun, Michal Tryml apod.) z Národního památkového ústavu základní koncepci, s rozmístěním všech podstatných prvků a také byly specifikované některé vizuálně důležité elementy konstrukce. Samozřejmě zejména koncepce románských sdružených okének, u kterých ale nebyly již tak důkladně specifikované tvary jednotlivých konstrukčních detailů. Tedy jak oken, tak i portálů a dalších drobností. Podmínkou také bylo, že dům měl být konstruován z pečlivě sestaveného lícového řádkového zdiva s armovacími kvádry v nároží. Jen upozorňuji, že prostředí bude připravovat někdo jiný a tudíž je scéna poněkud chudší...

Z pohledu představy diváka, co je románská architektura, jsem si stanovil to podstatné, co mělo představu pozorovatele spojit s románskou architekturou. V prvé řadě jsou to okna a také zdivo. To jsme sice plánovali nafotit v ploše kostela sv. Jiří na Pražském hradě z oken Ústavu šlechtičen, z akce ale nakonec pro nedostatek času sešlo. Tak tedy okna. Rozhodl jsem se tedy, že uvedené prvky vymodeluji relativně precizně a podrobně, aby obstály i v případě bližšího nájezdu kamery a plocha povrchu nebyla příliš fádní.

Model jsem tedy započal od detailů. Od oken, která jsem vymodeloval včetně kamenů ostění a klenbičky. Aby byl model více uvěřitelný postupoval jsem tak, že jsem si rovnou připravil modely dvou stejných, prozatím jen schématických oken. Tato okna jsem si umístil do výsledné polohy vedle sebe a následně jsem je promodelovat podle potřeby. Vytvořil jsem jednotlivé různě dlouhé kameny (aby byly na vazbu) a kameny kleneb. Spáry jsem naznačil polygonovým zkosením jednotlivých smyček kamenů a následným vytažením uvnitř, pro vymezení Phong vyhlazení, které by jinak generovalo nepěkný podlouhlý přechod stínování povrchu.

01

Poté co jsem dokončil uvedená okna, využil jsem jednoho z nich a to jsem si umístil do pozice protější stěny. Měl jsme v tomto smyslu ulehčenu situaci, měl jsem připravený velmi hrubý model objektu, vlastně jen blokové schéma exportované z aplikace SketchUp. Je ale jedno, v čem si takové schéma připravíme, stejně tak bychom si jej mohli vytvořit přímo ve vlastní aplikaci. Abychom se ale navrátili k tématu, toto zkopírované okno jsem umístil do plochy tak, aby odpovídalo obvodu navrženého zdiva.

Jakmile jsem měl tato tři okna hotová, započal jsem generovat samotné stěny stavby. Tuto fázi jsem zahájil přemostěním oken na zadní straně domu s tím, že před samotným přemostěním jsem vyplnil prostory mezi jednotlivými kameny vazby ostění, které přesahovaly kameny sousedící. Tím se vyrovnal obrys oken. Poté jsem jen prostě vybral okrajové hrany a ty jsem přemostil s hranami protějšími. Vznikla tak základní plocha, kterou bylo možno dále zpracovávat. Jak? Relativně snadno. Vnější „svislé“ (v tomto smyslu víceméně svislé) plochy okrajů ostění jsem dále vytáhle a umístil až do okrajů domu, tedy do nároží. Spodní plocha této zdi pak byla poměrně snadná, stačilo vybrat vše včetně hran parapetů a tyto hrany vytáhnout směrem dolů. Tím se vytvořil základní spodní část stěny domu.  

Pospojoval jsem si také mezi sebou oblasti zaklenutí a vytáhl i vrchní část stěny a tak byl již jen krok k tomu vytáhnout si okraje oken do rohů stěny domu. Tím se vytvořila celá jedna zeď, kterou jsem prozatím segmentoval jen ve vertikálním směru (chtěl jsem povrh možná trochu zbytečně "pomačkat", aby nebyl zcela plochý). Zcela stejný postup jsem použil na straně šíje a vlastně i na průčelí, ve kterém je další románské sdružené okénko (ale jiného typu, trochu jsem nechal v tomto smyslu fantasii pracovat a použil jsem na stavbě více tvarů oken). 

02

Dalším podobným postupem byla vytvořena malá štítová okénka do krovu (která byla tvořena opět nezávisle a jen napojena na zbylou spodní část stěny, kterou jsem si za tímto účelem vhodně nasegmentoval) a také oba portákly. Spodní hlavní portál šíje byl vskutku vytvořen jako první element šíjového průčelí, portál v patře byl už jen poupravenou kopií prvního (v základním tvaru) spojenou s okolními polygony. V tomto procesu poměrně rád používám N-úhelníkový polygonový záklop, který následně podle potřeby převádím na čtyřúhelníky a sem tam nějaké trojúhelníky pomocí funkce "spojit", při které vyberu body které se mají spojit a následně je propojím. Stále jsem se i v těchto činnostech snažil o to, aby byl model vhodně segmentován a to jak ve vertikálním, tak horizontálním směru.

Asi jste si všimli, že jsem  polygony nešetřil. Měl jsem důvod. V prvé řadě jsem promodeloval, jak už víme, jednotlivé kameny ostění oken i dveří a podobnou techniku jsem chtěl použít také v nárožích stavby, která měla být zpevněna armovacími kvádry. V těchto prostorách jsem dokonce i segmentaci zvyšoval, aby byly kvádry přirozené a členěné nejčastěji alespoň na tři smyčky polygonů. Ne všechny kvádry musely být striktně ukončené svislicí a mírné prohnutí či vyboulení je asi na místě.

03

04

To bylo zdivo. Poněkud odlišnou koncepci jsem zvolil již ve zmíněném příkladu dřevěných konstrukcí. Je jisto jistě nemoudré, aby byl například každý schod separátním objektem, samozřejmě tedy že je výhodné, tyto jednotlivé schody spojit do jednoho objektu, který budeme texturovat jako jeden.

Zcela to samé platí o jednotlivých fragmentech konstrukce krovu, výplně zástěny zábradlí ve vchodu do patra, schodnice a zábradlí schodiště a dalších prvků. Čím méně tím lépe snad jen s tím omezením, že se lépe pracuje s menšími texturami než většími (pokud to lze) už proto, že u větších textur může být zapotřebí nastavit vyšší velikost náhledu textury v editoru v případě nanášení ve 3D. A to nám sem tam může grafickou kartu zbytečně unavovat.

Dům a UV souřadnice

Výsledkem konstrukce domu jako celku bylo, že tento objekt měl velké množství ploch a ty bylo potřeba natexturovat v rámci jedné textury (ano, šlo by použít zachovaný výběr na více materiálů, ale práce by nebyla tak efektivní, v tomto smyslu jsem volil menší ze dvou zel, tedy větší textruru). Základní UV stěn byly velmi snadné. Stačilo pro ně použít příkaz vybírající polygony na základě analýz vzájemných normál (výběr podle nastavení Phong úhlu). Prvky které takto zbyly byly všechno částmi, které měly nastavený jiný povrch. Přesněji řečeno jiný vzorek textury v rámci jednoho materiálu. Výsledkem tedy byla poměrně dost velká textura, která ale zabírala 80% toho podstatného ve scéně a pracovalo se s ní tak poměrně dobře, jakkoliv byla již datově obřímí. Je logické, že v těchto případech se vyplatí snaha o co nejvyšší efektivitu, nejlepší rozložení a využití UV plochy/textury. Tedy, když už musí být textura velká, a't je co nejmenší...

Texturování

V případě texturování povrchu, které mají mezi sebou zřetelné hranice (takovým případem může být přiznání změny textury mezi stěnou a kameny armování) je dobré využít všech možností, které Vám program dává v oblasti výběrových operací. V případě CINEMY 4D/respektive BodyPaitu 3D s oblibou využívám jednoduchý trik spočívající v aplikaci příkazu "vybrat spojené". Tento příkaz v případě práce s polygony modelu vybírá všechny spojené polygony napojené na původní výběr. V případě UV polygonů je ale situace jiná, vybere ty polygony, které jsou spojené v rámci jedné kontinuální UV sítě. I další krok je velmi snadný, stačí jen převést výběr polygonů na výběr textury, i na to existuje příkaz a aktuální výběr vyplnit jiným načteným vzorkem.

05

Podobně relativně snadné jsou i další úpravy. I když, proces je to snadný, ale již maličko zdlouhavý. Aby nebyly všechny kameny armování rohů stejné, můžeme si vždy pomocí výběrových operací vybrat polygony UV některých kamenů, tyto výběry převést na výběr textury a následně upravit vlastnosti barvy těchto kamenů pomocí úrovní, HSL filtru či gammutu.

V obou případech je neocenitelným pomocníkem BodyPaint 3D a výběrové nástroje CINEMY 4D. Jsou ruku v ruce velmi silné.

06

Zvýraznění detailů

Dům jsem se nakonec rozhodli trochu zašuntět a tak by se možná, pro trochu vyšší plasticitu vyplatil efekt Ambient Occlusion (či vylepšení detailů). Oba dva postupy by ale zbytečně zatěžovaly výpočet a nebo by byly i tak dost zdlouhavé v případě, že bychom si AO upekli. Využil jsem tedy dalšího kola výběrových operací UV, vždy jsem si vybral například u armovacích kvádrů jejich vnitřní polygony, výběr v polygonech jsem pomocí jednoduchého příkazu rozšířil a následně převedl na výběr textury. Nastavil jsem si prolnutí a výběr invertoval pak jsem si jen maloval zatmavení ve sparách tam, kde jsem si myslel, že by mělo jít. Prosté a efektivní. A navíc má výsledek stále dojem "ruční práce", což není úplně k zahození.

Závěrem

I cesta je cíl, jak psával Exupéry ve své stěžejní práci Citadela. A vlastně každá cesta může být správná i špatná a není dobré se držet zažitých dogmat, protože různé situace si mohou žádat různá řešení. Já ani náhodou netvrdím, že můj protentokráte zvolený postup je univerzální, ba naopak, v případě "novostavby" bych jej asi ani náhodou nepoužil. V tomto daném případě se mi ale jevil jako správný a proto adekvátní. Nehledejte elixír pravdy, postupujte obráceně. Definujte si přesně zadání a tomuto zadání přizpůsobte svou tvorbu.

Tématické zařazení:

 » 3D grafika  

Diskuse k článku

 

Vložit nový příspěvek   Sbalit příspěvky

 

Zatím nebyl uložen žádný příspěvek, buďte první.

 

 

Vložit nový příspěvek

Jméno:

Pohlaví:

,

E-mail:

Předmět:

Příspěvek:

 

Kontrola:

Do spodního pole opište z obrázku 5 znaků:

Kód pro ověření

 

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: