Jsem dřevo a nestydím se za to (04) … - 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

Jsem dřevo a nestydím se za to (04) …

7. srpna 2008, 00.00 | V dnešním posledním díle se již nebudeme věnovat samotné tvorbě shaderu, ale naopak. Podíváme se na to, jak bychom mohli povrchů generovaných shadery využít k vytvoření unikátních textur, které může použít opravdu každý, nejen uživatel CINEMY 4D.

Plošné materiály, desky

První nejjednodušší typ generované textury by měl odpovídat tomu, jak jsme si již popisovali způsob skladby krájených dýh na deskové materiály (dřevotřískové desky, například). Říkali jsme si tehdy, že jak je dýha krájená, je pravidelně odebírána a skládána pečlivě na sebe. Poté, když je oříznuta na okraji jsou na podkladový materiál dýhy skládané vždy zrcadlově. Každá dýha má svou tloušťku a tak je jasné, že kaskáda fládru se vždy jedním směrem posouvá „dolu“. Tohle je praxe reálného světa. Jaká je ale simulace?

Ad1) jsem si stanovil, že generované shadery nejsou natolik v horizontálním směru proměnlivé, aby bylo nutné texturu převracet. Není to podle mého tak úplně zapotřebí.

Ad2) tento materiál je vždy ve své velikosti omezený, přistupoval jsem tedy k problému tak, že není zapotřebí (ani originál se tak nechová), aby byla kresba „nekonečná“, jako tomu je v případě podlahy (kde se to hodí už proto, že například jak plovoucí podlaha tak podlaha z palubek je tvořena z prvků, které jsou skládané „na vazbu“). V horizontálním směru lze přiznat spáru, technicky vzato je to korektní a odpovídá to skutečnosti. Ve směru vertikálním (ve směru „kmene“) zrovna tak.

Jak tedy budeme postupovat v případě, že budeme chtít vytvořit texturu požadované plochy? V zásadě to bude poměrně snadné. V prvé řadě si stanovíme velikost. Oba dva běžně používané velkoplošné formáty desek na bázi dřeva mají vždy jeden rozměr výrazně větší, svou délku ve které jsou také jednotlivé pruhy dýh skládány. Můžeme tedy vycházet jak z těchto rozměrů, tak si můžeme v podobném duchu navrhnout rozměr vlastní. Snad pro úplnost lze dodat, že velikosti desek jsou 2440x1220 mm a nebo 2750x1830 mm.

Vytvoříme si tedy objekt Rovina, který bude mít podobný poměr velikostí, jako právě popsané desky. Řekněme, že bychom nastavili velikost 244x122 a počet segmentů 3-4 v šířce. V zásadě můžeme i 3, protože jak jsme si řekli, ve směru horizontálním je přirozené, že se bude materiál opakovat. Příliš to nevadí (tedy, byla by tam deska jiná, jenže je pravdou, že bychom se asi měli snažit k sobě lícovat povrchy, které jsou barevně podobné, tedy „opakovat“ je asi to správné slovo). A objekt si převedeme na polygony.

70

Mimo prvního si nyní musíme pro každý jeden polygon již převedeného objektu vytvořit zachovaný výběr (Výběr > Zachovat výběr).

Aplikujeme si na objekt náš připravený materiál dřeva, přičemž je otázkou, co vlastně budeme potřebovat. Bude zapotřebí odrazivosti? Nikoliv, bude zapotřebí Lumasu v kanále Barva? Také ne. To je dobré si pamatovat, protože to samé platí i u dalších příkladů.

Přetáhneme tedy náš materiál na objekt a nastavíme mu (pokud se jedná o volumetrický shader), nějakou „dobře definovatelnou projekci“, například kubickou. Upravíme si polohu a velikost tak aby to odpovídalo našim představám a umístíme krychli projekce do prostoru prvního polygonu, který nemá zachovaný výběr. Když jsme u toho, jak upravíme polohu?

71

Samozřejmě podle toho, co již víme. Osa Z projekce musí směřovat ve směru délky našeho objektu. Mimo to ale není od věci vlastnost Textura mírně natočit tak, aby vznikly po délce pyramidální fládry. Materiál pak bude přirozenější (pravděpodobně se bude jednat o natočení okolo osy P o cca 2 stupně).

72

Předpokládejme, že je šířka našeho objektu 122. Dobrá tedy. Zkopírujeme si vlastnost Textura, která je na objektu a ve které je načten aplikovaný materiál a tuto vlastnost si posuneme ve směru šířky objektu 122/4 (tedy buďto hodnota X vlastnosti Textura – ve Správci nastavení „+“ a nebo „-“ 122/4 podle toho, na které straně objektu jsem začali. Nová vlastnost se nám posune a do jejího pole „Použít pouze na zvolené“ přetáhneme první zachovaný výběr. Můžeme si otestovat render...

73

Není to podle našich představ, oba pruhy jsou stejné. No nevadí, vybereme si novější vlastnost Textura a upravíme polohu Y například o -1 jednotku. A můžeme si scénu otestovat znova.

75

Copak se to nestalo. Fládr je podobný, ale maličko posunutý, což je velmi blízké skutečnosti. Stejným postupem vytvoříme i zbývající dvě vlastnosti Textura pro zbývající zachované výběry.

76

Jsme tedy připraveni pro „pečení“ textury. Jak jsme si říkali, vypneme si z kanálu Barva Lumas, protože ten bude logicky i v materiálu využívajícím texturu.

Vytvoříme si vlastnost Rendering > Upéct texturu a tím se nám vytvoří u objektu nová vlastnost, pomocí které lze kontrolovat „pečení“. Velikost textury by samozřejmě měla odpovídat velikosti objektu, v tomto případě 1220x2440 a zadáme jméno textur a (je to jen čelní část jména, druhou část jména tvoří typ kanálu, pro který jsme nechali texturu vygenerovat). Většinou definuji hodnotu Supervzorkování na 1, sice to prodlužuje výpočet, ale zase je výsledek vyhlazenější. Další nutně aktivní volby musí být „použít polygonový výběr“, bez toho by se neanalyzovaly zachované výběry a nakonec také volba kanálu, který chceme „upéct“. Oba kanály (jak barvu tak hrbolatost) můžeme přitom aktivovat najednou...

77

V mém případě je hrbolatost také barevná. Je to tím, že náš virtuální pekař neanalyzuje to, že by „v hrbolatosti měla být jen škála šedé“, ale upeče prostě to, co tam potká.

Co dále? Vlastně nic moc, vytvořené textury si můžeme načíst do jednotlivých kanálů tak, aby nahradily „barvu tvořící“ shadery s tím, že zůstanou aktivní shadery generující chování světla (tedy v případě kanálu Barva to bude Lumas, v případě Odrazivosti Lumas a Fresnel).

78

79

Průběh výpočtu

A to je všechno... Náš materiál je hotový.

Plovoucí podlaha

V případě plovoucí podlahy jsem musel postupovat poněkud jinak a to kvůli jedné velmi nepěkné vlastnosti, kterou CINEMA 4D bohužel má. Není to chyba, je to vlastnost, ale o to více to je k vzteku.

O co že se jedná? Vytvořil jsem si jednotlivé prvky plovoucí podlahy pomocí modulu MoGraph a poté jsem vše převedl na polygonové objekty. Hloupé je, že si sice klidně můžete připravit chování, kdy je každá vytvořená instance „spojená“ se svojí vlastností Textura ještě navíc polygonovým výběrem) jak jsme si to popsali výše, jenže pokud byste poté všechny prvky spojili do objektu jednoho, tak se Vám sice vytvoří kupa vlastností zachovaných výběrů, ale materiály na ně nebudou korektně napojené tak jak bychom čekali... A to rozhodně není dobře.

Takže jak jsem postupoval? Nejdříve jsem si MoGraphem vytvořil základní skupinu, kterou jsme následně několikráte zkopíroval a mírně upravil (náhodnost v generování klonů). To ale nebylo vše. Aby mi všechno krásně navazovalo, použil jsem kopie celé skupiny MoGraph generátorů a ty jsem umístil vedle všech stran středového plochy. Díky tomu mi vše perfektně navazovalo.

Potíž ale byla s tím, co jsme již popsali. Tedy s „pečením“. Nakonec jsem to řešil úplně jinak. Vytvořil jsem si kameru s pohledem shora, kterou jsem optimalizoval tak, aby zabírala celý objekt, vypnul jsem všechny kanály mimo těch, které mne zajímaly a samozřejmě jsem také odstranil efekty Lumasu a podobně. A tím jsem získal požadovaný výsledek.

Hrbolatost renderovat tímto způsobem by mohl být poněkud problém. Co s tím? Řešení bylo nakonec velmi prosté. Obsah kanálu Hrbolatost jsem vložil do kanálu Povrchová úprava a kanál Barva jsem změnil jen na bílou. A bylo hotovo, bez potíží.

A co víc? Využil jsem toho, že jsem jednotlivé prvky modeloval a nechal jsem jednoduchým způsobem vypočítat efekt Okolní prostředí (Ambient occlusion) a tím jsem získal mimo jiné také skvělou mapu spar, kterou jsem ve výsledném materiálu používal v kanálu Povrchová úprava a také Hrbolatost (v shaderu Fůze spolu s hrbolatostí povrchu samotného).

Zbytek musel obstarat Adobe PhotoShop, kde jsem všechny textury vhodně ořízl aby navazovaly.

Zpátky pěkně na začátek, předbíhat se ostatně nemá. Nejdříve jsem si vytvořil objekt Rovina a ten jsem si nastavil na velikost 12 x 180. Původně jsem mu dal segmentaci 3 na výšku, ale poté jsem ji nevyužil (protože mi C4D správně nenapojila materiály a zachované výběry, jak jsme se o tom již zmínili). Převedl jsem si model na polygony a provedl jsem příkaz Zkosení v hodnotě vytažení 0,2. Aby byl model korektní a nebyl globálně vyhlazený díky vlastnosti Phong, snížil jsem hodnotu Phong tak, aby se okraj zkosení zostřil. Zkosení v toto ohledu nebylo podstatné, použil jsem je jen a pouze pro generování efektu Ambient Occlusion – Okolní prostředí.

80

Podle principu, který jsme si již popsali jsem na tento prvek aplikoval materiál. Na řadě byl modul MoGraph (určitě by se dala uplatnit i starší Jenna, jestli ji máte), ale také by šlo vše udělat ručně a pěšky, jen by to bylo podstatně pracnější.  

Vytvořil jsem si tedy objekt MoGraph > Klonování, který jsem v hodnotách kopií nastavil na 3, 1, 3 a v hodnotách velikosti na 24, 200 (tady je výchozí hodnota, je jedno, co tu je...) a 360, což je délka 180x2. Jednotlivé prvky se mi měly překrývat posunem 60 jednotek. Pro tento posun jsem použil efektor Shader, ve kterém jsem použil kanálový shader Přechod.

82

Ten měl nejjednodušší možné zadání, tedy zadání výchozí, beze změn. V záložce Parametr jen bylo nutné zadat hodnotu Pozice Z na + a nebo -120. Výsledkem této operace byl onen požadovaný posun...

83

84

A co když MoGraph nemáte? Řešení vyplyne v popisu dalšího postupu. Abych měl vytvořené různé prvky náhodně, vytvořil jsem si pod objektem Klonování několik kopií hlavního objektu (a vlastně všechny potřebné, tedy 9) a těmto kopiím jsem nastavil různě promítaný materiál. Aby byly jednotlivé kopie skutečně distribuovány náhodně, nastavil jsem režim Klony na Náhodný a pak jsem si jen mohl hrát s parametrem počátku náhodnosti... Jednoduché a prosté. Vznikly náhodně generované a umístěné kopie...

Objekt MoGraph i se svým efektorem Shader je dobré seskupit a následně zkopírovat. A také jej budeme muset posunout. Na to ale existuje docela pěkná finta, která je velmi, velmi rychlá a efektivní (v takovýchto případech). Jaký že je modul šířky? Že 12? Bezvadné, vybereme si kopii objektu Osy (pod kterým je zkopírovaný nový MoGraph s efektorem Shade) a zvolíme nástroj Posun. Přejdeme do Správce nastavení, kde lze definovat přichytávání. To nás nyní nezajímá, ale co, pod přichytáváním je mimo jiné také pole, ve kterém můžeme definovat velikosti „kroku“ posunu. Nastavíme 12 (a aktivujeme příslušné pole) a můžeme objekt interaktivně posunout. Bude se posouvat po šířce jednoho prvku, což je z našeho pohledu naprosto ideální.

85

Postupně si vytvoříme několik kopií MoGraphu a pomocí parametru Náhodnost si vždy upravíme generované plochy. Tím postupně vytvoříme celou požadovanou plochu.

Seskupíme si všechny vytvořené skupiny s objekty Klonování do skupiny nové a tu opět budeme kopírovat, tedy přesněji vytvoříme si objekty „instance“. A opět, pokud budeme potřebovat posouvat instance horizontálně, můžeme si nastavit kroky 12x3=36, pokud vertikálně pak na hodnotu 60. A proč jsme si to vše zkopírovali? Abychom měli ve vertikálním směru přípravu pro tvorbu navazující textury (viz obrázek) a vlevo a vpravo existoval model, který bude generovat efekt Okolní prostředí – Ambient Occlusion.

81

86

87

Abychom si mohli vše vypočítat, vytvoříme si objekt Kamera a nastavíme v něm typ pohledu na Vrchní a přepneme se do této kamery. Vybereme si objekt Osy, pod kterým jsou všechny naše objekty Klonování a dáme „O“, čímž vystředíme náš pohled na to, co potřebujeme.

88

Vytvoříme si nové speciální světlo prostředí (no speciální). Je to jednoduché všesměrové světlo s nastavenou vlastností "svítivost okolí", u kterého vypneme odlesk.

Podle potřeby a velikosti generované hlavní plochy nastavíme render, vypneme Lumasy a kanály, které nepotřebujeme (hrbolatost), a můžeme si vyrenderovat první kanál textury...

89

Zkopírujeme si obsah kanálu Hrbolatost a načteme jej do kanálu Povrchová úprava. Kanál Barva nahradíme čistě bílou barvou a provedeme další render. Máme texturu hrbolatosti...

90

Poslední výpočet, který nám chybí, jsou spáry. I ty jsou velmi snadné. Nastavíme si efekt Okolní prostředí v nastavení renderingu (s malými hodnotami vzorků) a poté si na objekt Osy, který jsme použili pro seskupení všech skupin generátorů klonování, aplikujeme vlastnost Kompozice. Zde je i položka matte, kterou aktivujeme a nastavíme bílou barvu, kterou vše překryjeme – vyjma efektu Okolní prostředí...

92

93

91

Máme všechny tři potřebné textury, stačí je tedy otevřít ve PhotoShopu (GIMPu, PhotoPaintu či v něčem podobném), dát všechny tři obrázky do jednoho souboru ve formě vrstev, vrstvy zarovnat a vhodně oříznout tak, aby textura navazovala. To je ale už opravdu PhotoShop, navíc poměrně snadný...

02

01

Závěrem

V tomto bodě bychom tedy mohli naše dřevosnažení ukončit. Domnívám se, že toho již bylo poměrně dost a že jsme obsáhli principielně všechny aspekty, které se tvorby dřevěného povrchu za pomocí shaderů v CINEMĚ 4D týkají. Jistě, možných skladeb (pečených textur) bychom mohli simulovat více a také jsem si jich více připravil, ale to již nic nemění na principech, jedná se o pouhé aplikace popsané práce.

Tedy děkuji za pozornost, kdo to dočetl až sem má mé uznání, kdo ne, mé pochopení :-).

Tématické zařazení:

 » 3D grafika  

 

 

 

 

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

Uživatelské jméno:

Heslo: