Garmin 3D Vehicle SRF Converter

Diskuze o software, který má mnoho společného s touto značkou (MapSource, BaseCamp, POI Loader, WebUpdater a ostatní).

Garmin 3D Vehicle SRF Converter

#1 Odeslatod Logman » 21.09.09 18:22 (Po)

Program: Garmin 3D SRF Converter

Popis: Program pro konverzi SRF souborů (3D Vehicle) do PNG, BMP, TIF a zpět.

Verze: 0.1

Autor: logman@path.cz

Poznámka:
Tento konvertor je určen výhradně pro konverzi formátu 3D ikon a nelze jej využít pro tvorbu demonstračních animací. Před použitím si přečtěte podrobnější informace (níže)

Download:
Garmin_3D_SRF_Converter_v0.1.rar
(390.56 KB) staženo 1623 krát

Historie:

v0.1 (21.9.2009)
===============
  • první verze

Obrázek Obrázek Obrázek


Základní informace o formátu SRF

Souborový formát SRF je vlastní nekompresní formát společnosti Garmin, který využívá ve vlastních navigačních přístrojích. Je určen pro definici obrazových dat, zejména 3D ikon (3D vehicle), demonstračních obrazovek, resp. prezentačních animací a dalších utilit. Garmin ve svých přístrojích využívá pouze (dnes ještě stále dostatečnou) 16bitovou barevnou hloubku a každý pixel je tak prezentován 2 bajty pro složku RGB a jedním bajtem pro Alfa kanál (transparentní zobrazení). Díky tomu, že Garmin v tomto formátu nevyužívá žádnou kompresi je zřejmé, že hlavní nevýhodou SRF formátu je velký datový objem. Další nevýhodou je uzavřenost formátu - formát není dokumentován.

Původně se očekávalo zveřejnění nástroje, který koncovým uživatelům umožní výrobu vlastních 3D ikon. Nikdy k tomu však nedošlo a dlouho jediným a neoficiálním online nástrojem pro obousměrnou konverzi byl web http://www.techmods.net/nuvi/.


Princip zobrazení 3D Vehicle

Animovaná 3D ikona, kterou jistě dobře znáte z mapové stránky se skládá z 36 statických obrázků, resp. pro každých 10° jeden obrázek (10° x 36 = 360°). SRF soubor tedy obsahuje 36 obrázků o rozměru a x a určených pro zobrazení ve 3D a 36 obrázků o rozměru b x b pro zobrazení ve 2D. Firmware přístroje se stará o rychlé překreslování těchto statických obrázků, čímž vzniká samotná animace. Barva, která se nemá zobrazovat jsou vymaskována použitím alfa kanálu.

Standardně Garmin pro barvu pozadí všech obrázků používá černou (black), na kterou aplikuje masku v rozsahu od 0 do 128 (alfa max = průhledná barva, alfa min = žádná maska/plná barva). Díky tomu není u ikon vidět oblast čtverce, ale pouze samotný objekt.


Garmin 3D Vehicle SRF Converter

Tento nástroj umožňuje podobně jako www.techmods.net/nuvi konverzi SRF do formátu PNG s podporou alfa kanálu ARGB (0xAARRGGBB) a zpět s tím rozdílem, že pracuje zvlášť s 3D a 2D sekcemi. Protože se uživatelé často trápí s definicí alfa kanálu, přidal jsem možnost exportu a importu PNG, BMP, TIF a JPG bez alfa kanálu, který se následně vypočítá na základě prvního pixelu. Jedná se ale spíše o experiment, který je potřeba vyzkoušet.

Obrázek je primárně exportován v celé sekci, tedy např. pro 3D zobrazení se při definici rozměru 80 x 80 px na jedno zobrazení exportuje bitmapa o rozměru 2880 x 80 px (šířka 80 px * 36). Pozor, Garmin u drtivé většiny přidává 1 px pro vlastní potřebu a rozměr může být i 2881 x 80 px.

Pokud se někomu nepracuje s takto velkým rozměrem pohodlně, může si vytvořit jednotlivé obrázky (36 ks) a pak je spojit pomocí funkce Merge.

Dále je zde nástroj, který umožní nahrazení barvy. Je tedy možné nahradit barvu 0xRRGGBB barvou vlastní se zachováním původní masky (pokud existuje).

Pro konverzi je v programu využito GDI+, které není hardwarově akcelerováno. Širší možnosti programu jsou tedy vykoupeny vyšším časem konverze.
Obrázek uživatele
Logman
Moderátor
 
Příspěvků: 54
Registrace: 16.05.07 1:27 (St)

Re: Garmin 3D Vehicle SRF Converter

#2 Odeslatod natalek » 23.09.09 20:12 (St)

Chvíli jsem se s tím potýkal. Chvíli jsem myslel, že si "vyrobím" vlastní vozítko - pak jsem to vzdal. 36 obrázků je dost. Pak jsem zkoušel změnit alespoň barvu auta, ani to však nedokážu. Umím změnit pozadí, to se mi ale v navi nijak neprojevilo. Dělám něco špatně.
Garmin nüvi 670 FM, Atlas CZ 8NT, Topo CZ 3, Adresy CR v1, CNENT2010.10 Central & East
natalek
 
Příspěvků: 36
Registrace: 06.04.09 22:23 (Po)

Re: Garmin 3D Vehicle SRF Converter

#3 Odeslatod Path » 24.09.09 0:20 (Čt)

Co myslíte tou změnou pozadí, která se neprojevila? Pozadí by se nemělo zobrazit nikdy.

Výroba vlastní ikony samozřejmě pracná je. Ze začátku se nemusíte pouštět do profesionálních 3D ikon, zkuste si třeba nějaký jednodušší tvar, například pouze pro 2D zobrazení (něco ve smyslu této ikony nebo této určené pro geocaching).

Další příklad triviálního symbolu:
Obrázek
Obrázek

Několik zajímavých 3D ikon vytvořených uživateli můžete najít i zde: http://www.gpspassion.com/forumsen/topi ... C_ID=78125
Obrázek uživatele
Path
Site Admin
 
Příspěvků: 3406
Registrace: 15.05.07 23:15 (Út)

Re: Garmin 3D Vehicle SRF Converter

#4 Odeslatod natalek » 24.09.09 7:31 (Čt)

Díky za zajímavé odkazy. V SRF converteru volba změny pozadí existuje - při převodu na IMG - je to tedy pomocný nástroj pro "vypíchnutí" samotné ikony?
Garmin nüvi 670 FM, Atlas CZ 8NT, Topo CZ 3, Adresy CR v1, CNENT2010.10 Central & East
natalek
 
Příspěvků: 36
Registrace: 06.04.09 22:23 (Po)

Re: Garmin 3D Vehicle SRF Converter

#5 Odeslatod Path » 24.09.09 15:42 (Čt)

Zkusím vysvětlit, k čemu by to mohlo být dobré...

Ve své podstatě konverzi ze srf do některého z možných grafických formátů nepotřebujete, pokud nechcete využít některou ze stávajících ikon. Pokud ji ale využít chcete, pak máte dvě možnosti. První je konverze do png s alfa kanálem, kde je na černou barvu (kterou Garmin využívá jako barvu pozadí) je použita maska. Maska není nikdy buďto 0 nebo 255. Zvláště v partiích kde je stín, tato hodnota hodně kolísá. S úpravou masky mají ale uživatelé největší problémy (viz diskuze na www.gpspassion.com) a proto program nabízí druhou možnost, resp. konverzi SRF do některého s grafických formátů bez masky, kde si můžete zvolit barvu pozadí.

Ale pozor, pokud chceme masku při konverzi zrušit a pozadí nahradit vlastní barvou, musíme s maskou něco provést. Nelze masku jen tak zrušit a natvrdo nastavit vlastní definovanou barvu pozadí - výsledek by byl naprosto otřesný. Takže jak to funguje:
  1. U každého pixelu se zjistí hodnota alfa kanálu (masky).
  2. Pokud je maska nulová je použita původní barva (pouze se přepočítá RGB ze 16 bit do 32 bit)
  3. Pokud maska nabývá na nějaké hodnotě, že původní barva rozložena z RGB do HSL (Hue/Saturation/lightness, chcete-li Odstín/Sytost/Světelnost) a algoritmem se tyto hodnoty nastaví tak, aby se základ nové barvy co nejvíce přiblížil hodnotě RGB barvy definované uživatelem (viz obrázek níže)

Obrázek


Obrázek

Sice jsme se elegantně zbavili masky a můžeme s obrázkem pracovat naprosto beztrestně v jakémkoli jednoduchém grafickém editoru, ale vznikl nám problém jiný.

Co udělá konvertor, pokud bez jakýchkoli úprav stejný obrázek zkonvertujeme do SRF s tím, že první pixel je barvou pozadí?
  1. Zjistí RGB barvu prvního pixelu a rozloží ji do HSL.
  2. Každý další pixel rozloží do HSL a hodnoty vzájemně porovná.
  3. Pokud se hodnoty shodují, nastaví u pixelu masku na základě hodnoty světelnosti (je to trochu složitější)

Pokud se podíváte zpět na obrázek šipky, je jasné, že tento proces bude trochu skřípat, protože každý pixel, který představuje stín je v podstatě jiná barva. Od toho je tam možnost zadat toleranci odstínu (zadáním 10 se hledá barva HSL, kde odstín je odstínem definovaného pozadí plus mínus tolerance). Pokud v tomto případě zadáte malou hodnotu tolerance, bude mít výsledná ikona viditelné nafialovělé okraje. Pokud naopak toleranci dáte příliš vysokou, mohou se vám vymaskovat pixely přímo z objektu (šipky) a v animaci uvidíte průhledné partie.

Jaká je tedy nejlepší cesta?

Ideální je vytvořit vlastní obrázek, který důkladně vymaskujete. Jak už jsem zmiňoval, je pro některé uživatele práce s maskou celkem obtížný proces a obvykle jim dojde trpělivost.

A právě pokud máte tyto problémy, vytvoříte si obrázek (bez masky) s vlastní barvou pozadím, kterou se vám konvertor pokusí vymaskovat sám.

Udělejte pár pokusů např. konverzí originálních ikon a problematiku za chvilku pochopíte sám. Snad se mi to podařilo vysvětlit srozumitelně. Pokud ne, zeptejte se.
Obrázek uživatele
Path
Site Admin
 
Příspěvků: 3406
Registrace: 15.05.07 23:15 (Út)

Re: Garmin 3D Vehicle SRF Converter

#6 Odeslatod natalek » 24.09.09 19:28 (Čt)

Klobouk dolů za tak obsáhlé objasnění problematiky. Přes víkend na chajdě to zkusím vstřebat - pak se uvidíObrázek ( nebo taky ne Obrázek )........
Garmin nüvi 670 FM, Atlas CZ 8NT, Topo CZ 3, Adresy CR v1, CNENT2010.10 Central & East
natalek
 
Příspěvků: 36
Registrace: 06.04.09 22:23 (Po)


Zpět na Garmin: Software

Kdo je online

Online uživatelé v tomto fóru: žádný registrovaný a 1 návštěvník.