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
Že jsme to loni nestihli? Tak letos se nám to jistě bude hodit :-) (1)
15. ledna 2009, 00.00 | Na sklonku minulého roku jsem se pokoušel poradit a pomoci v případě jednoho vskutku svátečního tématu, vánoční girlandy. Projdeme si tedy spolu postup, který jsem v případě tohoto zadání použil. A ano, asi by se slušelo počkat do příštích Vánoc, ale vzhledem k tomu, že dost dobře možná začnou obchodní řetězce s kampaní Vánoce 2009 již v květnu, tak to zase až tak moc nevadí...
Dnešním tématem jsou tedy girlandy. Nikoliv přímo ve formě ozdoby, ale spíše „ikony“, prostě grafického prvku například na nějaký poukaz a podobně... Čím dál tím víc mám pocit, že Vánoce skončili...
Příprava základního objektu
Základem všeho byla jednoduchá křivka, kterou jsem načrtl cestu objektu, tedy umístění nitě do které jsou vpletené jednotlivé třásně našeho objektu. V případě této křivky jsem jako obvykle využil objekt typu B-spline, tedy NURBSovou křivku, s interpolací nastavenou na typ „jednotná“. Proč že jednotná (při segmentaci 16)? Protože následujících vzorové cesty modulu Hair jsou rozmístěné vždy do vrcholu polygonu, do bodu a nevhodná segmentace by způsobila poněkud nepřesný náhled distribuce. Jinak je nastavení interpolace relativně nevýznamné (můžeme ponechat hodnotu Adaptivní s tím, že použijeme nižší úhel), Hair není závislý na polygonech objektu, co se hustoty distribuce týká....
Hair je sice možné generovat také na křivkách, ale takové řešení není zcela bez potíží. Zvolil jsem tedy cestu poněkud jednodušší a to, že jsem využil systém „generování profilu po křivce“. Křivku, tedy cestu již máme z předešlého popisu (a snad je názorný i obrázek). Abychom mohli pně komparovat jednotlivé pokusy o výsledek, sluší se poznamenat, že celková velikost této křivky je 230, 780, 100, přičemž Z je hloubka křivky, tedy šíře stočného lanka, smyček za sebou.
Protažení provedeme pomocí jednoduchého objektu N-stěn, tedy křivkového primitiva, které můžeme ponechat na segmentaci 6 stěn a poloměru (pokud je odpovídající i velikost předešlé cesty) cca 2 jednotky. Nyní stačí již jen vytvořit objekt Protažení NURBS, pod který seskládáme obě připravené křivky. Zapomenout bychom neměli na vypnutí tvorby uzávěrů u objektu Protažení NURBS, protože jsou zcela, ale opravdu zcela zbytečné.
Objekt Hair - geometrie
Máme li hotovo, můžeme si vybrat náš cílový objekt Protažení NURBS (nikoliv křivku, ale generovaný povrch) a poté spustit příkaz menu Hair > Přidat vlasy, čímž se vytvoří nový objekt Hair...
Další editace bude probíhat právě v tomto objektu, protože je to on, který generuje vše podstatné (spolu s materiálem), co se dnešního článku týká. Tak v prvé řadě nás bude zajímat délka generovaných „vlasů“.
Délka vlasů se generuje v záložce cesty a to proto, že jejich základní délka odpovídá skutečně cestám. Jinak jednotlivé vlasy lze v dolce řídit pomocí parametrů materiálu vlasů, ale to je poněkud jiná historka, ke které se také časem propracujeme. Nastavíme tedy délku okolo 140.
Přejdeme ze záložky Cesty na záložku Vlasy. V této záložce se definují základní parametry vlasů, zejména jejich počet a také délková segmentace. V tomto případě jsem u svého příkladu nastavil počet vlasů na 45.000 a jejích délkovou segmentaci na 12. Tato segmentace, jen pro doplnění, má vliv zejména v případě, že budou naše „vlasy“ hodně pocuchané. Čím pravidelnější a rovnější budou, tím nižší segmentaci si můžeme dovolit. A ještě jedna poznámka. Segmentace v případě nastavení cest má vliv na editaci cest včetně dynamických jevů a zprostředkovaně na jejich tvar, ale jinak je segmentace vlasů nezávislým parametrem.
Pokud bychom si přáli poněkud přesnější náhled zobrazení cest vlasů či samotných vlasů přímo v editoru, máme samozřejmě možnost. Přejít však musíme do záložky „Generování“, ve které je parametr Náhled > Zobrazení. Z něj si můžeme vybrat například „Čáry vlasů“, čímž zobrazíme čáry generovaných výsledných vlasů s tím, že těchto čar je zobrazeno jen takové celkové množství, které definujeme parametrem „Detaily“. V případě složitější scény pozor na příliš vysokou hodnotu tohoto parametru.
Posledním parametrem do kterého bychom mohli v nastavení objektu Hair zasáhnout je to, zda je či není objekt dynamický. Tedy zda podléhá vnějším vlivům jakými jsou gravitace, či případně některé další modifikátory. Osobně se domnívám, že není dynamika potřeba (v tomto případě) a tak můžeme v záložce Dynamika vypnout příslušný přepínač „Zapnuto“. Pokud nehodláte scénu animovat, můžete tento krok ale ignorovat.
Přejdeme tedy na nastavení materiálu. To je totiž druhým a opravdu klíčovým uzlem celého efektu, bez nějž je každá snaha o výsledek jen slepým plácnutím do vody. V prvé řadě tento materiál (tedy materiál Hair, který se nám automaticky při vytvoření „vlasů“ vytvořil) zodpovědný za barevné jevy na povrchu, ale mimo to také za chování samotných vlasů, za jejich ohýbání, šmodrchání, různé zkracování, ale také tloušťku! Nelze jej tedy přehlížet jen jako druhořadou sadu parametrů, protože jak je zřejmé, ovlivňuji i samotnou geometrii vlasů.
Začneme tedy nastavením geometrie. Té se týkají všechna nastavení od kanálu Tloušťka až ke kanálu Vlny. Ne všechny budeme potřebovat, ba naopak, ale tou Tloušťkou samozřejmě začneme. Nastavíme oba parametry tloušťky profilu na 3,5 (jak vrchol tak kořen) a křivku definující průběh vlasu převedeme na vodorovný tvar, kdy oba řídící body budou v maximální výšce. Náš objekt je přeci tvořen stejně silnými „proužky“. Pokud bychom chtěl variovat tloušťku jako celek, není problém. Využít můžeme texturu či shader načtenou do pole Textura kanálu Tloušťka, přičemž intenzita jasu textury v místě kořene vlasu je násobena s aktuální tloušťkou každé jedné instance.
Dalším parametrem, respektive kanálem, jsou Kudrny. Jejich celková intenzita bude 50% při velikosti 100% v obou směrech a 10% variací. Tento efekt potká celkově všechny vlasy (parametr Množství) a jeho intenzita bude s délkou stoupat (lineární stoupající křivka).
Poslední parametr který jsem využil bylo Zkroucení a to podle generovaných cest. Intenzita byla slabá, jen 10% se stejně intenzivní variací. Průběh bude opět lineárně stoupat...
Objekt Hair – povrch
Další parametry se týkají barvy povrchu, ale samozřejmě nejen jeho. Přejdeme tedy do kanálu Barva. V něm můžeme barvu ovlivňovat mnoha a mnoha způsoby. Prvním podstatným parametrem je samotná barva definující obarvení chlupu/vlasu po jeho délce. To je hlavní vrchní parametr. Další parametry jsou rozdělené do sekcí Kořeny, Vrcholy, Zabarvení a nakonec Povrch. Povrch nás nemůže moc zajímat, protože jsem nikterak nepracovali s materiálem podkladového objektu, takže podstatné jsou pro nás jen první tři. První z nich ovlivňuje, jak již název napovídá, barvu kořenů generovaných instancí. Druhý zabarvuje jejich konce a poslední – jménem položky Zabarvení, umožňuje globálně obarvovat celé vlasy. Všechny tři tyto položky přitom pracují s UV souřadnicemi objektu, na kterém je Hair aplikován. Doporučuji tedy vždy používat 2D shadery, protože jsou v tomto případě velmi korektně promítány.
V položce Kořeny jsem použil jednoduchý shader Šum s variacemi červené barvy, který jsem nechal pomocí režimu krytí „Překrýt“ trochu zdramatizovat barvu Hairu. Posloužil mi v tomto případě velmi dobře jednoduchý šum „Noise“ s barvami 106, 19, 0 a 255, 76, 0 a velikosti cca 500%. Režim projekce byl nastaven na UV (2D).
Vrcholy jsem opět nastavil pomocí shaderů šum, ale v tomto případě poněkud jinak. Mým cílem byla simulace barevných pruhů po délce girlandy, které by simulovaly stočení třásní ne úplně stejné barvy, či třebas jen trochu jinak ohnuté a podobně... I tento shader měl plné krytí a režim krytí nastaven na Překrýt. Na co nesmíme zapomenout je, že je nutné vypnout parametr „Jako kořeny“.
Samotný šum byl opět Noise s projekcí UV (2D) a globální velikostí 300, v osách 35, 100, 100. Barva je bílá a středně šedá. Ta se totiž neprojeví v případě režimu krytí Překrýt. Mimo to jsem v tomto shaderu upravil rozsah úrovní na 43 a 49 procent. Výsledkem je tak velmi kontrastní mapa.
Poslední Zabarvení bude opět na režim „Překrýt“, ale intenzita krytí bude jen 10%. A opět v něm použijeme šum, tentokráte jsem ale použil VL Noise (není zas tak podstatné). Upravil jsem velikost (ze stejného důvodu jako v předešlém případě) na 440 a 7, 100, 100. Barvy byly ponechány beze změny.
Vzhledem k tomu, že budeme scénu osvětlovat standardními světly, je nutné upravit parametr „prosvětlení“. Tedy to, co se stane, pokud bude světlo svítit z druhé strany, než je kamera pozorovatele. Toto vše můžeme definovat v kanálu „Barva prosvětlení“, který je hned druhý v pořadí za kanálem Barva. Jeho složení je přitom shodné jako s nastavením základní barvy. Primární je přechod barvy prosvětlení a následně lze editovat chován u kořenů, vrcholů, zabarvení a podle povrchu. Nám nyní bude stačit jen základní přechod. Nastavíme jej na podobné barvy jako v kanále Barva a to (v mém případě) byly 82, 15, 0 a 255, 152, 115. Krytí bylo snížené na 50%.
Poslední významný kanál, který zde je, je Odlesk. A u něj se musíme trochu zastavit, protože zase to není tak jednoduché. Hair jako takový nepracuje (v efektovém režimu) s odrazivostí, jen se simulací odrazivosti světla – tedy s odleskem. A to je trochu potíž, protože sice světla použijeme, ale přesto budou naše girlandy trochu mdlé a chudé a to přeci jen nechceme.
Odlesk se v případě modulu Hair skládá ze dvou separátních nastavení, odlesku primárního a sekundárního. U obou lze nastavovat parametr „Ostrost“, tedy šíři a výšku, tedy parametr „Intenzita“. Mimo to zde máme také odlesk zadní. Hodnoty odlesku jsem definoval dost vysoko, aby byl intenzivní a to proto, že jeho barvu jsem chtěl řídit pomocí HDRi mapy – a tím simulovat odrazivost. Primární odlesk jsem nastavil poměrně ostrý – tedy úzký a to na 70%. Intenzitu jsem nastavil na 110. Sekundární je mdlejší, Ostrost je 50% a také nižší (ale ne moc), intenzita je 100%.
Abychom upravili intenzitu masivního odlesku a převedli jej trochu do dynamičtější podoby, načteme do pole textury primárního odlesku HDRi mapu. Já využil mapu, která je přibalena do CINEMY 4D přímo od Maxonu a to číslo 025.
Jenže, přišlo na řadu zjištění, že je tato textura chybně promítána. Je nutné vyřešit další úskalí, s projekcí HDRI mapy na objektu. Proto jsem využil shader Projektor, který umí definovat projekci svého obsahu. Metodou pokus omyl (nastavení vhodné rotace vzhledem k výslednému renderu) jsem došel pro mne nejlepšího výsledku, který je vyjádřen rotací HPB 90, 0, -90. Samotnou mapu jsem ponechal bez úprav. Projektor jsem zkopíroval i do druhého odlesku, tedy odlesku sekundárního.
Posledním kanálem který nesmí ujít naší pozornosti je nastavení Iluminace. Testováním jsem došel přesvědčení, že výchozí nastavení průsvitnosti vlasů je příliš vysoké, je nutné jej snížit na 10%. Stejně tak jsem mírně zvýšil drsnost na 5% a také variace tohoto parametru na 30%.
A to je pro dnešek vše, osvětlení a nastavení okolí scény si necháme na příští díl...
Tématické zařazení:
-
23. dubna 2014
Konica Minolta přenesla výhody velkých zařízení do kompaktních modelů
-
11. května 2014
-
23. května 2014
Epson na konferenci Droidcon Berlin ukázal nové možnosti čekající na vývojáře OS Android
-
24. listopadu 2014
-
13. května 2014
Samsung NX3000: retro styl, špičkový výkon a snadná konektivita v jednom přístroji
-
30. listopadu 2014
Nový fotoaparát α7 II: první plnoformát s pětiosou optickou stabilizací obrazu na světě
-
15. prosince 2014
Konica Minolta pomůže živnostenským úřadům s digitalizací dokumentů
-
11. května 2014
-
26. listopadu 2014
Canon Junior Awards již posedmé ocení mladé fotografy v rámci Czech Press Photo
-
21. srpna 2014