Train_Light_map _with_Diffuse. Fx
Napsal: úte 29. kvě 2012 21:36:23
Tento shader je určen především pro modely budov. Využívají dvou mapovacích kanálů, kdy v jednom je hlavní difusní textura a ve druhém tzv. světelná mapa. Světelná mapa (lightmaps) má za cíl dodat modelu stín v místech, kam nedopadá přímě světlo. Nejedná se tedy o klasický stín, který generuje hra. Rozdíl je jasně patrný na těchto dvou snímcích. Na prvním vidíme objekt s použitím klasického "Texdiff" shaderu, na druhém je stejný objekt, ale s použitím našeho shaderu (Train_Light_map _with_Diffuse. Fx)
Na těchto screenech je jasně vidět, že druhá textura neovlivňuje jen diffúzní stín v místech pod střechou, u země či u dveří, ale také celkové světlo dopadající ve hře na objekt. V návodu se pokusím vysvětlit, jak tuto světelnou mapu vytvořit.
1) Takto vypadá cvičný objekt při použití jednoduchého shaderu
2) Nyní si načteme náš shader, který obsahuje dva sloty. Do prvního načteme hlavní texturu a namapujeme na objekt. Postup je stejný jako u jednoduchého shaderu ( např. Texdiff). Do druhého později načteme světelnou mapu ( příště jen LM ). Tu nyní vytvoříme a zároveń namapujeme na objekt.
3) Spojíme všechny objekty, u kterých chceme použít tento shader a to pomocí příkazu „Attach“ . Ten najdeme v záložce "Edit Geometry"
Zde bych se zastavil. Důvodem, proč jsem spojil všechny objekty ve scéně je fakt, že se jedná o jednoduchý objekt, který bude používat pouze jeden materiál s tímto shaderem, takže budu vytvářet jen jednu texturu pro druhý slot. Může ale nastat situace, kdy je objekt podstatně složitější.
U takových objektů je nezbytné, abyste si vše předem jasně naplánovali. Pakliže stavíte nádraží s osmi budovami, řekněme A,B,C,D,E,F,G,H, tak vytvářejte základní textury chronologicky. Textura_1 pro objekty „A“ a „B“, Textura_2 pro objekt „C“ apod. Pakliže bude "Textura_1" uspořádaná tak, že na ní bude něco z budovy A, ale taky B,C,D a H, tak při snaze o vytvoření textury pro druhý slot tohoto materiálu skončíte, nebo se nejdřív zblázníte a pak skončíte. Více plánování s vytvořením textur, LODů se tady rozhodně vyplatí.
4) Vytvoříme nový materiál, nikoliv však Kuju materiál, ale běžný „Standart“. Odemkněte „Ambient“ a „Diffuse“ a změňte barvy podle screenu. První a třetí nechávám stejné, prostřední (Diffuse) změním na hodnotu 220. Můžete ale experimentovat, osobně to jen opakuji podle jiného návodu. Tento materiál aplikujte na objekt.
5) Nyní vytvoříme mapování pro LM. Mezi modifikátory vybereme „Unwrap UWV“ a v poli pro „Map Chanal „ zadáme číslo 2!!!!!!! V nabídce modifikátoru vybereme mapování podle ploch (Face), stiskneme Ctrl+A, čímž se nám automaticky vyberou všechny plochy.
V poli "Parameters" klikneme na "Edit...". Otevře se nám okno "Edit UVWs". Zde v záložce "Mapping" vybereme "Flatten mapping". Změníme pouze pole "Spacing" na 0,002. Nyní máme všechny klastry rovnoměrně rozložené. Žádný se nesmí překrývat.
6) Vložíme do scény světlo. Vše je na znázorněno na screenu. U tohoto světla je jedno, v jakém místě scény ho umístíte.
7) Scénu máme prakticky připravenou. Kdo chce, může ještě přidat jednoduchý objekt ( plane ), který při renderování simuluje zem. Přejdeme k renderování scény. Záložka Rendering/Render To Texture...
Otevře se nám okno "Render To Texture". Nejprve klikneme na tlačítko "Setup".
Vpravo nahoře vybereme "Advanced Lighting" a potom "Light Tracer" ( přesně podle screenu).
Uděláme zkušební render. Vpravo dole klikneme na tlačítko "Render". Mělo by se vám objevit něco podobného.
Takto bude vypadat rozložení stínů a světel na našem objektu. Teď zavřeme toto okno a přejdeme k "Render To Texture". Opět přesně podle screenu. Vybereme objekt ve scéně, v políčku "Chanell" dáme "2". Klikneme na "Add..." a vybereme "CompleteMap".
V poli "Name" si můžete změnit název textury, File Name and Type určuje místo, kam si uložíte LM. Element Background určuje barvu pozadí u textury Lm. Nenechávejte černou, ale dejte světle šedou barvu. Nakonec zadejte velikost textury. Co jsem viděl, tak byla používána velikost maximálně 256x256 px, u RW3 možná i 512 x 512 px, ale nejsem si tím jistý.
Nakonec klikneme na tlačítko "Render" a vytvoříme tím naší texturu (LM). V náhledu vypadá takto. Pozadí zůstává černé, ale v samotné textuře je pozadí takové, jaké jsme si nastavili.
V posledním kroku si tuto texturu uložím do složky "Texture" ve formátu "ACE" a načtu do druhého slotu materiálu. To je vše a nyní můžeme objekt exportovat do hry.
To je vše. Na první pohled se to zdá asi složité, ale je to jen otázka praxe. Je to opakování stále toho samého.
Na těchto screenech je jasně vidět, že druhá textura neovlivňuje jen diffúzní stín v místech pod střechou, u země či u dveří, ale také celkové světlo dopadající ve hře na objekt. V návodu se pokusím vysvětlit, jak tuto světelnou mapu vytvořit.
1) Takto vypadá cvičný objekt při použití jednoduchého shaderu
2) Nyní si načteme náš shader, který obsahuje dva sloty. Do prvního načteme hlavní texturu a namapujeme na objekt. Postup je stejný jako u jednoduchého shaderu ( např. Texdiff). Do druhého později načteme světelnou mapu ( příště jen LM ). Tu nyní vytvoříme a zároveń namapujeme na objekt.
3) Spojíme všechny objekty, u kterých chceme použít tento shader a to pomocí příkazu „Attach“ . Ten najdeme v záložce "Edit Geometry"
Zde bych se zastavil. Důvodem, proč jsem spojil všechny objekty ve scéně je fakt, že se jedná o jednoduchý objekt, který bude používat pouze jeden materiál s tímto shaderem, takže budu vytvářet jen jednu texturu pro druhý slot. Může ale nastat situace, kdy je objekt podstatně složitější.
U takových objektů je nezbytné, abyste si vše předem jasně naplánovali. Pakliže stavíte nádraží s osmi budovami, řekněme A,B,C,D,E,F,G,H, tak vytvářejte základní textury chronologicky. Textura_1 pro objekty „A“ a „B“, Textura_2 pro objekt „C“ apod. Pakliže bude "Textura_1" uspořádaná tak, že na ní bude něco z budovy A, ale taky B,C,D a H, tak při snaze o vytvoření textury pro druhý slot tohoto materiálu skončíte, nebo se nejdřív zblázníte a pak skončíte. Více plánování s vytvořením textur, LODů se tady rozhodně vyplatí.
4) Vytvoříme nový materiál, nikoliv však Kuju materiál, ale běžný „Standart“. Odemkněte „Ambient“ a „Diffuse“ a změňte barvy podle screenu. První a třetí nechávám stejné, prostřední (Diffuse) změním na hodnotu 220. Můžete ale experimentovat, osobně to jen opakuji podle jiného návodu. Tento materiál aplikujte na objekt.
5) Nyní vytvoříme mapování pro LM. Mezi modifikátory vybereme „Unwrap UWV“ a v poli pro „Map Chanal „ zadáme číslo 2!!!!!!! V nabídce modifikátoru vybereme mapování podle ploch (Face), stiskneme Ctrl+A, čímž se nám automaticky vyberou všechny plochy.
V poli "Parameters" klikneme na "Edit...". Otevře se nám okno "Edit UVWs". Zde v záložce "Mapping" vybereme "Flatten mapping". Změníme pouze pole "Spacing" na 0,002. Nyní máme všechny klastry rovnoměrně rozložené. Žádný se nesmí překrývat.
6) Vložíme do scény světlo. Vše je na znázorněno na screenu. U tohoto světla je jedno, v jakém místě scény ho umístíte.
7) Scénu máme prakticky připravenou. Kdo chce, může ještě přidat jednoduchý objekt ( plane ), který při renderování simuluje zem. Přejdeme k renderování scény. Záložka Rendering/Render To Texture...
Otevře se nám okno "Render To Texture". Nejprve klikneme na tlačítko "Setup".
Vpravo nahoře vybereme "Advanced Lighting" a potom "Light Tracer" ( přesně podle screenu).
Uděláme zkušební render. Vpravo dole klikneme na tlačítko "Render". Mělo by se vám objevit něco podobného.
Takto bude vypadat rozložení stínů a světel na našem objektu. Teď zavřeme toto okno a přejdeme k "Render To Texture". Opět přesně podle screenu. Vybereme objekt ve scéně, v políčku "Chanell" dáme "2". Klikneme na "Add..." a vybereme "CompleteMap".
V poli "Name" si můžete změnit název textury, File Name and Type určuje místo, kam si uložíte LM. Element Background určuje barvu pozadí u textury Lm. Nenechávejte černou, ale dejte světle šedou barvu. Nakonec zadejte velikost textury. Co jsem viděl, tak byla používána velikost maximálně 256x256 px, u RW3 možná i 512 x 512 px, ale nejsem si tím jistý.
Nakonec klikneme na tlačítko "Render" a vytvoříme tím naší texturu (LM). V náhledu vypadá takto. Pozadí zůstává černé, ale v samotné textuře je pozadí takové, jaké jsme si nastavili.
V posledním kroku si tuto texturu uložím do složky "Texture" ve formátu "ACE" a načtu do druhého slotu materiálu. To je vše a nyní můžeme objekt exportovat do hry.
To je vše. Na první pohled se to zdá asi složité, ale je to jen otázka praxe. Je to opakování stále toho samého.