Vytváříme textury - 2D objekty

Ostatní jazyky Petr Lite 3D grafika Vytváříme textury - 2D objekty

Je zřejmé, že textury jsou pro 3D programátora velmi potřebným artiklem. K jejich obstarání můžete využít bohatou zásobu textur na internetu, mnohdy volně šířitelných. Jsou však případy, kdy potřebujete mít texturu s vlastní licencí nebo jen proto, že nenacházíte přesně to co potřebujete. Proto si popíšeme pár postupů, jak si texturu připravit.

Nejdříve ale jednu radu - ať už získáte odněkud hotovou texturu nebo jen polotovar (fotografii) k její přípravě, vždy si uchovejte odkaz na zdroj. Může se stát (a často se stává), že se budete potřebovat obrátit znovu na zdroj - buď kvůli autorství nebo protože o originál přijdete jeho modifikací. A ještě druhá rada - vždy si uchovávejte jak originál ze kterého vycházíte, tak i důležité mezikroky. Je častým případem, že se potřebujete v operacích vrátit a udělat něco jinak. Jinak budete muset začít opět od úplného začátku a někdy možná už ani původní originál znovu nenajdete.

Budete-li textury vytvářet, používejte pokud možno rozměry, které jsou mocninou 2. To je např. 32, 64, 128. Jedním z důvodů takových rozměrů je generování mipmap textur, kdy je třeba vytvořit řetězec textur, jejichž rozměry jsou v poměru 1:2 a končí na rozměru 1. Druhým důvodem je efektivnost uložení textury ve videopaměti grafické karty. Mnohem snáze se v paměti organizují textury s rozměry mocniny 2. Z podobných důvodů se doporučuje, aby textura byla čtvercová, tj. aby šířka byla stejná jako výška. Opět je důvodem generování mipmap (výška a šířka by neměly stejný počet úrovní) a čtvercové textury se snáze organizují v paměti.

Mnoho 3D gafických karet uvedené dva požadavky striktně vyžadují. Petr při zavádění textury do videopaměti textury zkonvertuje na potřebný rozměr, je-li to třeba. Přesto raději na automatickou konverzi nespoléhejte a připravujte textury splňující uvedená omezení.

Dalším omezujícím kritériem textur je maximální rozměr. Grafické karty povolují maximální rozměr textury často až 2048 nebo 4096 bodů. Petr texturu opět zkonvertuje na menší rozměr, vyžaduje-li to grafická karta. Návrhář by už předem měl počítat s menšími texturami. Kromě omezení rozměrů grafickou kartou dochází u velkých textur k rychlému zaplnění videopaměti a k pomalému načítání textur. To se projeví tím, že hra na okamžik zadrhne, dostane-li se hráč do dosud nezobrazené oblasti scény.

I s malými texturami lze dosáhnout velmi dobrého vzhledu. Návrhář by se měl každou texturu snažit minimalizovat tak, aby byla co nejmenší a přitom aby ještě nebylo znatelné zhoršení kvality obrazu. Za optimální velikost textury lze považovat nejčastější rozměr 256 x 256 (jedná se o koncový rozměr, ne rozměr v 8-bitových barvách před provedením zjemnění textury). Textury s rozměrem 128 x 128 lze považovat v mnoha situacích za ještě dobré řešení, proto je tento rozměr limitem velikosti textury v Lite verzi Petra. V některých případech může být dostačující i textura s rozměrem 64 x 64 bodů. Naproti tomu textura 512 x 512 bodů slouží k již detailnímu zobrazení grafických informací, například nápověda nebo popis. Měl by to být maximální rozměr, se kterým lze počítat u všech grafických karet. Kvůli zátěži načítání textur by se mělo jednat o málo častý případ textury. U textur s rozměry 1024 a více nelze již počítat se zaručenou podporou na všech koncových zařízeních.

Následující popisy se budou vztahovat ke grafickému editoru Photoshop 7.0 CE. U jiných editorů bude postup obdobný, jen budete muset potřebné funkce více hledat.

Začneme s vytvořením textury 2D objektu, tedy objektu s průhledným okolím. Pravděpodobně si nejdříve někde najdete nějakou fotografii, ze které chcete 2D obrázek vytáhnout. Fotografii otevřete ve Photoshopu. Jako první operaci možná budete někdy muset fotografii nejdříve otočit nebo deformovat tak, aby se objekt dostal do správných proporcí.

Velkou výhodou je, má-li objekt výrazný obrys. V tom případě můžeme využít nástroj magnetické laso.

Klávesami Cltr+[+] a Cltr+[-] si nastavte měřítko zobrazení tak, abyste viděli celý objekt v nejvyšším přiblížení. Jemnější zoomování docílíte kolečkem myši. Vyberte magnetické laso a klikněte na hranu objektu. Objeví se obrysová křivka sledující kurzor myši. Postupně pohybujte kurzorem myši nad hranou objektu. Křivka se přichytává pomocí kotevních bodů na hranu. Pokud vám křivka zajede kam nemá, kousek se vraťte a klávesou Delete zrušte chybné kotevní body. Operaci můžete přerušit klávesou Esc. Značení obrysu ukončíte uzavřením smyčky, dvojklikem myší nebo stiskem Enter. Je-li třeba, můžete přidat další části výběru opět nástrojem magnetické laso, nebo odebrat nějaké části označením s Alt.

Máte-li výběr ukončen, stiskem Ctrl+C zkopírujete vybranou oblast do schránky. Stiskem Ctrl+N otevřete okno pro založení nového souboru. V rozměrech je přednastavena velikost vašeho výběru. Nic neměňte a jen stiskem Enter okno potvrďte. Objeví se nové okno. Stiskem Ctrl+V vložte obsah schránky do okna.

Stiskem Ctrl+L vyvolejte editor jasových úrovní objektu. Přitáhněte běžce na histogramu k bočním hranám křivky tak, aby obraz získal dobrý kontrast. Někdy může být výhodnější zvolit automatické vyrovnání úrovní Ctrl+Shift+L.

Zrušte vrstvu pozadí, tím se okolí objektu zobrazí jako průhledné. Je-li třeba, dokorigujte nepřesnosti v ořezání objektu. Některé opravy je vhodnější udělat ještě před zrušením pozadí, kdy můžete některé chyby zviditelnit vyplněním pozadí jinou barvou.

Otevřete okno pro nastavení velikosti obrazu a změňte velikost obrazu na velikost vhodnou pro textury. Dobré je použít rozměr 512 x 512 bodů, což je asi tak maximum doporučené pro textury a přitom ještě dobrá kvalita ze které lze generovat textury menší. Jedná-li se o objekt se značně rozdílnou výškou a šířkou, je vhodné uložit si i původní vzhled objektu. Pomůže to při pozdějším určování rozměrů 3D objektu a také si nepoškodíme kvalitu obrazu pokud bychom se později rozhodli rozdělit ho na více segmentů.

Možná se divíte, proč vše převádět na čtvercové textury? U textury není důležitý poměr stran objektu. Skutečné rozměry se řeší až u objektu, na který je textura nalepena. Je účelné maximalizovat obraz objektu na textuře na plnou velikost textury, s využitím plné šířky i výšky, a tím dosáhnout maximální kvality obrazu a maximálního využití plochy textury. Pouze u textur s velmi rozdílným poměrem stran je vhodné rozdělit texturu na několik menších textur.

Nyní je vhodný okamžik k uložení true-color verze textury. Po převodu na paletový formát již nebude cesta zpět a bylo by škoda nemít k dispozici kvalitnější verzi až ji někdy v budoucnu budete potřebovat. Pro průhledné textury je nejvhodnější formát PNG, který podporuje mnoho herních enginů (Petr bohužel ne).

Pro převod obrázku do palet Petra je na konci lekce ke stažení tabulka palet pro Photoshop. Zvolte v menu Obraz / Režim / Indexovaná barva. V dialogu vyberte jako paletu Jiná... a načtěte soubor palet Petr_palety.act, potvrďte tabulku palet OK. Příště již bude stačit používat volbu Předchozí. Jak vidíte, barev je v tabulce 223 (běžně má Petr 224, byla vypuštěna barva pro stíny) a je zaškrtnutá Průhlednost. Volbu Podklad ponechejte na Žádná, Rozklad zvolte Rozptýlený, Míra 100% a zaškrtněte Zachovat přesné barvy.

Po potvrzení OK se textura zkonvertuje do barev Petra. Výsledek můžete uložit - zvolte cílový formát BMP (formát Windows), zaškrtněte Komprimovat (RLE). Pokud teď texturu zkušebně přenesete do Petra (buď přes schránku nebo přes soubory knihovny), uvidíte, že pozadí je správně vyplněno průhlednou barvou. Někdy až v tomto zobrazení uvidíte zapomenutá nevymazaná místa, proto můžete ještě udělat dodatečné korekce a obrázek uložit přes knihovnu. Uložení může být dobré i v případě, že chcete být opravdu důslední a mít texturu ve formátu s paletami a kompresí přesně tak, jak by je uložil Petr.

Importovací tabulka palet Petr_palety.act byla připravena úpravou standardních palet Petra tak, že barva používaná v Petrovi pro průhlednost (R=149, G=34, B=140) byla označena jako průhledná barva a barva pro stíny (R=97, G=30, B=111) byla vypuštěna.

Nebudete-li umět ve vašem editoru importovat obrázek do barev Petra nebo konverze bude mít horší kvalitu než při importu Petrem, budete muset ponechat pozadí na neutrální barvě (která se na hranách objektu nevyskytuje), přenést obrázek do Petra a tam vyplnit pozadí průhlednou barvou nástrojem Výplň. Je třeba, aby barva pozadí byla některá z barev používaných v Petrovi, jinak by kvůli ditheringu nebylo možné její vyplnění barvou. Nabídku barev můžete zjistit zobrazením palet nějakého obrázku z Petra nebo sejmutím pole barev v editoru Petra a nabráním příslušné barvy z obrázku. Nebo použít černou či bílou barvu, ta je v barvách Petra určitě. Obrázek přenášený do Petra použijte raději 2x nebo 4x zvětšený a až po vyplnění průhlednou barvou ho zmenšete na správnou velikost. Tím se vyhnete artefaktům vzniklým smíšením obrázku s pozadím na hranách objektu.

Mnohem větším problémem jsou stromy. Mezi větvemi stromu snadno prosvítá původní pozadí a proto nestačí obtáhnout obrys stromu. Z fotografií můžete použít jen takové případy, kdy strom má větve husté a jsou výrazné přechody mezi větvemi a pozadím. V takovém případě si buď vystačíte opět s obrysem stromu nebo pozadí vymažete nástrojem plechovka barvy. Jako režim zvolte Vymazat, tím dojde k zprůhlednění mazaných ploch. Vypnete-li přepínač Sousedící, můžete naráz vymazat daný rozsah barev z celého obrázku. Při mazání zkoušejte různá nastavení Tolerance. Po každé operaci porovnejte současný a předešlý stav opakovaným stiskem Ctrl+Z, pokračujte jen pokud nedošlo k nechtěnému odmazání nějaké části obrazu. K odmazávání zbytků použijte nástroj Guma. Je důležité, aby stromem neprosvítalo původní pozadí, například modrá obloha. To ověříte tím, že budete zkoušet za stromem různě světlá pozadí.

Na správnou přípravu fotografií stromů je třeba pamatovat už ve chvíli pořizování fotografie. Je třeba zvolit pozadí, které je barevně dostatečně odlišné od větví stromu, nejlépe pozadí jednobarevné. Ale ani obloha jako pozadí nemusí být vždy nejoptimálnější. Jasná modrá obloha způsobí přesvícení záběru, strom je příliš tmavý a někdy se nemusí podařit ho dodatečně zesvětlit. Fotografie by měla mít pokud možno co nejvyšší rozlišení. Zmenšením fotografie s odmazaným pozadím se přechodová místa změní na poloprůhledná a tím budou správně překryta přes pozadí 3D scény. Zatímco odmazáváním pozadí u fotografie s nižším rozlišení jsou již přechody prolnuty s pozadím a máme jen možnost je buď odmazat nebo ponechat a v tom případě budou hrany stromu svítit původním pozadím.

Lepším řešením jsou fraktálové stromy. U stromů generovaných programem si můžeme snadno určovat pozadí, osvětlení i rozlišení a tak je situace mnohem snazší. Některé nástroje umožňují už přímo generování průhledných textur. Výborným nástrojem ke generování stromů (a také pozadí scén) je program Bryce3D, který je pro nekomerční použití zdarma k dispozici. Jeho velkou předností je příjemné uživatelské rozhraní a snadné použití. Příklad stromu vytvořeného v Bryce3D vidíte na následujících obrázcích. Zelené pozadí bylo použito z toho důvodu, aby na hranách stromu nevytvářelo barevné obrysy.


 

Stáhnout

Staženo 208x (3.29 MB)
Aplikace je včetně zdrojových kódů v jazyce Petr Lite (jsou obsaženy v EXE souboru, který lze v programu přímo otevřít)

 

  Aktivity (1)

Článek pro vás napsal Panda38
Avatar
Programátor C++, WinAPI, ASM.

Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!


 


Miniatura
Předchozí článek
Jak na textury
Miniatura
Všechny články v sekci
3D grafika
Miniatura
Následující článek
Vytváříme textury - plochy

 

 

Komentáře

Avatar
KlimiCZ
Člen
Avatar
KlimiCZ:

Hodně zajmavé.

Odpovědět 4.5.2013 12:01
Nesnaž se zakrýt něco, co jsi provedl úmyslně. Svět je tak malý, že dotyčný se to stejně dozví.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.