české vysoké učení technické v praze fakulta elektrotechnická

Transkript

české vysoké učení technické v praze fakulta elektrotechnická
Č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

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...

Více

CPU RAM I/O BUS

CPU RAM I/O BUS cp - (copy) kopı́ruje soubory, vždy 2 argumenty

Více

3 - Kuma.cz

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...

Více

XNA Game Studio 3.1

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...

Více

Aktualizovany IAP - Česká technologická platforma strojírenství

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...

Více