Tutorial | Vektorizácia spritov
Predtým, než bol dostupný skvelý softvér na úpravu vektorovej grafiky...
Dokonca predtým, než sme mali počítačové monitory s rozlíšením 640x480...
Bežne sa hrali videohry s starostlivo zostavenými pixelmi na displejoch s nízkym rozlíšením.
Druh umenia, ktorý sa zrodil v tejto dobe nazývame „pixel art“ a jednotlivé obrázky nazývame „sprity“ (jedn. číslo „sprite“, vyslovuj „sprajt“).
Inkscape používa knižnicu libdepixelize, ktorá dokáže tieto sprity automaticky vektorizovať. Môžete ju vyskúšať aj na iných typoch vstupných obrázkov, ale pamätajte, že výsledky nebudú rovnako dobré a je lepšie na ne využiť druhý vektorizačný nástroj Inkscape: potrace.
Začnime so vzorovým obrázkom, na ktorom si ukážeme možnosti tohto vektorizačného nástroja. Dolu na ľavej strane je príklad rastrového obrázka (pochádza z príspevku do súťaže Liberated Pixel Cup) a jeho vektorizovaná verzia na pravej strane.
libdepixelize používa na vektorizáciu obrázkov algoritmus Kopf-Lischinski. Tento algoritmus používa niekoľkých informatických a matematických konceptov na to, aby dosiahol dobrý výsledok pri obrázkoch spritov. Jedna vec, ktorú by ste si mali všimnúť je, že algoritmus úplne ignoruje alfa kanál (krytie). libdepixelize v súčasnosti nemá rozšírenia, ktoré by zvlášť zaobchádzali s obrázkami s alfa kanálom, ale dosahuje pri nich podobné výsledky ako pri väčšine obrázkov, ktoré Kopf-Lischinski rozpoznáva.
Obrázok hore má alfa kanál a výsledok je v poriadku. Ak však narazíte na sprite, ktorého vektorizácia nie je uspokojivá a ste presvedčení, že dôvodom je alfa kanál, kontaktujte správcu libdepixelize (napr. pošlite hlásenie o chybe na stránke projektu) a on algoritmus rád vylepší. Nemôže však algoritmus vylepšiť ak sa nedozvie o obrázkoch, ktoré dávajú neuspokojivé výsledky.
The image below is a screenshot of Pixel art dialog in the English localisation. You can open this dialog using the Path⇒Trace Bitmap⇒Pixel art menu or right-clicking on an image object and then Trace Bitmap.
Tento dialóg má dve časti: heuristika a výstup. Heuristika je určená na pokročilé použitie, ale nemali by ste si s ňou zatiaľ lámať hlavu, pretože predvolené nastavenia sú dostatočne dobré.
Algoritmus Kopf-Lischinski pracuje (na najvyššej úrovni) ako kompilátor - konvertuje dáta medzi viacerými reprezentáciami. Na každom kroku má algoritmus možnosť preskúmať operácie, ktoré táto reprezentácia ponúka. Niektoré z týchto priebežných reprezentácií majú správny vzhľad (ako výstup Voroného grafu s pretvorenými bunkami) a niektoré nie (ako graf podobnosti). Počas vývoja libdepixelize používatelia žiadali o pridanie možnosti exportovať tieto polotovary a autor libdepixelize túto možnosť pridal.
The default output should give the smoothest result and is probably what you want. You saw already the default output on the first samples of this tutorial. If you want to try it yourself, just open the Trace Bitmap dialog, select Pixel art tab and click in OK after choosing some image on Inkscape.
Voroného výstup môžete vidieť nižšie. Toto je „pretvorený pixelový obrázok“, kde bunky (predtým pixely) boli pretvorené tak, aby spájali pixely, ktoré sú súčasťou rovnakej črty obrázka. Nevytvoria sa žiadne krivky a obrázok sa naďalej skladá z rovných čiar. Rozdiel si môžete všimnúť, keď obrázok zväčšíte. Predtým pixely nemohli mať spoločnú hranu so susedom po uhlopriečke, aj ak mali byť súčasťou rovnakej črty. Ale teraz (vďaka grafu podobnosti farieb a heuristike, ktorú môžete doladiť, aby ste dosiahli lepšieho výsledku) je možné, aby dve uhlopriečne susediace bunky mali spoločnú hranu (predtým mali dve uhlopriečne susediace bunky spoločný iba jediný vrchol).
Štandardný výstup B-splines poskytuje hladké výsledky, pretože predchádzajúci Voroného výstup sa previedol na kvadratické bézierove krivky. Konverzia však nebude 1:1, pretože sa používajú viaceré heuristiky - tie rozhodnú, ktoré krivky sa zlúčia do jednej, keď algoritmus nájde križovatku typu T medzi viditeľnými farbami. Heuristiky v tejto fáze nie je možné doladiť.
Konečná fáza libdepixelize (momentálne ju nie je možné exportovať z používateľského rozhrania Inkscape, pretože je zatiaľ v experimentálnom a neúplnom stave) je „optimalizovať krivky“, ktorá odstraňuje efekt schodiska kriviek B-spline. Táto fáza tiež vykonáva detekciu hraníc, ktorá zabraňuje vyhladeniu niektorých čŕt a techniku triangulácie na korekciu polohy uzlov po optimalizácii. Keď tento výstup v libdepixelize opustí „experimentálnu fázu“ (snáď už čoskoro), malo by byť možné jednotlivo zakázať každú z týchto funkcií.
Sekcia Heuristika v používateľskom rozhraní umožňuje doladiť heuristiku, ktorú libdepixelize používa pri rozhodovaní, čo robiť, keď nájde blok 2x2 pixelov, kde dve uhlopriečky majú podobné farby. libdepixelize si kladie otázku „Ktoré spojenie zachovať?“. Snaží sa na konfliktné uhlopriečky použiť všetky heuristiky a zachová víťazné spojenie. V prípade nerozhodného výsledku odstráni obe spojenia.
Ak chcete analyzovať vplyv každej heuristiky a pohrať sa s číslami, najlepší je na to Voroného výstup. Môžete na ňom jednoduchšie vidieť účinky heuristiky a keď sa dopracujete k uspokojivému nastaveniu, stačí zmeniť typ výstupu na ten, ktorý chcete.
Dolu vidíte obrázok a výstup B-splines, kde je v každom z pokusov zapnutá len jedna z heuristík. Všimnite si fialové kruhy, ktoré zdôrazňujú rozdiely medzi jednotlivými heuristikami.
V prvom pokuse (horný obrázok) používame iba heuristiku kriviek. Táto heuristika sa snaží udržať dlhé krivky spojené. Môžete si všimnúť, že jej výsledok sa podobná poslednému obrázku, kde sme použili heuristiku riedkych pixelov. Jeden rozdiel je v tom, že jeho „sila“ je spravodlivejšia a dáva vysokú hodnotu svojmu hlasu len vtedy, keď je skutočne dôležité tieto spojenia zachovať. Pojem „férovosti“ tu vychádza z „ľudskej intuície“ na základe analyzovanej databázy pixelov. Ďalším rozdielom je, že táto heuristika nemôže rozhodnúť, čo robiť, keď spojenia zoskupujú veľké bloky a nie dlhé krivky (predstavte si šachovnicu).
V druhom pokuse (stredný obrázok) používame iba heuristiku ostrovčekov. Jediné, čo táto heuristika robí je, že sa snaží zachovať spojenie, ktorého odstránenie by spôsobilo niekoľko izolovaných pixelov (ostrovčeky) s konštantnou váhou hlasu. Takáto situácia sa nevyskytuje až tak často ako situácie, na ktoré sa zameriavajú ostatné heuristiky, ale táto heuristika je cool a pomáha dosahovať ešte lepšie výsledky.
V treťom pokuse (dolný obrázok), používame iba heuristiku riedkych pixelov. Táto heuristika sa snaží zachovať spojenie kriviek s farbou popredia. Aby zistila farbu popredia, heuristika analyzuje „okno“ s pixelmi okolo konfliktných kriviek. Pri tejto heuristike môžete nielen doladiť jej „silu“, ale aj okno pixelov, ktoré analyzuje. Majte však na pamäti, že keď zväčšíte analyzované okno pixelov príliš, maximálna váha jej hlasu sa tiež zvýši a mali by ste upraviť násobiteľ jej hlasu. Pôvodný autor libdepixelize si myslí, že táto heuristika je príliš chamtivá a rád používa hodnotu jej násobiteľa „0,25“.
Aj keď výsledky heuristiky kriviek a heuristiky riedkych pixelov dávajú podobné výsledky, býva užitočné používať obe, pretože heuristika kriviek môže zvýšiť bezpečnosť, že dôležité krivky obrysových pixelov nebudú potlačené a na druhej strane existujú prípady, ktoré môže zodpovedať iba heuristika riedkych pixelov.
Tip: Môžete vypnúť všetky heuristiky nastavením ich násobiteľa/váhy na hodnotu nula. Môžete ktorúkoľvek heuristiku donútiť, aby sa správala proti svojim zásadám ak nastavíte zápornú hodnotu jej násobiteľa/váhy. A prečo by ste vôbec chceli obrátiť naruby správanie, ktoré bolo vytvorené s cieľom dosiahnuť čo najvyššiu kvalitu? Pretože môžete... možno chcete dosiahnuť „umelecký“ výsledok... jednoducho máte tú možnosť.
A to je všetko! Predstavili sme všetky možnosti, ktoré toto prvé vydanie libdepixelize poskytuje. Ale ak autor libdepixelize a jeho kreatívny mentor uspejú v ďalšom výskume, budú k dispozícii aj ďalšie voľby, ktoré rozšíria aj množinu obrázkov, ktoré libdepixelize dokáže úspešne spracovať. Držte im palce.
Všetky obrázky použité v tomto dokumente boli prevzaté z Liberated Pixel Cup, aby sme predišli problémom s autorskými právami. Odkazy na ne sú:
http://opengameart.org/content/memento
http://opengameart.org/content/rpg-enemies-bathroom-tiles
Vinícius dos Santos Oliveira; Nicolas Dufour; Kris De Gussem; Gellért Gyuris
Esteban Capella — 2019