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, YcBcr
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: Coordinates a la ...
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