Generované plošné světlo pomocí MoGraphu a XPressa - Grafika.cz - vše o počítačové grafice

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

Generované plošné světlo pomocí MoGraphu a XPressa

21. února 2008, 00.00 | Plošná světla jsou v CINEMĚ 4D konstruovaná skutečně výtečně, ale jsou situace, ve kterých je jejich využití poněkud složité. Zejména bychom v této souvislosti mohli zmínit modul Hair, který je v podstatě čistým post efektem, a i když dokáže být implementován také do raytracingových efektů, tak má potíže se světly vlastními raytracingu, tedy plošnými světly.

V tomto maličkém návodu si tedy připravíme speciální „ploché“ světlo, které můžeme používat v různých architektonických exteriérových scénách, ve kterých bychom chtěli mít nějaký ten pěkný trávník vytvořený právě pomocí Hairu. Toto světlo vytvoříme za pomoci dvou základních modulů – MoGraphu, použitého pro základní generování objektů, a také modulu Hair, ze kterého využijeme jen drobné řízení stínů efektu Hair. A co ještě? Logicky XPresso. Na to zapomenout nesmíme.

A ještě než začneme, drobná poznámka. Jedná se v zásadě o další „cvičení“ z XPressa, a to cvičení nikterak složité. Spíše o demonstraci síly a možností tzv. uživatelských dat, která dokáží i při velmi jednoduchém chování opravdu zázraky.

Začneme tím, že si vytvoříme jednoduchou strukturu objektů. První bude objekt Osy, pod ním bude objekt modulu MoGraph – Klonování a posledním bude naše všesměrové světlo. Je pravdou, že se pokusíme vše podstatné řídit pomocí objektu Osy, a to zejména proto, že nám to práci jednoznačně zrychlí a také budeme mít podstatně větší přehled. Proč? No představte si situaci, ve které mám 7*8 světel a chceme dosáhnout celkové intenzity osvětlení například 65 %. Intenzity všech světel. Jednoduchá a prostá úvaha, jenže v takovém případě bychom si to vždy museli přepočítávat. Podstatně efektnější by byla možnost nastavit jas globálně a tento jas by se neměnil ani při změně počtu jednotlivých světel. Jednoduché a efektivní.

Abychom dodrželi to, co je pravidlem, tedy že světla svítí ve směru osy Z, natočíme náš objekt Klonování (ve výchozí pozici pod objektem osy v lokálních souřadnicích pozice 0, 0, 0) kolem osy P=-90 stupňů. Mimo to upravíme typ klonování na režim Do mřížky, tvar Krychle a hodnoty počtu například 5, 1, 5. U objektu nastavíme vlastnost Ochrana (Správce objektů > Vlastnosti > C4D vlastnosti > Ochrana), abychom objektem náhodou nehýbli někam, kam nechceme.

01

Vybereme si náš objekt Osy a můžeme si jej přejmenovat na MG-Hair area light. Vybereme si jej a vytvoříme si první vstupní data, kterými budeme ovládat níže umístěné objekty.

První uživatelská data, která vytvoříme, budou data barvy světla. Tedy vybereme si objekt Osy a ve Správci nastavení zvolíme Uživatelská data > Přidat uživatelská data. Z nabídky si vybereme typ dat Barva a jméno dat můžeme dát například MG Hair light color. Zadání potvrdíme.

Abychom vše provedli rychleji, zvolíme si opět Uživatelská data, ale tentokráte Správa uživatelských dat, a vytvoříme další parametry. První bude jas Brightness s hodnotami celých čísel v procentech s rozsahem 0 až maximální hodnota (pole pro max je vypnuté). Další hodnotou bude X size (reálná čísla, opět nebude omezená velikost v maximální hodnotě), Y size (to samé). Další prvek bude poněkud jiný. Pojmenujeme si jej Specular (odlesk) a vytvoříme pro něj jen hodnotu Booleanovských dat – tedy bude to přepínač, tlačítko ano/ne. Poslední hodnoty, které v tomto kroku vytvoříme, budou hodnoty X samples a Y samples. Budou to hodnoty celých čísel v rozsahu 0 <> maximální hodnota.

Když jsme u toho, tak si můžeme nastavení rovnou obohatit o zřejmé, čistě matematické informace, které již z uvedeného zadání jsou zřejmé. Tedy kolik čísel v matici bude a také, jaký bude jas každého jednoho čísla. Vytvoříme si tedy nový parametr „Oddělovač“ a pojmenujeme jej Info. Poté ještě vytvoříme dvě pole, první bude obsahovat data v celých číslech opět s neomezenou maximální hodnotou a toto pole pojmenujeme Samples, druhé pole bude v procentech (opět neomezená maximální hodnota) a to se bude jmenovat Sample brightness.

02

Asi je načase si připravit naše XPresso. Tedy vzhůru do toho, netřeba se bát. U objektu Osy, který jsme si pojmenovali MG-Hair area light, vytvoříme vlastnost XPresso a otevře se nám XPresso editor. Prostým přetažením objektu Osy vytvoříme první uzel MG-Hair area light a stejně tak si do editoru přetáhneme objekt Klonování a také naše světlo.

U našeho objektu MG-Hair area light si vytvoříme všechny výstupní porty – uživatelská data, která jsme vytvořili se dvěma výjimkami. Tedy vynecháme data Samples a Sample brightness. Budeme tam tedy mít výstupní hodnoty pro barvu světla, jas, velikost světla, počet vzorků a také odlesk.

03

Vybereme si uzel našeho světla a vytvoříme mu dva vstupní porty (levé). Jeden pro barvu (Hlavní > Barva > Barva) a druhý pro jas (Hlavní > Jas). Port Barva můžeme rovnou napojit na port barvy vycházející z uzlu MG-Hair area light.

3a

Vytvoříme si nový uzel (Nový uzel > XPresso > Počítat > Mat (násobit – definováno ve Správci nastavení) a do tohoto uzlu napojíme hodnoty X samples a Y samples. Tím získáme ve výstupu hodnotu počtu všech generovaných světel. Když jsme u toho, tak si můžeme uzel Mat rovnou zkopírovat a změnit operaci na Dělit. Do vrchního portu poté napojíme hodnotu Brightness a do spodního právě získané množství vzorků z předešlého uzlu Mat. Výsledek napojíme do našeho uzlu světla – do jeho jasu, samozřejmě.

04

V uzlu světla si vyrobíme další vstupní port – port pro odlesk (Hlavní > Odlesk). A napojíme jej na výstupní port Specular našeho hlavního objektu.

05

Právě jsme vyrobili nějakou operaci, ale nenechali jsme si ji zobrazit v hlavním objektu. Tedy přetažením si v XPressu vytvoříme další uzel hlavního objektu MG-Hair area light. Tomuto objektu vytvoříme vstupní (levé) porty informací. Budou to porty Samples a Sample brightness. Port Samples propojíme s výstupem uzlu Mat/Násobení, zatímco port Sample brightness propojíme výstupem Mat/Dělit.

Soustředíme se nyní na objekt klonování. Vytvoříme mu také nové vstupní porty. A to porty Vlastnosti objektu > Počet X a Počet Z a Vlastnosti objektu >Velikost > Velikost X a Velikost Z. A můžeme začít napojovat jednotlivé hodnoty. X Samples/Y Samples do Počet X/Počet Y X Size/Y size do Velikost X/Velikost Y. Tím jsme právě sdělili MoGraphu, jakže se má chovat a jak má objekty klonovat.

Měli bychom mít možnost v editoru definovat, jak se nám naše speciální světlo zobrazí. Takže si vybereme původní objekt Osy a ve Správci nastavení přejdeme do položky Objekt, kde nastavíme typ Zobrazení na Čtverec a orientaci roviny zobrazení zadáme na XY. Poté se vrátíme do našeho XPressa, kde vytvoříme vazbu mezi nastavením objektu a jeho zobrazením.

07

U uzlu (se vstupními daty, takže tento uzel máme vlevo našeho schématu) objektu MG-Hair area light vytvoříme vstupní levé porty Vlastnosti objekt > Poloměr a Vlastnosti objektu > Poměr.

Mohlo by se zdát, že to bude velmi snadné, ale to není tak úplně pravda. Nebude to složité, ale musíme si uvědomit, že nemůžeme jen tak vzít hodnotu X size a přeposlat ji do portu Poloměr. Obkreslující čtverec by byl větší, neb se jedná o poloměr – tedy velikost poloviny úhlopříčky čtverce, ne velikost jeho jedné strany (poloviny). Takže si vytvoříme nový uzel Mat/Dělit a do tohoto uzlu, do vrchního portu načteme velikost X size a do spodního portu načteme nový uzel Nový uzel > XPresso >Hlavní > Konstanta s hodnotou 1,41 – tedy hodnotou poměru přepony pravoúhlého rovnoramenného trojúhelníka (a doufám, že jsem to nepopletl a terminologie neříká rovnostranný :-)). Teprve výsledek této hodnoty přepošleme do portu Poloměr.

Rovnou si můžeme zkopírovat uzel Mat/Dělit a do tohoto uzlu napojíme obě hodnoty velikosti vysílané do objektu Klonování (Y size/X size). Získáme tím informaci o poměru a tuto informaci můžeme poslat do portu Poměr. Jen prosím o pozornost, je nutné správné pořadí (v našem případě Y/X).

06

Vrátíme se ještě do samotného objektu MG-Hair area light, kde si nastavíme barvu zobrazení objektu.

9

Abychom měli poněkud komplexnější, tak bychom možná mohli zobrazení doplnit o „vypnutí“ jednotlivých světel. Tedy využívám pro náhled nějaký jiný systém (onen obdélník), k čemu nám je tedy zobrazení samotných světel v editoru? Vytvoříme si tedy u objektu další vstupní uživatelská data – booleanovského typu, která pojmenujeme Visible in editor.

Otevřeme si opět XPresso editor a v prvním – počátečním objektu MG-Hair area light vytvoříme výstupní port Visible in editor.

Tento typ dat (booleanovská data) nám dává informaci o hodnotě 0/1, tedy Ne/Ano. Tuto informaci my použijeme jako přepínač, který bude vypouštět dvě hodnoty - jednu pro zapnutí světle v editoru a druhou pro jejich vypnutí. A to ale prostá volba 0/1, protože každý objekt může mít tři stavy zobrazení. Budeme to tedy muset otestovat.

Vytvoříme si nový uzel Nový uzel > Xpresso > Logický > Podmínka a do portu přepínač napojíme naše booleanovská data. Do druhých dvou portů můžeme napojit hodnoty, které budou tímto přepínačem vysílány, a to mohou být i hodnoty „hromadné“ (z uzlů skupiny Opakování). Nám bude stačit, pokud do vstupu 2 napíšeme hodnotu 1 a do vstupu 3 hodnotu 0. Tím zajistíme, že přepínač bude přepínat hodnoty vypnuto a zapnuto vždy (zelená) pro viditelnost objektu v editoru.

Musíme ještě vytvořit u našeho uzlu světla vstupní port Základní vlastnosti > Viditelnost v editoru. Tento port napojíme s portem výstupním naší podmínky a je to. Můžeme si snadno skrývat světla z editoru.

12

A to je pro dnešek všechno. Jistě bychom mohli náš systém ještě dolaďovat, ale základní nastavení jsme si vytvořili a další úpravy jsou již „dobrovolné“.

13

Tématické zařazení:

 » Rubriky  » VSE  

 » Rubriky  » 3dscena  

 » Rubriky  » Go verze  

 » Rubriky  » 3D grafika  

 

 

 

 

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

Uživatelské jméno:

Heslo: