středa 4. února 2015

Úvod k programu pro editaci textur

Už delší dobu jsem chtěl vytvořit program na úpravu textur či obrázků, který by zvládal hromadné editace a speciální akce či efekty na míru. Máme sice Photoshop a jiné programy s grafickou nástavbou, ty jsou ale klikací a v tomto smyslu editace obrázků v nich je pomalá. Mou představou je získat program, který dokáže přizpůsobit fotografie tak, aby vyhovovali mým složitým požadavkům na vzhled. Praktické využití textur by mělo být v leteckém simulátoru, pokud se povede projekt dokončit. Motivace by byla, ovšem tvorba jakéhokoliv programu je náročnou záležitostí a vyžaduje mnoho znalostí nejen programovacího jazyka jako takového, ale také znalosti tzv. knihoven, tedy doplňkových programů, přesněji řečeno funkcí bez kterých se komplikovanější program neobejde. V minulosti jsem přemýšlel o využití programu convert.exe neboli ImageMagick (zkratka IM). To je program který zvládá mnoho grafických efektů a triků. Tento program zvládá spoustu věcí jako například dokáže ze souboru pdf vyexportovat rastrové obrazy nebo vektorové letecké mapy. To jsem udělal když jsem chtěl používat letecké mapy ale ve formátu PDF mi to nevyhovovalo. Hlavním nedostatkem IM je mi přišla nízká rychlost především při rozmazávání obrázků a nízká efektivita operací. Abyste dosáhli jednoduchého efektu mnohdy musíte složitě aplikovat více úkonů abyste se dostali k tomu co chcete. IM je psaný v jazyce C++ což je jazyk, který používá třídy. Je sice sofistikovaný, ale programy v něm jsou hodně složité až je to někdy na úkor rychlosti. Můj program má být zaměřený na to, abych dosáhl přednostně toho co chci, na efektivitu a rychlost. Hlavní inspirací pro mě zůstává Photoshop. Musím však podotknout, že v mém případě se nebude jednat o grafický program, nýbrž program, který bude pracovat na bázi příkazového řádku. Takový program si můžete zahrnout do dávkového souboru, což je soubor spustitelný ve Windows pod konzolou CMD. Dávkový soubor lze editovat a připsat přesné příkazy přímo do něj. Abyste mohli můj program používat nezbude vám než se naučit používat jednotlivé argumenty. Přesto by vám měl můj program časem hahradit photoshop ve smyslu dávkových příkazů. Jelikož cesta k vytvoření takového programu je dlouhá, začínám svůj blog psát už teď, abyste byli průběžně informováni o tom s čím se nejspíš v programu setkáte.

Nechci se zaměřovat na podporu široké škály obrazových formátů ale postačil bych si s těmi třemi nebo čtyřmi základními.

Můj program by měl umět pracovat s obrazy v barevném režimu RGB, HSV, CMYK a s formáty PNG, JPG, BMP. Pro pochopení mého programu bude zásadní především barvový prostor HSV. Je to zkratka Hue, Saturation, Value. Jsou to tři složky na něž můžeme rozložit každou lidským okem viditelnou barvu nebo každý digitální obraz (kromě těch černobílých). Výhodou tohoto formátu je že se pomocí něj dá snadno vyznat v barvách, snadno se pomocí těchto tří složek míchají nebo nastavují barvy a snadno se nastavují podmínky pro to co v obrazu hledáme a co chceme upravit. Zatím nechci zabíhat moc do detailu, ale protože je to opravdu klíčová věc, už teď vám řeknu že Hue = odstín neboli zabarvení, Saturation = saturace neboli intenzita barvy a Value je složka která představuje tmavost nebo světlost barvy, dalo by se říct jas. Režim HSV je hodně podobný HSL (Hue, Saturation, Lightness) kde třetí složka představuje míru bílé čili svítivost (angl. luminocity). Podobně bychom mohli HSV vysvětlovat jako Hue, Saturation, Brightness což je výstižnější a vlastně i tato zkratka se používá. Pokud máte nainstalovaný Photoshop nebo Gimp či jiný podobný program, tak ho otevřete a studujte jak v něm nastavit barvu, jak najít barvu na obrázku a jak nastavit složky HSB nebo jak se složky HSB ve Photoshopu reflektují ve stupních a procentech, když přejíždíte kapátkem (tj. nástroj Photoshopu na výběr barev) po obrazu. Velkou výhodou Photoshopu je jeho snadný a rychlý způsob vybírání barev. Tak jako ve Photoshopu když používáte kapátko a používáte při tom klávesu shift, abyste mohli vybrat více barev například pomocí Color Range (Barvovým rozsahem), tak i můj program by měl umožnit specifikovat ty barvy se kterými chcete pracovat. Měl by umožnit tak jako Photoshop, pracovat s kanálama, maskama a vrstvama. Pokud toto umíte ve Photoshopu a víte čeho chcete dosáhnout, pak by to nemělo být tak těžké dosáhnout toho v mém programu. Pokud ještě stále nevíte co je to vrstva. Vrstva je obraz. Ve Photoshopu to je tak, že když položíte obraz a překryjete ho jiným obrazem, můžete docílit různých efektů buď pomocí blendingu nebo pomocí průsvitnosti. Blendingem může být například efekt, který spodní obraz ztmaví nebo zesvětlí podle obrazu, který leží nad ním. Horní obraz může tomu pod ním předat barvu (odstín), saturaci nebo světlo (svítivost - luminocity). V kombinaci s výběrem specifických barev na obrazu a těchto efektů můžete například potlačit stíny na fotografii, vytvořit jarní, podzimní nebo zimní textury.

Tolik zatím ke grafickým efektům. Jelikož mě vždycky bavila tvůrčí činnost, od grafiky až po tvorbu scenérií či scenérek do hry, tak na celý program pohlížím s nadhledem. Uvědomuji si, že jedna věc je vytvořit textury, druhá věc je být schopen organizovat velké množství různých textur tak, abychom se v nich neztratili. Chtěl bych tedy do programu zabudovat určité mechanismy, které by vaše obrazové soubory uměli přesunout do databáze souborů, tak, aby se s nimi pracovalo rychleji. Vzhledem k tomu, že v leteckém simulátoru pracujeme s tím čemu říkáme LODy, neboli čtverce, na které je rozdělena mapa, budu databáze dělit podle toho k jakému LODu se obrazy vztahují. Moje představa je taková, že by jeden LOD mohl obsahovat všechny textury týkající se přípravy projektu od LODu 18 až po LOD řekněme 7. Abyste rozuměli mým termínům přesněji. Zásadně používám slovo LOD pro vyznačení čtvercové plochy dané určitými standardy.
Podívejte se na tento odkaz:
Google maps coordinates - tile bounds projection

Slovo LOD je nutné rozlišovat od slova zoom. Zoomem jednoznačně rozumím přiblížení nebo taky rozlišení obrazu ve kterém je daná mapa. Najeďme si na čtverec Prahy o zoomu 9. Budeme-li chtít zpracovat takto velkou plochu budu mluvit o LODu 9, ale obrázky které budeme potřebovat jsou obrázky zoom 18. Když budete postupně přibližovat mapu pomocí kolečka na myši bude se vám daný čtverec rozdělovat na další a další LODy tedy menší oblasti, které bude třeba nejdříve získat než se dopravujeme k LODu 9. Zastavíme se tedy na Zoomu 18. V tuto chvíli je nám jasné jak velké množstí souborů potřebujeme. Už to máte spočítané? Je to 262144 souborů pro oblast LODu9. Pochopitelně, že tak velké množství souborů se nedá sehnat najednou. Google Javascript API v3 umožňuje zobrazit maximálně 25000 souborů za den. Pro zpracování nočních textur ale budeme potřebovat nejen ortophoto (soubory jpg) ale také obyčejnou mapku ve formátu png). Oblast LOD9 byste si teoreticky mohli prohlédnout na svém počítači za 20 dní. Nevím zda se to dá takto stihnout, je to jen teorie.

Slovo závěrem

Pokud se vám některé termíny zdali až příliš cizí, doporučuju si něco na internetu přečíst na dané téma, abyste byli v obraze. Třeba z Wikipedie. Často pomůžou obrázky. Asi napíšu článek na téma barevných prostorů jestli na to bude čas. Dokončení mého programu závisí na časových a jiných okolnostech. Času mám poměrně dost, ale zdraví už tolik ne, takže moje možnosti jsou omezené a nevím jak bych mohl pokrýt vytvoření kompletního manuálu k programu. Proto již nyní chci psát články, aby bylo jasné kam program směřuje a jak to jde kupředu nebo zda to vázne. Budete mít zatím dost času si udělat základní představu. Musím upozornit, že pro zvládnutí práce s texturama a tímto programem bude třeba mít více než jen základní schopnosti ovládání počítače. Budete potřebovat umět instalovat programy ručně, pracovat se složkama, vytvářet zástupce, orientovat se v souborech, umět si nastavit program Průzkumík tak, abyste viděli koncovky souborů (jak jinak byste poznali s jakými soubory pracujete?!). Kromě mého  programu,  by později měl být dodán nějaký script či program na práci s resample.exe, abyste si mohli složit svoji scenérku. Souřadnice a údaje potřebné by měli být vypočítány z názvu souboru. Což mi připomíná, že pokud nevíte kde sehnat zdroje dat, bude se vám hodit program (plugin) Save images, který je k dispozici pro prohlížeč Firefox. Tak pokud nemáte Firefox, tak si ho nainstalujte, najděte si Save images, ten si nainstalujte a zjistěte jak funguje. Je to program na hromadné stahování obrázků. Stačí nastavit klávesovou zkratku a jedete. A pokud se vám to nechce dělat ručně tak si ještě pořiďte program Autohotkey, dají se v tom vytvořit skripty či programy na zautomatizování určité činnosti (jako klikání myší a mačkání kláves), ale to probereme někdy v budoucnu.

Žádné komentáře:

Okomentovat