30. listopadu 2010

Normal mapping - 2. část

Tak po delší době opět pokračování o normálových mapách. Mám podle statistik trochu pocit, že si tu píšu jen pro sebe, ale aspoň si utřídím myšlenky a znalosti :) Dnes tedy trochu praxe. Podíváme se podrobněji na jejich generování z highpoly modelu.

Pro počítání normal mapy z highpoly modelu máme mnoho možností. Většina 3D programů jejich generování nějakým způsobem podporuje. Já tu podrobněji popíšu postup v programu 3ds max a specializovaném xNormal. Budeme tedy potřebovat scénu s lowpoly a highpoly objekty, pro lowpoly verzi budeme potřebovat již nastavené UV.

3ds max


V 3ds maxu k tomu slouží dialog render to texture, nacházející se v menu rendering (klávesová zkratka 0). Ve scéně, kde máme na stejné pozici přibližně stejně velké lowpoly i highpoly modely, tedy vybereme lowpoly model a v dialogu klikneme na pick, kde vybereme highpoly objekt. Mezi modifikátory lowpoly objektu nám přibyde jeden nový - Projection, s jeho pomocí vytvoříme tzv. cage (viz. předchozí díl o NM). Pokud po vybrání modifikátoru vypadá cage rozházeně, klikněte na tlačítko reset v záložce cage. Pro snadnější úpravu můžete zaškrtnout shaded. Změnou hodnoty amount u push pohybujeme s cage po směru normál objektu. Cílem je vytvořit cage tak, aby byla nad highpoly objektem, ale přesto velmi blízko jeho povrchu, můžeme k tomu využít také manuální pohyb vertexy cage, nebo cage exportovat jako editable mesh a upravit.

Po dokončení úprav cage se přesuneme zpět do render to texture, vybereme Add>Normals map, nastavíme požadovanou velikost (pro herní engine o stanách v mocninách dvou) a vybereme soubor pro uložení normal mapy. Pak už jen klikneme na tlačítko render. Textura, která se zobrazí v renderovaném okně není normal mapa, ta se uložila do předem zadaného umístění. Pokud se objevily nějaké problémy, např. minutí paprsku v podobě červených pixelů, upravíme cage a opakujeme render.


xNormal


Takto tedy můžeme vytvořit NM přímo z 3D aplikace, protože je ale 3ds max často kritizovaný za výsledky generování normálových map, ukážu zde ještě postup pro specializovaný program xNormal. Jde o freeware program, stáhnout jej můžete zde. Jeho výhodou je přesnější a rychlejší generování, zvládá také vytvářet tzv. AO mapy a další. Navíc umožňuje programátorovi herního engine vytvořit vlastní renderer, takže program potom vytváří textury dokonale fungující v daném engine.

Nejdříve budeme potřebovat exportovat naše modely z 3D aplikace. Postačí např. formát OBJ, kde nesmíme zapomenout u lowpoly objektu exportovat také normály (smoothing groups) a UV souřadnice. Pokud máte na PC nainstalovaný 3ds max, přibude vám po instalaci xNormal také nový exporter pro xNormal, zde opět u lowpoly objektu zaškrtneme export normál a UV souřadnic.

Program nabízí několik záložek, z nichž využijeme 3: Na první záložce high definition meshes klikneme pravým tlačítkem a vybereme Add meshes, kde vybereme náš exportovaný high-poly objekt. Stejným způsobem na druhé záložce otevřeme lowpoly model. Potom na záložce baking options nastavíme Normal map, velikost generované textury a soubor pro uložení. Stačí už jen kliknout na generate maps. Pokud nespecifikujeme také soubor s cage objektem na druhé záložce, xNormal se pokusí vygenerovat texturu i bez ní, pokud je model předem rozdělen na více částí (viz. další díl), není většinou potřeba cage používat.



To je pro dnešek vše, v dalších dílech popíšu některé rady pro úspěšné generování normal map, zobrazení výsledků ve viewportu nebo třeba generování NM v 2D aplikacích.

Žádné komentáře:

Okomentovat