české vysoké učení technické v praze fakulta elektrotechnická
Transkript
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA ELEKTROTECHNICKÁ BAKALÁŘSKÁ PRÁCE 3D GRAFICKÉ UŽIVATELSKÉ ROZHRANÍ TOMÁŠ POSPÍCHAL Vedoucí práce: Ing. Miroslav Uller Studijní program: Elektrotechnika a informatika, strukturovaný bakalářský Obor: Kybernetika a měření duben 2010 ii PODĚKOVÁNÍ Rád bych poděkoval vedoucímu mé bakalářské práce Ing. Miroslavu Ullerovi za poskytnuté konzultace a náměty, které mi pomohly při vytváření práce. iii iv PROHLÁŠENÍ Prohlašuji, že jsem svou bakalářskou práci vypracoval samostatně a použil jsem pouze podklady (literaturu, projekty, SW atd.)uvedené v přiloženém seznamu. V Praze dne 24. 5. 2010 ............................................................. v ABSTRAKT Práce implementuje 3D průzkumníka souborů, jako studii pro budoucí ale i současné 3D zobrazovací systémy. Práce se nejdříve zabývá návrhem, jak by 3D průzkumník souborů měl vypadat, jaké by měl mít vlastnosti a následně tyto vlastnosti implementuje. Ke konci práce je zpracováno vyhodnocení zkušeností uživatelů s tímto programem na základě vyplněných dotazníků. ABSTRACT This work implements a 3D file explorer as a study of future and also current 3D imaging systems. Firstly, the work deals with how a 3D file explorer should look like, what properties it should have, and then it focuses on the implementation of those features. In the final part of the work, users' experience with this program is analyzed on the basis of completed questionnaires. vi vii OBSAH 1 2 3 Úvod ...................................................................................................................................................... 1 1.1 Motivace ..................................................................................................................................... 1 1.2 Cíl .................................................................................................................................................. 1 Analýza podobných projektů ...................................................................................................... 2 2.1 File System Visualizer ........................................................................................................... 2 2.2 Jemfis 3D filemanager ........................................................................................................... 3 2.3 Innolab 3D File Manager ...................................................................................................... 3 Analýza projektu .............................................................................................................................. 4 3.1 3D prostředí a jeho specifické vlastnosti ...................................................................... 4 3.1.1 Scéna ....................................................................................................................................... 4 3.1.2 Vertex ...................................................................................................................................... 5 3.1.3 Kamera ................................................................................................................................... 6 3.2 Uživatelské rozhraní.............................................................................................................. 7 3.2.1 Specifické prvky uživatelského rozhraní pro průzkumníka souborů............ 7 3.2.2 Zobrazení stromové struktury ...................................................................................... 7 3.2.3 Procházení stromovou strukturou .............................................................................. 9 3.2.4 Zobrazování jmen souborů a adresářů ...................................................................... 9 3.2.5 Ovládání pomocí myši a klávesnice.......................................................................... 10 3.3 Optimalizace uživatelského rozhraní .......................................................................... 11 3.4 Výběr vývojové platformy ................................................................................................ 12 3.4.1 Představení Microsoft XNA Framework................................................................. 12 3.4.2 XNA programové prostředí ......................................................................................... 13 3.4.2.1 Popis herní smyčky ....................................................................................................... 13 3.4.2.2 XNA Game Component ................................................................................................ 14 3.4.2.3 XNA Content pipeline ................................................................................................... 14 4 Implementace ................................................................................................................................ 15 4.1 Načtení datového stromu ................................................................................................. 15 4.1.1 Třída Node ......................................................................................................................... 15 4.1.2 Třída TreeDataProvider ............................................................................................... 16 4.1.3 Třída FileSystemDataProvider................................................................................... 16 viii 4.2 Tvorba základních grafických prvků............................................................................ 17 4.2.1 Válec ..................................................................................................................................... 18 4.2.2 Kvádr .................................................................................................................................... 18 4.2.3 Optimalizace ...................................................................................................................... 19 4.3 Tvorba stromu ...................................................................................................................... 20 4.3.1 Třída GraphicalNode ...................................................................................................... 20 4.3.2 Metodika tvorby stromu ............................................................................................... 21 4.3.2.1 Výpočet váhy obsahu větví ........................................................................................ 21 4.3.2.2 Výpočet poloměru větví .............................................................................................. 22 4.3.2.3 Nastavení základní velikosti Bounding boxů ...................................................... 22 4.3.2.4 Rotace větví...................................................................................................................... 23 4.3.2.5 Translace větví................................................................................................................ 23 4.4 Zobrazení souborů .............................................................................................................. 25 4.5 Ovládání .................................................................................................................................. 26 4.5.1 Ovládání myší ................................................................................................................... 26 4.5.2 Ovládání klávesnicí ......................................................................................................... 26 4.6 5 Popisky .................................................................................................................................... 27 Uživatelský manuál...................................................................................................................... 29 5.1 Instalace .................................................................................................................................. 29 5.2 Ovládání .................................................................................................................................. 29 5.3 Nastavení ................................................................................................................................ 30 5.3.1 Karta Program settings ................................................................................................. 30 5.3.2 Karta Content rating settings...................................................................................... 31 5.3.3 Nastavení barev ............................................................................................................... 32 5.3.4 Další nastavení pomocí editace XML souborů ..................................................... 32 5.3.4.1 texturesDef.xml .............................................................................................................. 32 5.3.4.2 parameters.xml .............................................................................................................. 33 6 Vyhodnocení uživatelských zkušeností ............................................................................... 35 6.1 Stabilita a plynulost programu ....................................................................................... 35 6.2 Vizualizace adresářové struktury ................................................................................. 36 6.3 Ovládání programu ............................................................................................................. 37 6.4 Hodnocení obsahu adresářů ........................................................................................... 38 ix 7 6.5 Smysl programu ................................................................................................................... 39 6.6 Navrhovaná vylepšení programu a závěrečné hodnocení .................................. 40 Závěr .................................................................................................................................................. 41 7.1 Implementace ....................................................................................................................... 41 7.2 Testování uživateli .............................................................................................................. 41 7.3 Budoucí práce na projektu ............................................................................................... 41 A. Literatura a reference ............................................................................................................ 42 B. Obsah přiloženého CD ............................................................................................................ 43 x SEZNAM OBRÁZKŮ Obrázek 1 - FSV (File System Visualizer) [4] ................................................................................ 2 Obrázek 2 - Jemfis 3D filemanager [5] ............................................................................................ 3 Obrázek 3 - Innolab 3D File Manager [6] ....................................................................................... 3 Obrázek 4 - Souřadnicový kříž ........................................................................................................... 4 Obrázek 5 - Trojúhelník tvořený třemi vertexy .......................................................................... 5 Obrázek 6 - Složitější objekt tvořený z trojúhelníků ................................................................. 5 Obrázek 7 - RGB trojúhelník ............................................................................................................... 6 Obrázek 8 - Pohledový jehlan, rovina Near určuje nejbližší viditelný................................ 6 Obrázek 9 - Směrové vektory kamery [2]...................................................................................... 7 Obrázek 10 - První koncept................................................................................................................. 8 Obrázek 11 - Adresní řádek ................................................................................................................ 9 Obrázek 12 - a) plynulý přechod mezi adresáři b) větev zůstává na svém místě.......... 9 Obrázek 13 - Seskupování souborů stejných typů .................................................................. 11 Obrázek 14 - Hodnocení obsahu adresářů ................................................................................. 12 Obrázek 15 - Základní herní okno ................................................................................................. 13 Obrázek 16 - Průběh herní smyčky [2] ........................................................................................ 14 Obrázek 17 - Načítání souborového systému ........................................................................... 17 Obrázek 18 - Znázornění sítě válce ............................................................................................... 18 Obrázek 19 - Znázornění sítě kvádru ........................................................................................... 19 Obrázek 20 - Zobrazení síťové struktury stromu.................................................................... 20 Obrázek 21 - Stav listu a větve po výpočtu poloměrů ........................................................... 22 Obrázek 22 - Stav listu a větve po nastavení Bounding boxů ............................................. 22 Obrázek 23 - Natočení větví ............................................................................................................. 23 Obrázek 25 - Výsledný strom se zobrazenými Bounding boxy .......................................... 24 Obrázek 24 - Postup srovnávání stromu .................................................................................... 24 Obrázek 26 - Zobrazení souborů na válci ................................................................................... 25 Obrázek 27 - Popisky u adresářů s vysokou váhou ................................................................ 27 Obrázek 28 - Zobrazení popisku po najetí kurzorem ............................................................ 28 Obrázek 29 - Zobrazení popisku při ovládání klávesnicí ..................................................... 28 Obrázek 30 - Karta s nastavením programu .............................................................................. 30 Obrázek 31 - Karta s nastavením váhy souborů ...................................................................... 31 xi Obrázek 32 - Textový dokument s nastavením váhy souborů ........................................... 31 Obrázek 33 - Formulář s nastavením barvy stromu............................................................... 32 Obrázek 34 - Schéma dělení textury a jejích souřadnic ........................................................ 33 Obrázek 35 - Graf s výsledky vyhodnocení stability a plynulosti programu ................ 35 Obrázek 36 - Graf s výsledky vyhodnocení vizualizace adresářové struktury ............ 36 Obrázek 37 - Graf s výsledky vyhodnocení ovládání programu ....................................... 37 Obrázek 38 - Graf s vyhodnocením funkce hodnocení obsahu adresářů ...................... 38 Obrázek 39 - Graf s výsledky vyhodnocení smyslu programu ........................................... 39 xii xiii 1 ÚVOD V této době je se můžeme setkat se vzrůstajícím trendem 3D zobrazování. Nejlépe je tento trend vidět na filmové a herní produkci a s tím související vývoj v zobrazovací technice jako jsou například 3D televize, 3D monitory a další. Je jenom otázkou času než se změní náš pohled na počítač jako na stroj s monitorem, klávesnicí a myší v pohled na centrum domácí zábavy s dotykovým ovládáním, kde jako zobrazovací systém bude sloužit 3D obrazovka. 1.1 MOTIVACE Je možné, že se v budoucnu setkáme s uživatelským rozhraním, které bude kompletně zpracované ve 3D a připravené pro ovládání pouhým pohybem rukou. Právě tato vize budoucnosti mě přivedla k tomu, abych se zamyslel a vytvořil důležitou součást operačního systému plně ve 3D a tou je průzkumník souborů. 1.2 CÍL Cílem práce je navrhnout a implementovat řešení průzkumníka souborů ve 3D tak, aby co nejefektivněji umožňoval základní operace, jako je procházení stromové struktury a otevírání souborů. Protože je na práci nahlíženo jako na studii, součástí práce je vyhodnocení zkušeností uživatelů s programem na základě dotazníku. 1 2 ANALÝZA PODOBNÝCH PROJEKTŮ Jeden z důvodů proč jsem si vybral zrovna toto téma bakalářské práce je fakt, že do dnešní doby žádný plně využitelný systém pro procházení souborů ve 3D neexistuje. Na internetu se dá najít pár zajímavých konceptů, nicméně buďto nevyužívají plně 3D prostor nebo jsou značně nepřehledné. 2.1 FILE SYSTEM VISUALIZER První a asi nejznámější projekt je práce FSV (File System Visualizer) [4]. Bohužel, tento projekt přestal být vyvíjen v roce 1999. Projekt je kombinací 2D a 3D zobrazení, kde soubory jsou zobrazeny žlutou a adresáře šedou barvou. Právě 2D zobrazení jsem se chtěl ve své práci vyhnout. Obrázek 1 - FSV (File System Visualizer) [4] 2 2.2 JEMFIS 3D FILEMANAGER Jemfis 3D filemanager [5] je už plně ve 3D, ale naráží na největší překážku při zobrazování stromových struktur ve 3D, kterou je nepřehlednost. Obrázek 2 - Jemfis 3D filemanager [5] 2.3 INNOLAB 3D FILE MANAGER Innolab 3D File Manager [6] vyhrál v roce 2003 NSF Science & Engineering Visualization Challenge. Program trpí také velkou nepřehledností. Mimo jiné umí zobrazovat jakékoliv jiné stromové struktury. Obrázek 3 - Innolab 3D File Manager [6] 3 3 ANALÝZA PROJEKTU 3.1 3D PROSTŘEDÍ A JEHO SPECIFICKÉ VLASTNOSTI Stejně tak jako 2D aplikace má své základní stavební prvky (formuláře, tabulky, tlačítka atd.), i aplikace ve 3D má několik elementů, díky kterým můžeme popsat výsledné 3D prostředí. Abychom mohli popisovat prostředí, potřebujeme znát význam následujících pojmů: • scéna • vertex • kamera 3.1.1 SCÉNA 3D prostor je definovaný souřadným systémem se souřadnicemi X, Y, Z Obr. 4. Pokud do prostoru zahrneme i objekty, které se vněm nachází, vytvoříme scénu. Ve scéně je poloha každého objektu definována souřadnicemi X, Y, Z. Na scénu nahlížíme pomocí kamery. Obrázek 4 - Souřadnicový kříž 4 3.1.2 VERTEX Každý objekt ve scéně je sestaven z vertexů. Vertex je bezrozměrný prvek scény, který má svojí polohu danou bodem o souřadnicích [X, Y, Z] a několik dalších vlastností jako jsou například barva a souřadnice textury. Vertex odpovídá vrcholu popisovaného objektu. Chceme-li objekt zobrazit, musíme nejdříve popsat jeho povrch jako soubor základních mnohoúhelníků (používají se trojúhelníky či čtyřúhelníky) a ty definovat pomoci jejich vrcholu. K popisu nejjednoduššího plošného útvaru, což je trojúhelník, potřebujeme právě tři vertexy. Obrázek 5 - Trojúhelník tvořený třemi vertexy Trojúhelník je základní objekt, se kterým pracují grafické karty. Všechny komplexnější objekty bývají vytvořeny sadou trojúhelníků. Obrázek 6 - Složitější objekt tvořený z trojúhelníků 5 Pokud má každý vertex nastavenou barvu, výsledná barevnost trojúhelníku je většinou dána lineární interpolací barev ve vrcholech trojúhelníku. Obrázek 7 - RGB trojúhelník 3.1.3 KAMERA Na objekty ve scéně nahlížíme pomocí kamery. Kamera má několik základních vlastností, které určují, jakou část scény uvidíme. Mezi tyto vlastnosti patří: • Vektor polohy (position vector) - specifikuje polohu kamery ve scéně • Vektor směru (direction vector) - specifikuje směr, kterým se kamera dívá • Up vektor (up vector) - specifikuje natočení kamery • Pohledový jehlan - vymezuje prostor, který je vidět pomocí kamery Obrázek 8 - Pohledový jehlan, rovina Near určuje nejbližší viditelný objekt a rovina Far nejvzdálenější viditelný objekt [2] 6 Obrázek 9 - Směrové vektory kamery [2] 3.2 UŽIVATELSKÉ ROZHRANÍ Jednou z nejdůležitějších částí programu je uživatelské rozhraní. Pokud pracujeme s dvojrozměrným prostorem, tak vytvoření uživatelského rozhraní není zas až tak náročné. Při tvorbě programu se pracuje se stále stejnými prvky, jako jsou tlačítka, dialogová okna, menu a další. Při návrhu musíme řešit pozice prvků tak, aby uživatel měl nejčastěji používané funkce vždy na dosah a aby celé uživatelské prostředí bylo co nejvíce přehledné a jednoduché. Jiná situace nastává, pokud navrhujeme uživatelské prostředí ve 3D. Požadavky zůstávají stále stejné. Od uživatelského prostředí vyžadujeme rychlou odezvu, přehlednost a jednoduchost. Nicméně, třetí rozměr vnáší do této problematiky mnoho nových problémů, které musíme řešit. Mezi ty nejzávažnější patří přizpůsobení ovládání programu třetímu rozměru a využití třetího rozměru způsobem, který nebude celé uživatelské rozhraní znepřehledňovat. 3.2.1 SPECIFICKÉ PRVKY UŽIVATELSKÉHO ROZHRANÍ PRO PRŮZKUMNÍKA SOUBORŮ • Zobrazení adresářové stromové struktury • Procházení stromovou strukturou • Zobrazování jmen souborů a adresářů • Ovládání pomocí myši a klávesnice 3.2.2 ZOBRAZENÍ STROMOVÉ STRUKTURY Pokud se podíváme na souborový systém v jakémkoliv počítači, zjistíme, že se jedná o mimořádně spletitou síť adresářů, kde každý adresář může mít prakticky neomezeně 7 souborů a dalších podadresářů. Tento fakt pro nás ve 2D znamená pouze to, že se zaplněný adresář bude načítat o trochu déle, ale ve 3D, kde chceme zobrazovat více, než jednu úroveň adresářové struktury najednou jde o největší problém, který je potřeba řešit, protože při velkém počtu souborů nebo adresářů se nevhodně zvolené zobrazení může stát značně nepřehledné. Pokud se podíváme na návrhy podobných projektů, systém souborů byl často zobrazován jako kruh adresářů, v jehož středu je rodičovský adresář. Tento koncept nenaplnil mojí představu o 3D, protože i když jsou objekty zobrazeny ve 3D, adresářová struktura se šíří vždy v nějaké rovině - ať už je jedna, nebo je těchto rovin několik pod sebou. Ve své práci jsem se vydal jinou cestou a inspirací pro zobrazení adresářové struktury mi byl obyčejný strom. Při zavedené analogii, kde adresář představuje větev a soubor list, jsem vytvořil první koncept. Obrázek 10 - První koncept Kořenový adresář je hlavní větev, ze které “vyrůstají“ podadresáře. Každý podadresář je otočen o 90 stupňů vůči předchozímu. Kolem větví jsou obtočené soubory. Tento koncept až na zobrazení souborů a pár optimalizací zůstal zachován. 8 3.2.3 PROCHÁZENÍ STROMOVOU STRUKTUROU Procházení adresářové stromové struktury je nejzákladnější funkce, kterou musí každý průzkumník nabídnout a velice úzce souvisí se zobrazením. Většina průzkumníků má adresní řádek,, kde se bude zobrazovat aktuální aktuální cesta a také bude možné pomocí tohoto řádku cestu zadávat. Obrázek 11 - Adresní řádek Ve 3D prostoru se můžeme velice snadno ztratit, ztratit proto je při návrhu aplikace nutné dbát na to, aby uživatel po celou dobu práce s programem amem věděl, kde se aktuálně nachází. Proto je nutné zachovat určitou stálost zobrazení. Pokud uživatel otevře adresář (klikne na jednu z větví), musí se načtení nové větve provést buď tak, aby se nově otevřená větev plynule zobrazila na místě té původní, nebo n aby zůstala na svém místě a pouze se rozvinula o další adresáře. Obrázek 12 - a) plynulý přechod mezi adresáři b) větev zůstává na svém místě 3.2.4 ZOBRAZOVÁNÍ JMEN SOUBORŮ SOUB A ADRESÁŘŮ Neméně důležitou součástí průzkumníka souborů souborů je zobrazování názvů jednotlivých souborů a složek. Vzhledem k tomu, že veškerý text je ve 3D zobrazován jako 2D text, který je svázaný s bodem ve scéně, scéně musíme u textu dodržovat některá základní pravidla, pravidla aby byl dostatečně přehledný. 9 • Text by se měl zmenšovat, pokud se kamera bude vzdalovat od bodu umístění textu. Tento efekt zapříčiní, že text bude vypadat, jako kdyby byl opravdu přichycen k bodu přímo ve scéně a ne jenom vykreslený na „ploše monitoru“. • Při určité vzdálenosti kamery od textu by text měl zcela zmizet, jinak bude na scéně moc popisků a sníží se přehlednost. • Text musí být až do svého zmizení čitelný, jinak opět snižuje přehlednost scény. • Text musí být dostatečně kontrastní, nejlépe podložený barevným podkladem. 3.2.5 OVLÁDÁNÍ POMOCÍ MYŠI A KLÁVESNICE V klasickém průzkumníku souborů se pro vyhledávání souborů a adresářů používá jak klávesnice, tak i myš. Program je většinou tvořen tak, že si můžeme vybrat, jestli chceme používat pouze klávesnici, nebo kombinaci myši a klávesnice. Tento standard je dobré dodržovat i u programů s 3D uživatelským rozhraním. U průzkumníka souborů ve 3D musíme zajistit, aby ovládání mělo tyto vlastnosti: • Uživatel musí být schopen vybrat jakýkoliv soubor nebo adresář. • Kamera musí být plně polohovatelná (natáčení a posun do stran) • Při ovládání klávesnicí minimalizovat počet použitých kláves. Při kombinovaném ovládání pomocí myši a klávesnice je nejlepší použít léty zavedený model ovládání z počítačových her, konkrétně ze strategického žánru, kde je potřeba vybírat bojové jednotky v našem případě adresáře nebo soubory a zároveň se pomocí pohybu kamery přesouvat po bitevním poli. Pro pohyb v prostoru (přibližování, oddalování a rolování kamery do stran) je nejlepší použít kurzorové klávesy nebo kombinaci kláves W, S, A, D. Pokud chceme kameru volně natáčet podle pohybu myši, musíme mít stisknuté některé tlačítko (většinou kolečko na myši) abychom oddělili pohyb myši v případě, že chceme vybrat nějaký adresář. Při ovládání jen s pomocí klávesnice nám situaci značně ztěžuje fakt, že práce s kamerou je bez použití myši velice obtížná a případného uživatele by velice frustrovala, proto je nejlepší natáčení kamery automatizovat tak, aby nově otevřený adresář zaujal vždy výchozí pozici. K tomu použijeme metodu pro plynulý přechod mezi adresáři, která je popsána na Obr. 6. 10 3.3 OPTIMALIZACE UŽIVATELSKÉHO ROZHRANÍ Vzhledem k tomu že, struktura souborů je opravdu velice složitá, je dobré co nejvíce zoptimalizovat zobrazení adresářového stromu. Pokud se podíváme na Obr. 4, tak vidíme, že vyznat se v takovéto struktuře by bylo velice složité. Největší problém, kterým se musíme zabývat, je velké množství souborů v jednom adresáři. Pokud má uživatel v jedné složce například tisíc fotek, tak by větev s takovýmto obsahem byla neúměrně dlouhá a celý strom by nebyl dostatečně kompaktní. Z tohoto důvodu je lepší třídit soubory podle jejich datového typu, takže z tisíce fotek by se stala jediná položka (list). list (soubor) 1.jpg 2.jpg 3.jpg a.exe b.exe větev (adresář) .jpg .exe Obrázek 13 - Seskupování souborů stejných typů Další věc, která stojí za pozornost, je poměr celkového počtu souborů v počítači a souborů, které mají pro uživatele nějaký konkrétní význam. Pokud se podívám na svůj počítač, disk C:\ obsahuje cca 400000 souborů a z tohoto počtu je pro mě důležitých zhruba 1000. Z tohoto důvodu by se hodilo nepoužívané soubory filtrovat, nebo spíše hodně využívané soubory více zvýraznit. Pokud chceme identifikovat soubory, které jsou nejčastěji používané, lze to udělat minimálně dvěma způsoby. Buď spočítáme, kolikrát uživatel daný soubor otevřel a na základě této statistiky upřednostníme nejvíce otevírané soubory, nebo upřednostníme soubory daného typu. Upřednostňované typy souborů si samozřejmě uživatel bude moci nastavit. Druhá možnost je podle mého názoru lepší, protože pokud se rozhodneme jednou za rok ukázat známému fotky z dovolené, nebudeme je muset složitě hledat. 11 Adresář se soubory s největší váhou zvýrazníme tím, že příslušnou větev zvětšíme a zároveň jí přiřadíme kontrastnější barvu. vysoká váha nižší váha .jpg nejnižší váha .dll .avi .avi .doc . .doc . Obrázek 14 - Hodnocení obsahu adresářů 3.4 VÝBĚR VÝVOJOVÉ PLATFORMY Hlavním požadavkem na výběr vývojové platformy byla jednoduchá a rychlá práce s kódem a zároveň velký rozsah funkcí. Tento požadavek ideálně splňuje platforma Microsoft .NET, konkrétně v jazyce C#. Pokud chceme programovat 3D aplikace, máme v prostředí .NET na výběr ze dvou možností. První možností je programování pod Managed DirectX. Managed DirectX nabízí kompletní funkce grafické technologie DirectX pod .NET, nicméně vývoj se zastavil na verzi DirectX 9. Druhou a v dnešní době velice moderní možností je Microsoft XNA Framework, který je plnohodnotnou náhradou za Managed DirectX. 3.4.1 PŘEDSTAVENÍ MICROSOFT XNA FRAMEWORK Microsoft XNA Framework byl poprvé představen v roce 2006 jako platforma pro vývoj her na Xbox 360, Microsoft Zune a Microsoft Windows. XNA Framework je implementací .NET Framework 2.0 pro Windows se sadou knihoven, které jsou zapotřebí pro vývoj her. Prostředí je dostupné pro Windows XP, Windows Vista, Windows7 a Xbox 360. Výhodou tohoto prostředí je, že program vytvořený v XNA lze jen s malými modifikacemi spustit na všech podporovaných platformách. Pro programování v XNA se používá Microsoft Game Studio Express, nebo pouze Game studio, které se nainstaluje jako součást Microsoft Visual Studia. Pokud chceme začít programovat v XNA, je to velice jednoduché, protože toto prostředí zastřešuje všechny technologické detaily, které jsou potřebné pro vývoj her tak, 12 aby se uživatel mohl více věnovat přípravě herního obsahu a nemusel se zabývat technologií vývoje her. Pro implementaci této práce bylo použito Microsoft Visual Studio 2008 a XNA Game Studio 3.1. 3.4.2 XNA PROGRAMOVÉ PROSTŘEDÍ Začít programovat v XNA je velice jednoduché, hned po vytvoření projektu a jeho zkompilování má uživatel k dispozici základní herní okno, na kterém v pozadí běží tzv. herní smyčka. Projekt obsahuje dvě základní třídy Program.cs a Game1.cs. Program.cs je vstupní bod programu a Game1.cs implementuje samotnou herní smyčku. Obrázek 15 - Základní herní okno 3.4.2.1 POPIS HERNÍ SMYČKY Herní smyčka je základem celé hry a má na starost aktualizaci a inicializaci proměnných, načítání obsahu (textury, písma, zvuky, …), vykreslování hry a také její ukončení. Metody herní smyčky: protected protected protected protected protected override override override override override void void void void void Initialize(); LoadContent(); UnloadContent(); Update(GameTime gameTime); Draw(GameTime gameTime); Metoda Initialize je zavolána pouze jednou před startem herní smyčky a do této metody se píše inicializace používaných proměnných. 13 Metoda LoadContent je zavolána hned po metodě Initialize a v této metodě se do programu nahrává veškerý herní obsah od textur až po fonty používaných písem. Metodou Update začíná herní smyčka a právě v této metodě se dějí veškeré změny v programu. Pokud máme například obrázek, který má pozici horního levého rohu x=0,y=0 a v metodě Update budeme tyto proměnné inkrementovat (x++;y++) docílíme u obrázku pohybu po diagonále. Po metodě Update je většinou zavolána metoda Draw, která se stará o veškeré vykreslování ve hře. Metoda je volána šedesátkrát za sekundu což odpovídá 60 FPS. Pokud se metoda Update stihne provést rychleji než-li přijde řada na metodu Draw, tak je opětovně zavolána metoda Update, aby byl obsah ve hře co nejaktuálnější. Po ukončení programu se zavolá metoda UnloadContent, která uvolní paměť od načteného obsahu. Obrázek 16 - Průběh herní smyčky [2] 3.4.2.2 XNA GAME COMPONENT Pro rozsáhlejší projekty bychom si s jednou třídou Update a Draw nevystačili, proto XNA používá takzvané game komponenty - třídy, které mají vlastní přetížené metody herní smyčky. Tyto metody se spouští v závislosti na pořadí inicializace dané komponenty. Celý program pak funguje tak, že se nejdříve provedou Update metody a následně Draw metody všech komponent a hlavní třídy. 3.4.2.3 XNA CONTENT PIPELINE Velkou výhodou XNA je podpora mnoha typů souborů s herním obsahem (obrázky, zvuk, 3D modely, fonty, …). Pokud do projektové složky Content vložíme například obrázek, XNA pozná, že se jedná o obrázek a automaticky ho zkompiluje jako texturu, kterou můžeme ihned použít v programu. 14 4 IMPLEMENTACE 4.1 NAČTENÍ DATOVÉHO STROMU Tato práce je především 3D průzkumník souborů, nicméně díky objektovému programování a použití univerzálního interface je možné v tomto programu zobrazit jakoukoliv jinou stromovou strukturu, například XML dokument. Základním stavebním prvkem celého stromu je uzel, který má dva typy buďto je to koncový uzel, který nemá žádné další následovníky (soubor), nebo se jedná o vnitřní uzel (adresář). 4.1.1 TŘÍDA NODE Struktura uzlu je definována v třídě Node a od této třídy jsou odvozené třídy InnerNode (Vnitřní uzel) a LeafNode (koncový uzel). Třída node obsahuje tyto proměnné: //jméno uzlu např. C:/users/admin/desktop“ private string name //počáteční váha uzlu float weight = 1.0f //typ uzlu např. ‘jpg‘ string type //koncové jméno bez cesty např. desktop string shortname //popis uzlu string description Proměnné odvozené třídy InnerNode: //seznam následovníků List<Node> branch = new List<Node>(); Proměnné odvozené třídy LeafNode: //třída LeafNode nemá definované žádné další proměnné 15 4.1.2 TŘÍDA TREEDATAPROVIDER Třída TreeDataProvider je interface pro načítání stromových struktur jako je například systém souborů, nebo XML Popis metod: //funkce vrátí uzel, který se nachází na zadané cestě Node getNode(String path); //funkce vrátí seznam uzlů, jež jsou potomky uzlu na zadané cestě List<Node> getChildrenOfNode(String path); //funkce vrátí typ uzlu, který získá ze jména string GetType(string name); //funkce vrátí zkrácenou cestu k uzlu např. z C:/users/admin/desktop vrátí desktop a pokud je jméno moc dlouhé tak ho zkrátí a přidá … string GetShortName(string name); //funkce vrátí true pokud zadaná cesta existuje bool VerifyPath(string path); //funkce vrátí jméno, které není zkrácené pomocí teček například z FotkaZDo… FotkaZDovolene string GetNoDotsShortName(string name); //funkce vrátí jméno, uzlu na základě vloženého id string GetName(string id); //funkce vrátí popis, uzlu na základě vloženého id string GetDescription(string id); //funkce vrátí cestu rodičovského uzlu na základě potomkovi cesty string GetAncestorsPath(string path); //funkce vrátí váhu souboru v závislosti na jeho typu. Hodnocení je od 1 (minimum) do 2 (maximum) float GetWeight(string type); 4.1.3 TŘÍDA FILESYSTEMDATAPROVIDER Třída FileSystemDataProvider slouží k načítání souborového systému do stromu a využívá interface TreeDataProvider. Načítání probíhá tak, že se nejdříve načte pomocí funkce getNode kořenový adresář. Z kořenového adresáře se pomocí funkce getChildrenOfNode načtou jeho následovníci. U načtených následovníků se opět pomocí funkce getChildrenOfNode načtou jejich následovníci a tento cyklus probíhá až do uživatelsky přednastavené hloubky stromu. 16 Cyklus načítání stromové struktury zajišťuje třída TreeCreator Obrázek 17 - Načítání souborového systému 4.2 TVORBA ZÁKLADNÍCH GRAFICKÝCH PRVKŮ Celý strom je tvořen dvěma typy grafických primitiv. Větve jsou tvořené z válců a soubory nebo spíše skupiny souborů jsou tvořené z kvádrů. Všechny typy grafických primitiv jsou odvozené ze třídy Primitives. Každé grafické primitivum si uchovává ve své struktuře informace o souboru, nebo adresáři, který reprezentuje a také údaje potřebné pro jeho vykreslení jako je seznam vertexů, které ho tvoří a transformační matice. Metody třídy Primitives: //změní barvu primitiva podle zadané barvy public void ChangeColor(Color color) //vytvoří kolem primitiva imaginární kouli, která slouží k identifikaci kolizí. V tomto případě je získaný poloměr koule využit k automatickému náhledu kamery (určuje vzdálenost kamery od objektu) public void CreateBoudingSphere() //nahraje informace o vertexech do grafické karty public virtual void LoadBuffer() //vykreslí primitivum public virtual void Draw(BasicEffect effect, Camera camera, GraphicsDevice Device) 17 4.2.1 VÁLEC Válec reprezentuje adresář a má několik důležitých parametrů, které jsou zadávané do konstruktoru. Mezi ně patří: • poloměr • výška • počet stěn (udává počet stěn po obvodu válce) Velikost poloměru určuje hloubka stromu, ve které se daný adresář nachází a také vypočítaná váha adresáře. Výška je daná množstvím prostoru, který zabírají dceřiné větve. Při velkém počtu primitiv ve scéně můžou vzniknout problémy s plynulostí programu, proto je zaveden parametr faces (počet stěn), který významně redukuje množství vertexů ve scéně. Obrázek 18 - Znázornění sítě válce 4.2.2 KVÁDR Kvádr reprezentuje skupinu souborů stejného typu. Na rozdíl od válce má vlastní texturu, která je určena typem souborů. Rozměry kvádru jsou statické a mění se pouze měřítko, ve kterém je kvádr zobrazen. 18 Na rozdíl od válce není kvádr tvořen celistvou sítí vertexů, ale pouze jednotlivými stěnami. To je z toho důvodu, aby se na každou stěnu dala aplikovat jiná textura. Obrázek 19 - Znázornění sítě kvádru 4.2.3 OPTIMALIZACE Pokud načteme například adresář C:/ do páté úrovně, tak výsledný strom může mít až desetitisíce primitiv. Tím pádem vzniká jeden z největších problémů, které bylo potřeba vyřešit. Pokud by každý objekt byl vykreslen svou vlastní vykreslovací funkcí, tak by se za sekundu, při 60FPS, muselo provést i několik miliónů vykreslovacích funkcí. Takové číslo velice zatěžuje výkon počítače. Proto jsou ve třídě Primitives statické proměnné //seznam vertexů všech válců public static List<VertexPositionColorTexture> bigCylinderVertices //pole s indexy public static List<int> bigCylinderIndices //uchovává aktuální počet válců public static int cylinderPrimitivesCount //seznam vertexů všech kvádrů public static List<VertexPositionColorTexture> bigCubeVertices //pole s indexy public static List<int> bigCubeIndices //uchovává aktuální počet válců public static int cubePrimitivesCount Díky tomu, že se všechny objekty ve scéně spojí do dvou seznamů (jeden pro válce a jeden pro kvádry), tak na vykreslení celého stromu stačí zavolat pouze dvě Draw funkce. 19 Ze stromu se potom stávají dvě statické sítě vertexů. Obrázek 20 - Zobrazení síťové struktury stromu 4.3 TVORBA STROMU Zobrazit adresářový strom byl asi největší problém celé práce. Musíme totiž zaručit, že se větve stromu nebudou protínat. Abychom splnili tuto podmínku, je nutné stavět strom od nejmenších větví až po kmen, protože jenom tak získáme požadované informace o prostoru, který zaberou dceřiné větve. O výpočet polohy jednotlivých větví se stará třída CreateGraphicsTree, která pracuje s objekty typu GraphicalNode. 4.3.1 TŘÍDA GRAPHICALNODE GraphicalNode je objekt, který přebírá všechny vlastnosti objektu Node a přidává proměnné potřebné pro vykreslení primitiv a celého stromu. Nejdůležitější součástí objektu jsou parametry, které budeme dopočítávat: • Matice translace - prozatím jednotková matice, která bude udávat posunutí primitiva v prostoru • Matice rotace - prozatím jednotková matice, která bude udávat natočení v prostoru • Parametry jednotlivých primitiv - délka válce, poloměr válce, velikost hrany kvádru 20 • BoudingBox (ohraničující kvádr) - slouží k zarovnání větví, tak aby se neprotínaly. 4.3.2 METODIKA TVORBY STROMU Před vytvořením stromu máme hierarchickou strukturu uzlů typu GraphicalNode, která odpovídá struktuře souborů. Pokud se na tuto strukturu podíváme z grafické stránky, jde o uspořádaný soubor objektů typu válec a kvádr s nulovými hodnotami délek na výchozí pozici [0,0,0]. Informaci, kterou z těchto objektů můžeme získat, je jejich pozice (hloubka) ve stromové struktuře, počet větví a listů na rodičovské větvi. 4.3.2.1 VÝPOČET VÁHY OBSAHU VĚTVÍ Váha větví se počítá od nejspodnějšího patra stromu směrem ke kmeni. Každá větev má implicitní váhu rovnou jedné (minimum) a každý soubor má váhu určenou funkcí GetWeight při vytváření stromové struktury (od 1 do 2). Váha celé větve závisí samozřejmě na váze předchozích větví a také na počtu souborů v dané větvi. Výpočet váhy pro jednu větev v pseudokódu: 1. projdi všechny potomky typu list aktuální větve a sečti jejich váhu. 2. zjisti počet potomků typu list aktuální větve. 3. projdi všechny potomky typu větev aktuální větve a získej od nich celkovou váhu všech listů v podřízené hierarchii. 4. projdi všechny potomky typu větev dané větve a získej od nich celkový počet listů v podřízené hierarchii 5. celková váha = celková váha listů v aktuální větvi + váha získaná od podřízených větví 6. celkový počet listů = počet listů v aktuální větvi + počet listů získaný od podřízených větví // jsme v bodě, kdy jsme zjistili počet všech listů v aktuální větvi a její podřízené struktuře a zároveň jsme sečetli hodnocení všech listů 7. výsledná váha = celková váha/celkový počet listů 8. přejdi na další větev Váha větve se vždy pohybuje v rozmezí hodnot od 1 do 2. 21 4.3.2.2 VÝPOČET POLOMĚRU VĚTVÍ Poloměr větve závisí na hloubce větve ve stromové struktuře a na její váze. Podřízená větev nikdy nesmí mít větší poloměr než její nadřízená větev. Při výpočtu určíme maximální možnou hodnotu poloměru, která vyplývá z hodnoty nadřízené větve a minimální hodnotu, která je nastavená na 40% maximální hodnoty. Vzorec pro výpočet: ݉ܽ݉݅ݔá݈݊í ݈݉ě ݎ− ݉݅݊݅݉á݈݊í ݈݉ěݎ 100 ݉ܽ݉݅ݔá݈݊í ݒáℎܽ ݊݀݁ݏݑݏíܿℎ ݒěݒݐí − ݉݅݊݅݉á݈݊í ݒáℎܽ ݊݀݁ݏݑݏ ݁ݖíܿℎ ݒěݒݐí ݒ ݖ ݐ݊݁ܿݎáℎ= ݕ 100 (ݒáℎܽ ݒě ݁ݒݐ− ݉݅݊݅݉á݈݊í ݒáℎܽ ݊݀݁ݏݑݏ ݁ݖíܿℎ ݒěݒݐí) ݀í݈ ݈݉ ݖě= ݑݎ ݒ ݖ ݐ݊݁ܿݎáℎݕ ݈݉ ݖ ݐ݊݁ܿݎě= ݑݎ ݈݉ě݀ = ݎí݈ ݈݉ ݖě݈݉ ݖ ݐ݊݁ܿݎ ∗ ݑݎě ݑݎ+ ݉݅݊݅݉á݈݊í ݈݉ěݎ Při použití tohoto vzorce se poloměr větví rozloží úměrně jejich váze v rámci zadaného maximálního a minimálního poloměru. Y Z X list větev Obrázek 21 - Stav listu a větve po výpočtu poloměrů 4.3.2.3 NASTAVENÍ ZÁKLADNÍ VELIKOSTI BOUNDING BOXŮ Bounding boxy (dále jen BB) budou ve výsledku sloužit k tomu, abychom poskládali celý strom bez kolizí mezi větvemi. Jejich rozměr udává, kolik prostoru každá větev zabere. U větví se bude velikost hrany BB rovnat jejich průměru, u listů to bude průměr rodičovské větve. Tímto nastavením později získáme z délky hrany BB minimální výšku větve a velikost listu. [0,0,0] Y Z X větev list bounding box Obrázek 22 - Stav listu a větve po nastavení Bounding 22 boxů 4.3.2.4 ROTACE VĚTVÍ Vzhledem k tomu že, známe pořadí větví ve stromě, není problém nastavit jejich natočení. Všechny větve jsou na pozici [0,0,0] a jejich výchozí směr je kladná osa Y, tak jak je to vidět na Obr. 19. Každou větev natočíme o devadesát stupňů proti směru hodinových ručiček vůči předchozí větvi. Výsledkem budou větve stromu natočené do všech stran osového kříže se spodní základnou v bodě [0,0,0]. Y Y X X Z Z před natočením po natočení Obrázek 23 - Natočení větví 4.3.2.5 TRANSLACE VĚTVÍ Posledním a zároveň tím nejnáročnějším krokem je srovnání větví tak, abychom se vyhnuli kolizím. Větve stromu rovnáme od nejspodnějšího patra až ke kmeni. Pokud už máme větve správně natočené a známe jejich průměr, není to zase takový problém. Postup pro jednu větev je následující: 1. najdi nějakou koncovou větev a narovnej na ní listy 2. natáhni délku větve podle toho, kolik místa na ní zaberou listy 3. roztáhni BB podle aktuální délky větve 4. jdi na rodičovskou větev aktuální větve (o patro výš) 5. narovnej na větev všechny listy 6. narovnej na větev všechny podřízené větve podle velikosti v jejich BB v daném směru 7. natáhni délku větve podle toho, kolik místa zaberou listy a BB podřízených větví v daném směru 8. zvětši BB větve podle podřízených větví 23 její délky a podle rozsahu 9. jdi na rodičovskou větev aktuální větve (o patro výš) 10. opakuj cyklus dokud existuje nadřízená větev (dokud aktuální větev není kmen) 1. List Větev 3. 2. BB 4. 5. 7. 8. 6. 9. Obrázek 24 - Postup srovnávání stromu Obrázek 25 - Výsledný strom se zobrazenými Bounding boxy 24 4.4 ZOBRAZENÍ SOUBORŮ Protože listy na stromě zastupují skupinu souborů stejného typu a jsou tedy pouze odkazem na úložiště s daty opravdových souborů, musíme po otevření daného listu zobrazit soubory tak, abychom bez problému našli požadovaný soubor a otevřeli ho. Program musí být kompletně ve 3D, takže zobrazit pouhý seznam souborů jako v klasickém průzkumníku nestačí. Aby se uživatel v programu lépe orientoval, je vhodné zobrazit požadované soubory v místě zastupujícího listu. Program zobrazuje listy jako obdélníky umístěné na plášti válce, viz Obr. 23. Obrázek 26 - Zobrazení souborů na válci S válcem se dá rotovat kolem své osy a tím pádem zobrazovat i další soubory. Pokud bude souborů víc, než se vejde na základní plochu válce, při zmáčknutí příslušného tlačítka se načtou další soubory. Soubory zastupuje třída LeafPrimitive, která je potomkem třídy Primitives. Nejdůležitější proměnné Třídy LeafPrimitive jsou: //textura souboru (v případě obrázku je texturou samotný obrázek) Texture2D texture; //textura pozadí za textem Texture2D textBack; //typ písma, kterým je napsáno jméno souboru SpriteFont font; 25 4.5 OVLÁDÁNÍ Program můžeme ovládat pomocí myši nebo klávesnice. Ovládání myší využívá všechny výhody 3D průzkumníka souborů, neboť můžeme jedním kliknutím otevřít soubor, který je umístěn hlouběji než aktuální adresář. Naopak ovládání pomocí klávesnice zachovává přehlednost a jednoduchou práci se stromovou strukturou. 4.5.1 OVLÁDÁNÍ MYŠÍ Abychom mohli použít ovládání myší, musíme najetím na objekt, ať už je to větev nebo list, tento objekt vybrat. O identifikaci vybraného objektu se stará třída Picking. Třída Picking dostane jako parametr cursorRay (paprsek který začíná v “oku“ kamery a ukazuje směrem, kde se nachází kurzor) a sadu objektů, které chceme testovat na vybrání. Objekt, který protne paprsek, je ten, který chceme vybrat. Pokud paprsek protne více objektů, vybereme ten, který je nejblíže ke kameře. Průchod paprsku objektem se identifikuje na základě porovnání pozice trojúhelníků jednotlivých objektů a paprsku. Aby uživatel viděl, který objekt vybral, obarvíme objekt žlutou barvou. Pokud máme zapnuté ovládání myší, nemusíme řešit automatické natáčení kamery, protože si kameru pomocí myši můžeme natočit sami. Pro některé uživatele může být automatický způsob natáčení přehlednější volbou, proto je možné toto nastavení v programu zapnout. Třída Picking a Cursor byla přejata a upravena z [1]. 4.5.2 OVLÁDÁNÍ KLÁVESNICÍ Ovládání klávesnicí musí být jednoduché a používat co nejméně tlačítek. V programu si vystačíme pouze se čtyřmi druhy operací: • W, UP - pohyb dopředu • S, Down - pohyb dozadu • Enter - otevřít soubor, adresář • Q, BackSpace - přejít na rodičovský adresář V programu se pomocí klávesnice pohybujeme pouze po hlavní větvi a vybíráme podřízené listy nebo větve, které můžeme pomocí klávesy Enter otevřít. 26 Ovládat kameru pouze pomocí klávesnice není jednoduché, proto je v programu zapnuté automatické natáčení kamery (viz Obr. 6), které zajistí stejný pohled na každý nově otevřený adresář. 4.6 POPISKY Popisky neboli jména souborů a adresářů jsou základním prvkem při hledání souboru nebo adresáře. Aby v popiscích nebyl příliš velký zmatek, program využívá vypočítanou váhu jednotlivých větví a podle této váhy nastavuje velikost, nebo viditelnou vzdálenost jednotlivých popisků. popisky Obrázek 27 - Popisky u adresářů s vysokou váhou Zobrazování popisků se liší v závislosti na vybraném druhu ovládání. 27 Pokud použijeme myš, popisky se zobrazují přímo u větví a také u kurzoru, když je aktuálně vybrán nějaký objekt. Obrázek 28 - Zobrazení popisku po najetí kurzorem Při ovládání klávesnicí nejsou důležité okolní popisky, jelikož na ostatní větve, než je aktuálně vybraná nemůžeme přejít. Proto se zobrazuje pouze popisek u právě vybraného objektu. Obrázek 29 - Zobrazení popisku při ovládání klávesnicí 28 5 UŽIVATELSKÝ MANUÁL 5.1 INSTALACE Program se nainstaluje spuštěním souboru setup.exe v adresáři s instalačními soubory. Potřebné prerekvizity si instalátor stáhne z internetu, nebo musí být nainstalovány předem. Zástupce pro spuštění programu se objeví v nabídce Start. Požadované prerekvizity: Windows Installer 3.1 .NET Framework 3.5 Microsoft XNA Framework Redistributable 3.1 Požadavky na systém: Operační systém: Microsoft Windows Vista nebo novější Operační paměť: 1GB Grafická karta: Podpora DirectX9, Pixel Shader 2.0 5.2 OVLÁDÁNÍ Ovládání pomocí klávesnice W, UP - pohyb v adresářové struktuře nahoru S, DOWN - pohyb v adresářové struktuře dolu Enter - načtení adresáře, otevření souboru Q, Backspace - vrácení se o úroveň výš Ovládání pomocí myši a klávesnice W - přiblížení kamery S - oddálení kamery Stisknuté kolečko myši - volné natáčení kamery Kliknutí myší na objekt - načtení objektu Rolování kolečkem - rolování v náhledu souborů Dvojklik - otevření souboru Posunutí myši napravo, nalevo, nahoru - posunutí kamery v daném směru nebo dolů na krajích okna 29 5.3 NASTAVENÍ Formulář s nastaveními v programu se zapíná v položce menu Menu -> Settings 5.3.1 KARTA PROGRAM SETTINGS Na kartě Program settings je umístěna většina nastavení programu. 6 1 7 2 3 4 5 Obrázek 30 - Karta s nastavením programu 1. Změna hloubky stromu. Výchozí hodnota je tři a maximální deset 2. Výběr mezi ovládáním myší nebo klávesnicí 3. Zapnutí automatického najíždění kamery 4. Nastavení rychlosti pohybu kamery 5. Nastavení rychlosti automatického najíždění kamery 6. Zapnutí hodnocení obsahu adresářů 7. Nastavení počtu hran, které bude mít zobrazovaný válec (větev) 30 5.3.2 KARTA CONTENT RATING SETTINGS Karta Content rating settings slouží k nastavení uživatelem preferovaných souborů. Obrázek 31 - Karta s nastavením váhy souborů Po kliknutí na tlačítko Edit XML file Obr 28. se otevře textový soubor, do kterého se přidají hodnoty podle klíče: <entry type="[typ souboru]" rating=“[hodnocení od 1(min) do 2(max)]" /> Výsledný zápis může vypadat tak jako na Obr. 29 Obrázek 32 - Textový dokument s nastavením váhy souborů 31 5.3.3 NASTAVENÍ BAREV V programu je možné nastavit barvu stromu. Toto nastavení se mění v položce Menu -> Change color. Po kliknutí na položku nabídky se v pravém dolním rohu programu zobrazí formulář s nastavením barevných složek RGB. Obrázek 33 - Formulář s nastavením barvy stromu 5.3.4 DALŠÍ NASTAVENÍ POMOCÍ EDITACE XML SOUBORŮ Díky tomu že program ukládá veškeré nastavení do XML souborů, není problém změnit další nastavení pomocí jejich editace. V programu jsou dva XML soubory, ve kterých je uložené nastavení. Oba tyto souboru najdeme v adresáři s instalací programu. 5.3.4.1 TEXTURESDEF.XML V souboru texturesDef.xml se nastavuje textura, nebo spíše souřadnice textury, pro jednotlivé datové typy. Záznam vypadá takto: <entry type="png" X="1" Y="2" /> Hodnota type udává typ souboru a hodnoty X, Y jsou souřadnice na velké textuře Obr. 30. 32 Velká textura se používá z následujícího důvodu: zobrazovaný strom je jeden velký objekt, na který lze aplikovat pouze jednu texturu, ovšem polohu textury můžeme definovat pomocí texturovacích souřadnic souřa ve vertexech objektu. Samozřejmě pokud přidáme odkaz na texturu do XML souboru, musíme upravit obrázek s texturou tak, aby na daných souřadnicích byla požadovaná ikona. Obrázek 34 - Schéma dělení textury a jejích souřadnic 5.3.4.2 PARAMETERS.XML V souboru parameters.xml je většinou nastavení, které můžeme editovat pomocí formuláře Program settings, settings, ale obsahuje i jiné konstanty, které nejsou v grafickém nastavení zahrnuty. 33 Obsah souboru vypadá takto: //ovládání klávesnice <keyBoardControl>false</keyBoardControl> //rozdíl mezi maximálním a minimálním poloměrem (0<hodnota<1) <radiusDifference>0.4</radiusDifference> //délka prázdné větve (hodnota>0) <emptyBranchOverlap>2</emptyBranchOverlap> //odsazení prvního objektu na větvi (hodnota>0) <firstObjectOffset>3</firstObjectOffset> //mezera mezi objekty (hodnota>0) <spaceBetweenObjects>2</spaceBetweenObjects> //automatické natáčení kamery <enableCameraDollyIn>false</enableCameraDollyIn> //rychlost kamery (hodnota>0) <cameraSpeed>2</cameraSpeed> //výchozí adresář <defaultPath>%userprofile%</defaultPath> //výchozí hloubka stromu (hodnota>0) <defaultBranchLevel>3</defaultBranchLevel> //rychlost automatického najíždění kamery(hodnota>0) <DollyInSpeed>0.01</DollyInSpeed> //hodnocení obsahu <ContentRating>true</ContentRating> 34 6 VYHODNOCENÍ UŽIVATELSKÝCH ZKUŠENOSTÍ Důležitou součástí práce je otestování programu na skutečných uživatelích. V rámci studie se dozvíme, jaké funkce programu jsou pro uživatele zbytečné a jaké funkce by uživatel od programu nejvíce očekával. Práce byla na základě dotazníku otestována sedmi respondenty ve věku 18 až 23 let se vzděláním v technickém směru. Respondenti odpovídali celkem na osmnáct otázek, které se týkaly ovládání programu, zobrazení stromové struktury, stability, plynulosti a smyslu programu jako takového. Odpovědi byly převedeny do sloupcových grafů, kde vertikální osa udává procentuální zastoupení dané odpovědi a horizontální osa typ odpovědi. Grafy jsou sloučeny do jednotlivých kategorií, aby vyniklo celkové hodnocení jednotlivých kategorií. Respondenti měli možnost napsat ke každé z osmnácti otázek svůj komentář a ke konci napsat celkové hodnocení programu, popřípadě funkce, které jim v programu chyběly. Vyplněné dotazníky jsou součásti přílohy této práce. 6.1 STABILITA A PLYNULOST PROGRAMU Tato kategorie otázek měla za cíl zjistit stabilitu programu a plynulost práce s programem. Stabilita a plynulost 120,0 četnost [%] 100,0 80,0 60,0 40,0 20,0 0,0 Ano Spíše ano Spíše ne Ne Program během testování selhal. Načítání struktury souborů a adresářů do defaultní hloubky 3 bylo rychlé. Program byl dostatečně plynulý a nezasekával se. Obrázek 35 - Graf s výsledky vyhodnocení stability a plynulosti programu 35 Z průzkumu vyplývá, že program byl stabilní a nikomu během testování neselhal. Díky optimalizacím zobrazení byl chod programu u většiny uživatelů plynulý a rychlý. 6.2 VIZUALIZACE ADRESÁŘOVÉ STRUKTURY Respondenti hodnotili uživatelské rozhraní a vizualizaci adresářové struktury na základě šesti otázek. Otázky se týkaly zobrazení stromu, popisků, souborů a celkového barevného podání. Vizualizace adresářové struktury četnost [%] 80,0 60,0 40,0 20,0 0,0 Ano Spíše ano Spíše ne Ne Zobazení struktury ardesářů je přehledné. Shlukování souborů podle datového typu je dobrý nápad a přidává na použitelnosti programu. Zobrazení souborů na válci s možností rotace bylo přehledné. Popisky souborů a adresářů byly čitelné. Popisky souborů a adresářů byly přehledné. Základní barevné podání se mi líbilo. Obrázek 36 - Graf s výsledky vyhodnocení vizualizace adresářové struktury Uživatelům se líbil nápad se zobrazováním souborů na otáčivém válci. Naopak základní barevné podání se nesetkalo s příliš velkým úspěchem. Navržený koncept zobrazování stromu se setkal spíše s kladnými odpověďmi. 36 6.3 OVLÁDÁNÍ PROGRAMU Otázky, které se týkaly ovládání programu, cílily převážně na rychlost a přesnost navigace v adresářové struktuře. četnost [%] Ovládání Programu 80,0 70,0 60,0 50,0 40,0 30,0 20,0 10,0 0,0 Ano Spíše ano Spíše ne Ne Bez odpovědi Ovládání pomocí myši bylo rychlé. Ovládání pomocí myši bylo přesné a přehledné. Ovládání pomocí klávesnice bylo rychlé. Ovládání pomocí klávesnice bylo přesné a přehledné. Lépe se mi s programem pracovalo při zapnutí automatického natáčení kamery. Obrázek 37 - Graf s výsledky vyhodnocení ovládání programu Hodnocení této části programu dopadlo převážně kladně. Automatické natáčení kamery se setkalo s úspěchem a práce s kamerou uživatelům nečinila větší problémy. Pravděpodobně by bylo vhodné ještě vylepšit vyhledávání souborů pomocí myši, které se přece jenom může stát při zvýšeném počtu souborů a adresářů nepřehledné. 37 6.4 HODNOCENÍ OBSAHU ADRESÁŘŮ Hodnocení obsahu adresářů měla být jedna ze stěžejních funkcí, která napomáhá k zpřehlednění programu. K mému překvapení se tato funkce nesetkala s tak kladným hodnocením, které bych předpokládal. Respondenti tuto funkci hodnotili spíše neutrálně až negativně. četnost [%] Hodnocení obsahu adresářů 80 70 60 50 40 30 20 10 0 Je to dobrá funkce a Je to dobrá funkce, Tahle funkce spíše velmi napomáhá k ale stejně dobře se přispívá k zpřehlednění zorientuji i bez ní nepřehlednosti Bez odpovědi Jaký je váš názor na funkci hodnocení adresářů podle jejich obsahu Obrázek 38 - Graf s vyhodnocením funkce hodnocení obsahu adresářů 38 6.5 SMYSL PROGRAMU Úvaha nad smyslem tohoto programu je asi tou nejdůležitější částí. Má vůbec cenu vytvářet něco ve 3D, když to výborně funguje ve 2D? Může program přinést nějaké funkce, které nemůže klasický průzkumník souborů nabídnout? Má smysl používat 3D průzkumníka i na klasických monitorech? četnost [%] Smysl programu 100,0 80,0 60,0 40,0 20,0 0,0 Ano Spíše ano Spíše ne Ne Bez odpovědi Má smysl používat 3D průzkumník s takto navrženým zobrazením, ale s mnohem větší funkcionalitou (například copy-paste, atd..) I pro 2D zobrazovací sytémy 3D průzkumník nabízí možnost dostat se jedním kliknutím do větší hloubky adresářové struktury. Například C:/users -> C:/users/admin/dokumenty/fotky. Zdá se vám tato možnost užitečná? V budoucnosti, pokud bude možné na plochu počítače nahlížet jako 3D prostor ze všech stran, bude mít tento program výhodu nad klasickým 2D průzkumníkem souborů Obrázek 39 - Graf s výsledky vyhodnocení smyslu programu Podle odpovědí respondentů by mělo smysl rozšířit funkcionalitu programu i pro současné 2D zobrazovací zařízení. Jednu z funkcí, kterou může 3D průzkumník na rozdíl od klasické 2D varianty nabídnout, je přeskakování o více úrovní v souborovém systému bez zbytečného klikání. Tato funkce byla respondenty hodnocena převážně kladně. Jestli bude mít 3D průzkumník výhodu nad klasickým 2D průzkumníkem na budoucích třírozměrných zobrazovacích systémech, je otázkou. Nadpoloviční většina respondentů si myslí, že by tomu tak mohlo být. 39 6.6 NAVRHOVANÁ VYLEPŠENÍ PROGRAMU A ZÁVĚREČNÉ HODNOCENÍ Respondenti navrhli tyto rozšiřující funkce: • Odkazy na oblíbené adresáře • Funkce copy-paste Závěrečná hodnocení (doslovný přepis): • Zajímavý pilotní projekt. • Zajímavá studie nekonvenčního souborového manageru. • Jo, dá se to. Když si na to člověk zvykne, tak by s tím možná i šlo pracovat :) 40 7 ZÁVĚR Na počátku tvorby této práce byla vize vytvořit něco nového, něco co by mohlo vést k zamyšlení do budoucna. Bylo to právě téma průzkumníka souborů a jeho zpracování ve 3D co mě zaujalo. Práce nebyla jenom o tom něco naprogramovat, ale hlavně vymyslet jak celý program bude vypadat, jak se s ním bude pracovat a jaké by měl mít vlastnosti. 7.1 IMPLEMENTACE Naprogramování celé práce v C# za použití XNA Frameworku byla jednoznačně dobrá volba, která mi velice usnadnila práci programátora, a zároveň jsem se naučil pracovat s moderním vývojovým nástrojem. Program obsahuje interface, díky kterému se zobrazování stromových struktur nemusí omezovat pouze na souborový systém. Celý program je ovladatelný pomocí myši a klávesnice, nebo jenom pomocí klávesnice a to hlavně díky automatickému natáčení celého stromu. Uživatel má k dispozici spoustu nastavení od barevného podání stromu přes nastavení hloubky zobrazovaného stromu až po definici vlastních textur. Celý program je optimalizovaný i pro běh na starších typech počítačů, nebo pro slabší grafické karty notebooků, nicméně spuštění programu je omezeno na operační systémy společnosti Microsoft od verze Windows Vista a novější. 7.2 TESTOVÁNÍ UŽIVATELI Program testovalo sedm respondentů s technickým vzděláním. Hodnocení dopadlo víceméně kladně, ale je nutné podotknout, že se k programu přistupovalo jako ke studii (prototypu). Pro komerční využití by program musel projít ještě dlouhým vývojem. 7.3 BUDOUCÍ PRÁCE NA PROJEKTU Do projektu by se dalo implementovat ještě spoustu funkcí, které nabízí běžný průzkumník souborů. Mezi ty nejdůležitější určitě patří přesouvání a kopírování souborů nebo adresářů a panel s oblíbenými soubory. Vzhledem k tomu že, program pracuje s náhledy obrázků, může se stát, že pokud je obrázek příliš velký, tak se jeho náhled vytváří neprakticky dlouho. Proto by bylo dobré zahrnout do funkcí programu ukládání náhledů již zpracovaných obrázků. 41 A. LITERATURA A REFERENCE [1] XNA Creators Club Online - stránky vývojářů v XNA http://creators.xna.com/en-US/ [2] Learning XNA 3.0 Learning XNA 3.0. [s.l.] : O’Reilly Media, 2008. 447 s. ISBN 978-0-596-52195-0. [3] Microsoft MSDN - nápověda k jazyku C# a XNA Framework http://msdn.microsoft.com/cs-cz/default.aspx [4] File System Visualizer http://fsv.sourceforge.net/ [5] Jemfis 3D filemanager http://jemfis.sourceforge.net/main/ [6] Inmolab 3D File Manager http://sourceforge.net/projects/innolab/ 42 B. OBSAH PŘILOŽENÉHO CD ./bakalarska_prace Text bakalářské práce ve formátu PDF ./dotazniky Respondenty vyplněné dotazníky ./zdrojove_kody Zdrojové kódy (projekt ve formátu Microsoft Visual Studia 2008 s nainstalovaným Microsoft XNA Game Studio 3.1) ./install Instalace programu (pro Windows Vista a novější) 43
Podobné dokumenty
Bakalá°ká práce - DCGI - České vysoké učení technické v Praze
Na tomto místě bych ráda poděkovala mému vedoucímu bakalářské práce, Ing. Jaroslavu
Sloupovi, za poskytnutí tématu práce, za cenné rady a přípomíny a zároveň za poskytnutí
materiálů, které byly pot...
3 - Kuma.cz
mohli jste hrát pouze za člověka.
To se má ve třetím díle změnit.
Podle dostupných informací by
měli být minimálně tři hratelné
rasy: lidé, elfové a trpaslíci.
Spekuluje se i o rase Qunari. Tak
,že...
XNA Game Studio 3.1
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MI...
Aktualizovany IAP - Česká technologická platforma strojírenství
Centrum ekonomických studií VŠEM a Národní observatoř zaměstnanosti a vzdělávání NVF
vydávají každoročně „Ročenku konkurenceschopnosti ČR [2]. Relevanci k prezentované
kapitole IAP má vždy kapitola...