Tvorba satelitní textury a masky
Z Armed Assault nápověda
Obsah |
Úvod
Fiktivní ostrov
Základním omezením a určujícím faktorem při práci byl fakt, že ostrov je zcela fiktivní. Není na něm prakticky jediné místo, které by odpovídalo reálnému terénu a rozvržení krajiny. Bylo nutné veškeré textury vytvořit a "nakreslit" prakticky z ničeho. Tento postup zcela odpadá při práci na terénu vycházejícím z reálné předlohy, kde jsou navíc k dispozici kvalitní satelitní snímky nebo letecké fotografie a k nim odpovídající terénní reliéf.
Za pochodu
Dalším omezením bylo, že během práce docházelo na ostrově k zásadním změnám. A to jak v designu ostrova (síť silnic, města, vegetace) tak jeho reliéfu (vrcholy, svahy, pobřeží). Proto bylo důležité zachovat mnoho součástí projektu v stále editovatelné podobě, mít možnost kdykoli bez komplikací upravovat zásadní součásti textury i masky zároveň. Díky tomu jsem občas pracoval i s projektem o velikosti 8GB...
Podklady
Design ostrova
Nejdůležitější informací pro návrh satelitní textury je záměr designéra. Jak má ostrov vypadat, jakému stylu krajiny by měl odpovídat, jaké lokace jsou použité jako reference apod. Tyto rozhodní mají zcela zásadní vliv nejen na to, jak ostrov vypadá, ale například i na to, kolik a kde bude možné použít typů povrchu v satelitní textuře. Sahrani v jednoduchosti vypadá takto:
Severní Sahrani:
- Evropský ráz krajiny a zástavby
- Pole, pastviny, listnaté a jehličnaté lesy
- Hory, skalnaté vrcholy a svahy, náhorní plošiny
- Písčité a kamenité pláže
Jižní Sahrani:
- Tropický a pouštní ráz krajiny
- Zástavba středozemního a blízkovýchodního stylu
- Hory, skalnaté vrcholy a svahy
- Pouštní písek - duny, písčité pláže
Zdroje
Nejužitečnějším zdrojem informací, srovnání, měřítek jsou jakékoli zdroje satelitních a leteckých snímků:
- Google Earth
- Mapy.CZ
- Zakoupené a zapůjčené letecké snímky ve vysokém rozlišení
- Krajinné fotografie (google, fotobanky, soukromé zdroje)
- Reference z projektu ve Visitoru, viz déle
Příprava
Grid reprezentace krajiny
Velikost terénu (Terrain Size)
Je určený počtem elevačních bodů (Terrain Cells). V případě Sahrani to je 2048x2048 elevačních bodů.
Velikost čtverce gridu krajiny (Terrain Cell Size)
Je vzdálenost mezi jednotlivými elevačními body. U Sahrani je to 10m
Velikost mapy (Map Size)
Pokud ma sahrani cell size 10m a grid 2048x2048, výsledkem je mapa o velikosti 20480x20480m. Pokud chceme mít rozlišení satelitní textury a masky 1px/1m, buzdeme pracovat s bitmapou o rozměrech 20480x20480px.
Grid Satelitních textur (Satellite texture grid)
- Během importu do Visitoru se satelitní textura i maska "rozkrájí" na jednotlivé menší textury o rozumnějším rozměru - "čtverce".
- Velikost a počet čtverců se počítá pomocí hodnoty tzv. Satelitního gridu (Satelite Grid), tato hodnota je daná rozměry celkové textury a výsledným počtem "čtverců", počítá se specifickým způsobem (prosím Ivana o doplnění výpočtu)
- Jednotlivé čtverce se částečně překrývají, aby na jejich hraně nevznikaly artefakty ostrých přechodů způsobené filtrací textury.
Visitor - Export rozvržení projektu
Rozlišení satelitní textury je v případě Sahrani 1px/1m. Mnoho prvků na satelitní textuře a v masce je potřeba upravovat s maximální přesností a tak je velice důležité mít kvalitní reference mezi texturou a projektem. Skvělý přehled o rozložení projektu i o terénu poskytuje možnost si z Visitoru vyexportovat jakýsi "otisk" celé plochy projektu ve vysokém rozlišení.
Nejprve si musíme nastavit zobrazení objektů a terénu ve Visitoru tak, abychom získali užitečné informace:
Zobrazení terénu
- Dialog View > Define configuration... CTRL+F
- Záložka Colors - height
- Doporučuji nastavit si Minimal/Maximal ground height na gradient od bílé do střední šedé pro vrcholy
- Color of contours na nejakou diskrétní barvu, která nebude moc rušit
- Pro ladění textur pláží jsem měl nastavený Elevation interval style na 1m rozlišení, abych přesně mohl obkreslovat předpokládaný dosah "příboje", ale pro běžnou práci na satelitní textuře je to zbytečně husté a působí to rušivě. Takže nastavit podle elevačního rozsahu terénu tak, abychom měli dostatečnou referenci o svažitosti terénu a průběhu vrstevnic.
- Vypnout zobrazní zbytečných prvků v okně projektu, např. grid.
Zobrazení objektů
Při práci na výběru míst pro povrchy lesa, pro umělé "stíny" vegetace nebo pro kresbu silniční sítě se může hodit obarvení a tvar zobrazených objetů ve Visitoru. Pro snazší výbírání objektů podle barev ve Photoshopu doporučuji sjednotit barevnost okraje i výplně ikonek objektů:
- V dialogu Tools > Nature objects... můžene obarvit veškerou vegetaci jednou barvou (nebo různé barvy pro stromy listnatého a jehličnatého lesa) a zvolit pro stromy zobrazení kolečkem namísto čtverce.
- V dialogu Tools > Roads... lze změnit barvu různéch typů cest a silnic (velmi užitečné)
- V dialogu Tools > Artificial Ojects... lze zase "vytáhnout" zástavbu a další objekty, jejichž umístění se hodí při kreslení satelitní textury a masky vědět.
Export otisku projektu
- Dialog Project > Export Map As Image...
- V tak velkém rozlišení nelze použít přímo BMP soubor, proto volíme EMF a rozlišení shodné s cílovou satelitní texturou (u Sahrani to bylo 20480x20480px) + rozměr "modrého okraje", který vidíme ve Visitoru na levé a spodní hraně. Tento okraj je ve visitoru vlastně "navíc" kvůli potřebe editování okrajových elevačních bodů a zanáší se nám do bitmapy díky tomu, že vlastně pořizujeme "otisk" obrazovky, nikoli export projektu.
Velikost "modrého okraje" zjistíme takto:
- Zjistíme si velikost gridu krajiny (viz Velikost čtverce gridu krajiny)
- Spočítáme si, kolik pixelů satelitní textury zabírá jeden čtvere gridu krajiny
- V případě Sahrani je grid krajiny 10px satelitní textury - tedy exportujem z Visitoru bitmapu o 10px větší - 20490x20490px.
Konverze EMF do bitmapy
Hotový EMF soubor o tak velkém rozlišení je problém v čemkokli otevřít, natož jej převést do podoby, ve které je možné jej otevřít ve Photoshopu, proto mi Bredy napsal praktický konvertor:
- V programovém adresáři Visitoru se nalézá konvertor EmfToPng.exe
- Spouští se v příkazovém řádku: EmfToPng c:\cesta\jmeno.emf
- Je možné použít i funci zoom: EmfToPng c:\cesta\jmeno.emf 2.5 (zvetší 2,5x)
- Hotový PNG soubor o rozměrech až 40960x40960px lze otevřít v Photoshop CS a vyšším.
- Poznámka: předchůdce tohoto konvertoru EmfToTga umožňuje vytvořit bitmapy ve fromátu TGA, ale pouze do velikosti 23000x23000, většinou ale má Photoshop problémy takový soubor otevřít.
Otevření a umístění otisku projektu do budoucí satelitní textury
Vyexportovaná bitmapa nemá správné rozměry, je o 10px vetší v každém rozměru. Vyřešíme to oříznutím modrého okraje vlevo a dole a měli bychom získat bitmapu 20480x20480px, která na 1px/1m přesně reprezentuje rozvržení projetu, obrysy pobřeží, silniční síť, umístění objektů a vegetace. Bez podobného podkladu bychom jinak netušili co a kam do satelitní textury vlastně kreslíme.
Photoshop - Velikost pracovních souborů
Formát PSB
Při práci na textuře Sahrani bylo potřeba pracovat se souborem o rozměrech 20480x20480px. Původní metoda práce na menších částech "rozřezané" textury se neosvědčila především kvůli obtížnému navazování a sychronizaci globálních úprav. Běžná aplikace Windows může ale pracovat se soubory o maximalní velikosti 2,5GB, což při uchávání důležitých vrstev a masek v pracovním souboru není vůbec obtížné prekročit. Proto je potřeba pracovat s formátem, který takovou velikost umožňuje:
Photoshop od verze CS umí pracovat s nativním formátem souboru PSB, který nemá žádné omezení velikosti. Je potřeba jen Photoshop nastavit, aby jej dovolil použít:
- Ve Photoshopu otevřeme dialog Edit > Preferences > File Handling...
- Zašrtnout Enable Large Document Format (.psb)
Odkládací disky a paměť
Kupodivu není až takový problém pracovat se souborem o velikosti například 4,5GB. Na procesoru P4 3ghz s pamětí DDR 1GB nebyl při běžné manipulaci problém. Nejvíc zdržuje ukládání, export a aplikace filtrů na celou plochu projektu. Významkný vliv na chod v takovém zápřahu má velikost RAM paměti a možnost ukládání více disků. Důrazně doporučuji umožnit Photoshopu swapovat minimálně na dva různé fyzické disky:
- Ve Photoshopu otevřeme dialog Edit > Preferences > Plug-Ins & Sratch Disks...
- V záložkách Scratch Disks nastavíme postupně všechny dostupné fyzické disky, které máme k dipozici, vliv na výkon je zásadní.
Základní povrchy
Rozhodnutí kolik a jakých typu povrchu budeme chtít v satelitní textuře a tedy i masce použít, není úplně jednoduché. Je potřeba mít na mysli hněd několik omezujících faktoru vyplývajících z rozměrů mapy, gridu terénu a gridu satelitní textury.
Omezení počtu povrchů
4 povrchy
Na každý jeden čtverec je možné v masce zadefinoivat maximalně 4 různé materiály povrchu a to včetně překryvu sousedními čtverci - je třeba brát zřetel na tento překryv při kreslení reprezentační masky. Sahrani ma velikost čtverce 512x512px - takže se dá říct, že na území 0,5x0,5km lze její pomocí reprezentovat maximálně 4 druhy povrchu. proto je velmi důležité dopředu zvolit vhodný počet základních typů povrchu tak, aby bylo možné pokrýt celý terén a zároveň si ponechat rezervu minimálně 1 povrchu pro různé doplňkové povrchy.
Mapa Sahrani se skládá z těchto základních typů povrchu:
Severní Sahrani
- Zelená tráva
- Skála - žula
- Městský povrch
Jižní Sahrani
- Suchá tráva
- Skála - pískovec
- Písek
- Městský povrch
V místě přechodu jižního a severního ostrova (Corazol) se vyskytují čtverce, kde kvůli přechodu dvou typů trávy bylo možné použít navíc pouze povrch Písek a Město (Písek + Město + Jižní tráva + Severní tráva = 4 povrchy), viz obrázek s naznačením překryvů čtverců satelitní textury/masky:
Reprezentace povrchu maskou
Reprezentační barvy materiálů
Visitor při importu satelitní textury generuje pro každý čtverec satelitní textury a masky vlastní definici materiálu, kde vypíše, které materiály se zde mají použít. Proces reprezentace v enginu ale zdůvodu optimalizace potřebuje bitmapu masky, který obsahuje pouze 4 základní RGB hodnoty:
- Červenou RGB 255,0,0
- Zelenou RGB 0,255,0
- Modrou RGB 0,0,255
- Černou RGB 0,0,0
Z toho vyplývá, proč může každý čtverec satelitní masky obsahovat maximálně 4 typy povrchů. Nic ale nebrání, aby různé čtverce obsahovaly různé kombinace čtyř různých povrchů. Jestliže chceme editovat satelitní masku v celku a ne po jednotlivých čtvercích, potřebujeme na větší množství typů materiálu více zástupných barev než jen tyto 4. Proto DOKONČIT
Jednotlivé materilály povrchu budeme v satelitní masce reprezentovat zůzmými barvami. Pro každý typ porchu je potřeba tuto barvu nastavit a zadefinovat v pracovním konfiguračním souboru Lyers.cfg.
Překryv čtverců masky
Import do Visistoru
Visitor behem importu satelitní textury a masky "krájí" texturu na menší části, podle toho, jak je projekt nastaveny. V případě Sahrani to jsou textury 512x512px. Tyto čtverce se však musí navzájem částečně překrývat, aby na jejich rozhraní nevznikaly artefakty způsobené filtrováním textury. Tak spolu "sdílejí" obrazové body po okrajích. Na to je potřeba si dát velký pozor v situaci, kdy se snažíme využít maxima 4 povrchů na čtverec a sousedí nám dva a více čtverců s různými materiály. Pokud méme v sousedním čtverci využité maximum a umístíme nový povrch až na okraj textury, tak nám díky překryvu "přeleze" i do sousední textury a způsobí konflikt a nekorektní reprezentaci materialu.
Z obrázků je patrné, jak se textury překrývají a kde je potřeba dát si pozor na sousední materiály:

