IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Vytvárame textúry - 2D objekty

Je zrejmé, že textúry sú pre 3D programátora veľmi potrebným artiklom. K ich obstaranie môžete využiť bohatú zásobu textúr na internete, mnohokrát voľne Distribuovateľných. Sú však prípady, kedy potrebujete mať textúru s vlastnou licenciou alebo len preto, že nenachádzate presne to čo potrebujete. Preto si popíšeme pár postupov, ako si textúru pripraviť.

Najskôr ale jednu radu - nech už získate odniekiaľ hotovú textúru alebo len polotovar (fotografiu) k jej príprave, vždy si uchovajte odkaz na zdroj. Môže sa stať (a často sa stáva), že sa budete potrebovať obrátiť znovu na zdroj - buď kvôli autorstvo alebo pretože o originál prídete jeho modifikácií. A ešte druhá rada - vždy si uchovávajte ako originál z ktorého vychádzate, tak i dôležité predbežné kroky. Je častým prípadom, že sa potrebujete v operáciách vrátiť a urobiť niečo inak. Inak budete musieť začať opäť od úplného začiatku a niekedy možno už ani pôvodný originál znova nenájdete.

Ak budete textúry vytvárať, používajte pokiaľ možno rozmery, ktoré sú mocninou 2. To je napr. 32, 64, 128. Jedným z dôvodov takých rozmerov je generovanie mipmap textúr, kedy je potrebné vytvoriť reťazec textúr, ktorých rozmery sú v pomere 1: 2 a končí na rozmere 1. Druhým dôvodom je efektívnosť uloženie textúry vo videopamäte grafickej karty. Oveľa ľahšie sa v pamäti organizujú textúry s rozmermi mocniny 2. Z podobných dôvodov sa odporúča, aby textúra bola štvorcová, tj. Aby šírka bola rovnaká ako výška. Opäť je dôvodom generovanie mipmap (výška a šírka by nemali rovnaký počet úrovní) a štvorcové textúry sa ľahšie organizujú v pamäti.

Mnoho 3D gafických kariet uvedené dve požiadavky striktne vyžadujú. Petr pri zavádzaní textúry do videopamäte textúry skonvertuje na potrebný rozmer, ak je to potrebné. Napriek tomu radšej na automatickú konverziu nespoliehajte a pripravujte textúry spĺňajúce uvedené obmedzenia.

Ďalším obmedzujúcim kritériom textúr je maximálny rozmer. Grafické karty povoľujú maximálny rozmer textúry často až 2048 alebo 4096 bodov. Petr textúru opäť skonvertuje na menší rozmer, ak to vyžaduje grafická karta. Návrhár by už vopred mal počítať s menšími textúrami. Okrem obmedzenia rozmerov grafickou kartou dochádza u veľkých textúr k rýchlemu zaplneniu videopamäte a k pomalému načítanie textúr. To sa prejaví tým, že hra na okamih zadrhne, ak sa dostane hráč do doposiaľ nezobrazené oblasti scény.

Aj s malými textúrami dá dosiahnuť veľmi dobrého vzhľadu. Návrhár by sa mal každú textúru snažiť minimalizovať tak, aby bola čo najmenšia a pritom aby ešte nebolo znateľné zhoršenie kvality obrazu. Za optimálnu veľkosť textúry možno považovať najčastejší rozmer 256 x 256 (jedná sa o koncový rozmer, nie rozmer v 8-bitových farbách pred vykonaním zjemnenie textúry). Textúry s rozmerom 128 x 128 možno považovať v mnohých situáciách za ešte dobré riešenie, preto je tento rozmer limitom veľkosti textúry v Lite verzii Petra. V niektorých prípadoch môže byť postačujúce aj textúra s rozmerom 64 x 64 bodov. Naproti tomu textúra 512 x 512 bodov slúži k už detailnému zobrazenie grafických informácií, napríklad pomocník alebo popis. Mal by to byť maximálne rozmer, s ktorým možno počítať pri všetkých grafických kariet. Kvôli záťaži načítanie textúr by sa malo jednať o málo častý prípad textúry. U textúr s rozmermi 1024 a viac nedá už počítať so zaručenou podporou na všetkých koncových zariadeniach.

Nasledujúce popisy sa budú vzťahovať ku grafickému editora Photoshop 7.0 CE. Pri iných editorov bude postup obdobný, len budete musieť potrebné funkcie viac hľadať.

Začneme s vytvorením textúry 2D objektu, teda objektu s priehľadným okolím. Pravdepodobne si najskôr niekde nájdete nejakú fotografiu, z ktorej chcete 2D obrázok vytiahnuť. Fotografiu otvorte vo Photoshope. Ako prvý operáciu možno budete niekedy musieť fotografiu najskôr otočiť alebo deformovať tak, aby sa objekt dostal do správnych proporcií.

3D grafika

Veľkou výhodou je, ak má objekt výrazný obrys. V tom prípade môžeme využiť nástroj magnetické laso.

3D grafika

Klávesmi Cltr + [+] a Cltr + [-] si nastavte mierku zobrazenia tak, aby ste videli celý objekt v najvyššom priblíženia. Jemnejšie zoomovanie docielite kolieskom myši. Vyberte magnetické laso a kliknite na hranu objektu. Objaví sa obrysové krivka sledujúci kurzor myši. Postupne pohybujte kurzorom myši nad hranou objektu. Krivka sa prichytáva pomocou kotevných bodov na hranu. Ak vám krivka zájde kam nemá, kúsok sa vráťte a klávesou Delete zrušte chybné kotevné body. Operáciu môžete prerušiť klávesom Esc. Značenie obrysu ukončíte uzavretím slučky, dvojklikom myšou alebo stlačením Enter. Ak je potrebné, môžete pridať ďalšie časti výberu opäť nástrojom magnetické laso, alebo odstrániť nejaké časti označením s Alt.

Ak máte výber ukončený, stlačením Ctrl + C skopírujete vybranú oblasť do schránky. Stlačením Ctrl + N otvoríte okno pre založenie nového súboru. V rozmeroch je prednastavená veľkosť vášho výberu. Nič nemeňte a len stlačením Enter okno potvrdenie. Objaví sa nové okno. Stlačením Ctrl + V vložte obsah schránky do okna.

3D grafika

Stlačením Ctrl + L vyvolajte editor jasových úrovní objektu. Pritiahnite bežca na histogramu k bočným hranám krivky tak, aby obraz získal dobrý kontrast. Niekedy môže byť výhodnejšie zvoliť automatické vyrovnanie úrovní Ctrl + Shift + L.

3D grafika

Zrušte vrstvu pozadia, tým sa okolí objektu zobrazí ako priehľadné. Ak je potrebné, dokorigujte nepresnosti v orezanie objektu. Niektoré opravy je vhodnejšie urobiť ešte pred zrušením pozadí, kedy môžete niektoré chyby zviditeľniť vyplnením pozadí inou farbou.

Otvorte okno pre nastavenie veľkosti obrazu a zmeňte veľkosť obrazu na veľkosť vhodnú pre textúry. Dobré je použiť rozmer 512 x 512 bodov, čo je asi tak maximum odporúčané pre textúry a pritom ešte dobrá kvalita z ktorej možno generovať textúry menšie. Ak sa jedná o objekt sa značne rozdielnou výškou a šírkou, je vhodné uložiť si aj pôvodný vzhľad objektu. Pomôže to pri neskoršom určovaní rozmerov 3D objektu a tiež si nepoškodíme kvalitu obrazu ak by sme sa neskôr rozhodli rozdeliť ho na viac segmentov.

Možno sa čudujete, prečo všetko prevádzať na štvorcové textúry? U textúry nie je dôležitý pomer strán objektu. Skutočné rozmery sa rieši až pri objekte, na ktorý je textúra nalepená. Je účelné maximalizovať obraz objektu na textúre na plnú veľkosť textúry, s využitím plnej šírky aj výšky, a tým dosiahnuť maximálnu kvalitu obrazu a maximálneho využitia plochy textúry. Len u textúr s veľmi rozdielnym pomerom strán je vhodné rozdeliť textúru na niekoľko menších textúr.

3D grafika

Teraz je vhodný okamih na uloženie true-color verzie textúry. Po prevode na paletový formát už nebude cesta späť a bolo by škoda nemať k dispozícii kvalitnejšie verzii až ju niekedy v budúcnosti budete potrebovať. Pre priehľadné textúry je najvhodnejší formát PNG, ktorý podporuje mnoho herných enginov (Petr bohužiaľ nie).

Pre prevod obrázku do paliet Petra je na konci lekcie k stiahnutiu tabuľka paliet pre Photoshop. Zvoľte v menu Obraz / Režim / Indexovaná farba. V dialógu vyberte ako paletu Iná ... a načítajte súbor paliet Petr_palety.act, potvrďte tabuľku paliet OK. Nabudúce už bude stačiť používať voľbu Predchádzajúci. Ako vidíte, farieb je v tabuľke 223 (bežne má Petr 224, bola vypustená farba pre tiene) a je zaškrtnutá Priehľadnosť. Voľbu Podklad ponechajte na Žiadna, Rozklad vyberte Rozptýlený, Miera 100% a zaškrtnite Zachovať presné farby.

Po potvrdení OK sa textúra skonvertuje do farieb Petra. Výsledok môžete uložiť - zvoľte cieľový formát BMP (formát Windows), zaškrtnite Komprimovať (RLE). Ak teraz textúru skúšobni prenesiete do Petra (buď cez schránku alebo cez súbory knižnice), uvidíte, že pozadie je správne vyplnené priehľadnou farbou. Niekedy až v tomto zobrazení uvidíte zabudnutá nevymazaná miesta, preto môžete ešte urobiť dodatočné korekcie a obrázok uložiť cez knižnicu. Uloženie môže byť dobré aj v prípade, že chcete byť naozaj dôslední a mať textúru vo formáte s paletami a kompresiou presne tak, ako by ich uložil Petr.

3D grafika

Import tabuľka paliet Petr_palety.act bola pripravená úpravou štandardných paliet Petra tak, že farba používaná v Petrovi pre transparentnosť (R = 149, G = 34, B = 140) bola označená ako priehľadná farba a farba pre tiene (R = 97, G = 30, B = 111) bola vypustená.

Ak nebudete vedieť vo vašom editore importovať obrázok do farieb Petra alebo konverzie bude mať horšiu kvalitu než pri importe Petrom, budete musieť ponechať pozadie na neutrálnej farbe (ktorá sa na hranách objekte nevyskytuje), preniesť obrázok do Petra a tam vyplniť pozadia priehľadnou farbou nástrojom výplň. Je potrebné, aby farba pozadia bola niektorá z farieb používaných v Petrovi, inak by kvôli ditheringu nebolo možné jej vyplnenie farbou. Ponuku farieb môžete zistiť zobrazením paliet nejakého obrázku z Petra alebo odobratím poľa farieb v editore Petra a natiahnutím príslušnej farby z obrázku. Alebo použiť čiernu či bielu farbu, tá je vo farbách Petra určite. Obrázok prenášaný do Petra použite radšej 2x alebo 4x zväčšený a až po vyplnení priehľadnou farbou ho zmenšite na správnu veľkosť. Tým sa vyhnete artefaktom vzniknutým zmiešaním obrázka s pozadím na hranách objektu.

Oveľa väčším problémom sú stromy. Medzi konármi stromu ľahko presvitá pôvodná pozadia a preto nestačí obtiahnuť obrys stromu. Z fotografií môžete použiť len také prípady, keď strom má vetvy husté a sú výrazné prechody medzi vetvami a pozadím. V takom prípade si buď vystačíte opäť s obrysom stromu alebo pozadia vymažete nástrojom plechovka farby. Ako režim vyberte Vymazať, tým dôjde k spriehľadnenie mazaných plôch. Ak vypnete prepínač Susediace, môžete naraz vymazať daný rozsah farieb z celého obrázku. Pri mazaní skúšajte rôzne nastavenia Tolerancia. Po každej operácii porovnajte súčasný a predošlý stav opakovaným stlačením Ctrl + Z, pokračujte len pokiaľ nedošlo k nechcenému odmazanie nejakej časti obrazu. K odmazávání zvyškov použite nástroj Guma. Je dôležité, aby stromom nepresvital pôvodné pozadie, napríklad modrá obloha. To overíte tým, že budete skúšať za stromom rôzne svetlá pozadí.

3D grafika
3D grafika
3D grafika

Na správnu prípravu fotografií stromov je potrebné pamätať už vo chvíli robení fotografie. Je potrebné zvoliť pozadie, ktoré je farebne dostatočne odlišné od konárov stromu, najlepšie pozadie jednofarebné. Ale ani obloha ako pozadie nemusí byť vždy najoptimálnejšie. Jasná modrá obloha spôsobí presvietenie záberu, strom je príliš tmavý a niekedy sa nemusí podariť ho dodatočne zosvetliť. Fotografie by mala mať pokiaľ možno čo najvyššie rozlíšenie. Zmenšením fotografie s odmazaným pozadím sa prechodová miesta zmení na polopriehľadná a tým budú správne prekrytá cez pozadie 3D scény. Kým odmazáváním pozadie u fotografie s nižším rozlíšením sú už prechody preniknuté s pozadím a máme len možnosť je buď odmazať alebo ponechať a v tom prípade budú hrany stromu svietiť pôvodným pozadím.

Lepším riešením sú fraktálové stromy. U stromov generovaných programom si môžeme ľahko určovať pozadia, osvetlenie aj rozlíšenie a tak je situácia oveľa jednoduchšie. Niektoré nástroje umožňujú už priamo generovanie priehľadných textúr. Výborným nástrojom na generovanie stromov (a tiež pozadie scén) je program Bryce3D, ktorý je pre nekomerčné použitie zdarma k dispozícii. Jeho veľkou prednosťou je príjemné užívateľské rozhranie a jednoduché použitie. Príklad stromu vytvoreného v Bryce3D vidíte na nasledujúcich obrázkoch. Zelené pozadie bolo použité z toho dôvodu, aby na hranách stromu netvorilo farebné obrysy.

3D grafika
3D grafika
3D grafika

 

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 211x (3.29 MB)
Aplikácia je vrátane zdrojových kódov v jazyku Petr Lite (sú obsiahnuté v EXE súbore, ktorý možno v programe priamo otvoriť)

 

Všetky články v sekcii
3D grafika
Článok pre vás napísal Panda38
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Programátor C++, WinAPI, ASM.
Aktivity