|
@@ -0,0 +1,321 @@
|
|
|
|
|
+\documentclass[10pt,a4paper]{article}
|
|
|
|
|
+
|
|
|
|
|
+\usepackage[dutch]{babel}
|
|
|
|
|
+\usepackage[utf8]{inputenc}
|
|
|
|
|
+\usepackage{amsmath,hyperref,graphicx,booktabs,float}
|
|
|
|
|
+
|
|
|
|
|
+% Link colors
|
|
|
|
|
+\hypersetup{colorlinks=true,linkcolor=black,urlcolor=blue}
|
|
|
|
|
+
|
|
|
|
|
+% Paragraph indentation
|
|
|
|
|
+\setlength{\parindent}{0pt}
|
|
|
|
|
+\setlength{\parskip}{1.5ex plus 0.5ex minus 0.2ex}
|
|
|
|
|
+
|
|
|
|
|
+\title{Projectvoorstel\\Universal Visualization Appliance}
|
|
|
|
|
+\author{\begin{tabular}{ll}
|
|
|
|
|
+Naam: & Taddeüs Kroes\\
|
|
|
|
|
+Collegekaartnummer: & 6054129\\
|
|
|
|
|
+E-mailadres: & \texttt{taddeus.kroes@student.uva.nl}\\
|
|
|
|
|
+Adres: & Wethouder van Wijckstraat 40, 1107 BR Amsterdam\\
|
|
|
|
|
+Telefoonnummer: & 06-23437025\\
|
|
|
|
|
+Begeleider: & Dr. R.G. Belleman (UvA)\\
|
|
|
|
|
+\end{tabular}}
|
|
|
|
|
+
|
|
|
|
|
+\begin{document}
|
|
|
|
|
+
|
|
|
|
|
+\maketitle
|
|
|
|
|
+\pagebreak
|
|
|
|
|
+\tableofcontents
|
|
|
|
|
+\pagebreak
|
|
|
|
|
+
|
|
|
|
|
+\section{Inleiding}
|
|
|
|
|
+
|
|
|
|
|
+\subsection{Probleemidentificatie}
|
|
|
|
|
+\label{sec:probleemidentificatie}
|
|
|
|
|
+
|
|
|
|
|
+% Ruwe probleemstelling
|
|
|
|
|
+
|
|
|
|
|
+Data wordt verzameld in alle hoeken van de wetenschap. Wanneer de data echter
|
|
|
|
|
+zijn verzameld, is het vaak een uitdaging om deze op een zodanige manier weer
|
|
|
|
|
+te geven dat er een waarneming kan worden gedaan. Deze visualisatie wordt
|
|
|
|
|
+veelal gedaan met de hulp van een visualisatie-specialist, omdat het voor de
|
|
|
|
|
+wetenschapper vaak zelf niet eenvoudig is om dit te realiseren.
|
|
|
|
|
+
|
|
|
|
|
+% Aanleiding
|
|
|
|
|
+
|
|
|
|
|
+Robert Belleman\footnote{\url{http://staff.science.uva.nl/~robbel/}} is een
|
|
|
|
|
+specialist op het gebied van visualisatie aan de Universiteit van Amsterdam
|
|
|
|
|
+(UvA), en deed de observatie dat bij gelijksoortige datasets de
|
|
|
|
|
+visualisatiemethode overeenkomstig is.
|
|
|
|
|
+
|
|
|
|
|
+% Ruwe doel
|
|
|
|
|
+
|
|
|
|
|
+Dit roept de vraag op of de visualisatiemethode kan worden bepaald door een
|
|
|
|
|
+computerprogramma dat de data analyseert, en op basis van die analyse een
|
|
|
|
|
+visualisatiemethode kiest. Dit zou werk uit handen nemen van de
|
|
|
|
|
+visualisatie-specialist, en de mogelijkheid geven voor wetenschappers om
|
|
|
|
|
+hun eigen data snel te kunnen bekijken. Om deze reden is dit project als
|
|
|
|
|
+afstudeerproject voor de bachelor Informatica beschikbaar gesteld.
|
|
|
|
|
+
|
|
|
|
|
+% Setting/afbakening
|
|
|
|
|
+
|
|
|
|
|
+Het doel van deze afstudeeropdracht is om een bijdrage te leveren aan de
|
|
|
|
|
+realisatie van een universeel visualisatieprogramma. Op lange termijn moet dit
|
|
|
|
|
+programma zoveel mogelijk soorten data kunnen analyseren en visualiseren.
|
|
|
|
|
+Het is de bedoeling van de onderzoekers dat het programma zodanig modulair
|
|
|
|
|
+wordt opgezet, dat er in de loop van de tijd meer modules op kunnen worden
|
|
|
|
|
+aangesloten voor nieuwe analyse- en visualisatiemethodes. Vanwege de
|
|
|
|
|
+beschikbare tijd om het onderzoek uit te voeren is besloten dat het
|
|
|
|
|
+resulterende programma een ``Proof of Concept'' moet zijn. Er is besloten dat
|
|
|
|
|
+het Proof of Concept 3D datasets moet kunnen visualiseren in interactie met
|
|
|
|
|
+een multi-touch tafel. Deze is beschikbaar gesteld voor dit onderzoek door de
|
|
|
|
|
+UvA.
|
|
|
|
|
+
|
|
|
|
|
+\emph{<Voordat het onderzoek begon was besloten om multitouch te doen, focus verlegd naar schrijven MT-library etc.>}
|
|
|
|
|
+
|
|
|
|
|
+\subsection{Opbouw verslag}
|
|
|
|
|
+
|
|
|
|
|
+In hoofdstuk \ref{sec:vraagstelling} wordt de probleemstelling vertaald naar
|
|
|
|
|
+een doelstelling en een centrale vraagstelling.
|
|
|
|
|
+
|
|
|
|
|
+Hoofdstuk \ref{sec:deelvragen} verdeelt de centrale vraagstelling in een
|
|
|
|
|
+aantal deelvragen, die elk kort worden toegelicht.
|
|
|
|
|
+
|
|
|
|
|
+Na de vraagstelling wordt in hoofdstuk \ref{sec:afbakening} de afbakening van
|
|
|
|
|
+het onderzoeksgebied aangegeven.
|
|
|
|
|
+
|
|
|
|
|
+Vervolgens wordt de gebruikte onderzoeksmethodiek beschreven in hoofdstuk
|
|
|
|
|
+\ref{sec:methodiek}, bestaande uit een faseverdeling en een globale
|
|
|
|
|
+tijdsplanning.
|
|
|
|
|
+
|
|
|
|
|
+Tot slot wordt in hoofdstuk \ref{sec:gerelateerd} een blik geworpen op een
|
|
|
|
|
+gerelateerd project.
|
|
|
|
|
+
|
|
|
|
|
+\emph{- Rest v/d hoofdstukken beschrijven}
|
|
|
|
|
+
|
|
|
|
|
+\section{Vraagstelling}
|
|
|
|
|
+\label{sec:vraagstelling}
|
|
|
|
|
+
|
|
|
|
|
+\subsection{Doelstelling}
|
|
|
|
|
+
|
|
|
|
|
+Het doel van dit onderzoek is om een bijdrage te leveren aan het ontwikkelen
|
|
|
|
|
+van een universeel datavisualisatie-programma.
|
|
|
|
|
+
|
|
|
|
|
+In dit projectvoorstel zal naar het programma worden verwezen met de afkorting
|
|
|
|
|
+``UVA'' (Universal Visualizaton Appliance).
|
|
|
|
|
+
|
|
|
|
|
+\subsection{Centrale vraag}
|
|
|
|
|
+
|
|
|
|
|
+Hoe kan een Proof of Concept voor een universeel datavisualisatie-programma
|
|
|
|
|
+worden gerealiseerd, gericht op 3D-visualisatie en met multi-touch interactie?
|
|
|
|
|
+
|
|
|
|
|
+\subsection{Deelvragen}
|
|
|
|
|
+\label{sec:deelvragen}
|
|
|
|
|
+
|
|
|
|
|
+\begin{itemize}
|
|
|
|
|
+
|
|
|
|
|
+\item \emph{Welke taal (en evt. framework) zijn de beste keuze om het
|
|
|
|
|
+programma in te ontwikkelen?}
|
|
|
|
|
+
|
|
|
|
|
+Het kiezen van een taal is vooral afhankelijk van de beschikbaarheid van zgn.
|
|
|
|
|
+``libraries'' met multi-touch ondersteuning. Voor
|
|
|
|
|
+Python\footnote{\url{http://python.org}} bestaat bijvoorbeeld het
|
|
|
|
|
+applicatieframework Kivy\footnote{\url{http://kivy.org}}.
|
|
|
|
|
+
|
|
|
|
|
+\item \emph{Hoe werkt de communicatie met de multi-touch tafel?}
|
|
|
|
|
+
|
|
|
|
|
+Het is nodig om te weten wat voor ``events'' er worden ondersteund door
|
|
|
|
|
+frameworks als Kivy, om te bepalen welke touch-gebaren kunnen worden
|
|
|
|
|
+geïmplementeerd.
|
|
|
|
|
+
|
|
|
|
|
+\item \emph{Welke soorten 3D datasets zijn er en welke daarvan zijn relevant
|
|
|
|
|
+om te ondersteunen in het Proof of Concept?}
|
|
|
|
|
+
|
|
|
|
|
+De term ``3D dataset'' is een generieke benaming. Omdat de multi-touch
|
|
|
|
|
+tafel in het bezit van de UvA is, zal het onderzoek zich in eerste
|
|
|
|
|
+instantie richten op bestandsformaten die op de UvA worden gebruikt om de kans op
|
|
|
|
|
+daadwerkelijk gebruik van het programma te vergroten.
|
|
|
|
|
+
|
|
|
|
|
+\item \emph{Hoe kunnen de verschillende 3D datasets worden gevisualiseerd?}
|
|
|
|
|
+
|
|
|
|
|
+Is het bijvoorbeeld makkelijk om OpenGL commando's te gebruiken? En wanneer er
|
|
|
|
|
+vele duizenden vectoren zijn, is het dan nuttig om bijvoorbeeld clusters van
|
|
|
|
|
+vectoren te groeperen tot een enkele vector?
|
|
|
|
|
+
|
|
|
|
|
+\item \emph{Hoe kunnen multi-touch gebaren worden gebruikt in de interactie
|
|
|
|
|
+met 3D datasets?}
|
|
|
|
|
+
|
|
|
|
|
+Er moet een intuïtieve manier worden ontwikkeld voor de interactie met 3D data
|
|
|
|
|
+op een 2D scherm.
|
|
|
|
|
+
|
|
|
|
|
+\item \emph{Wat is een goede structuur die toestaat om in de toekomst nieuwe
|
|
|
|
|
+visualisatiemethodes toe te voegen?}
|
|
|
|
|
+
|
|
|
|
|
+Een universeel programma moet flexibel zijn zodat ontwikkelaars gemakkelijk
|
|
|
|
|
+nieuwe methodes kunnen toevoegen. Een voorbeeld van een al bestaand is
|
|
|
|
|
+Eclipse. Elk component van Eclipse wordt gezien is een ``plugin''. Zo'n plugin
|
|
|
|
|
+heeft een vast formaat waardoor het kan worden gebruikt in combinatie met
|
|
|
|
|
+andere plugins. Een soortgelijke structuur is wellicht nuttig om te hanteren
|
|
|
|
|
+in het UVA-programma.
|
|
|
|
|
+
|
|
|
|
|
+De structuur moet flexibel genoeg zijn om een verschillende frameworks te
|
|
|
|
|
+kunnen gebruiken in verschillende visualisatiemethodes. Kivy maakt
|
|
|
|
|
+bijvoorbeeld gebruik van een eigen main loop (een functie die zorgt voor het
|
|
|
|
|
+functioneren van de grafische interface). De loop is ``blocking'', dus is het
|
|
|
|
|
+mogelijk nodig om gebruik te maken van threads voor continue taken.
|
|
|
|
|
+
|
|
|
|
|
+\end{itemize}
|
|
|
|
|
+
|
|
|
|
|
+\subsection{Afbakening}
|
|
|
|
|
+\label{sec:afbakening}
|
|
|
|
|
+
|
|
|
|
|
+Het onderzoek zou waarschijnlijk het best tot zijn recht komen wanneer het zou
|
|
|
|
|
+worden uitgevoerd door meerdere onderzoekers. Omdat er echter slechts een
|
|
|
|
|
+enkele onderzoeker is, en er een beperkte tijd voor het onderzoek beschikbaar
|
|
|
|
|
+is, is besloten tot het maken van een Proof of Concept.
|
|
|
|
|
+
|
|
|
|
|
+%Omdat het UVA-programma expliciet als opdracht is geformuleerd, wordt in dit
|
|
|
|
|
+%onderzoek aangenomen dat er nog geen universeel programma voor
|
|
|
|
|
+%datavisualisatie bestaat.
|
|
|
|
|
+
|
|
|
|
|
+\subsection{Programma-onderdelen}
|
|
|
|
|
+
|
|
|
|
|
+\emph{- Multitouch-library}
|
|
|
|
|
+
|
|
|
|
|
+\emph{- front-end in VTK}
|
|
|
|
|
+
|
|
|
|
|
+\section{Relatie met vergelijkbaar onderzoek}
|
|
|
|
|
+\label{sec:gerelateerd}
|
|
|
|
|
+
|
|
|
|
|
+Er is gezocht naar programma's met een soortgelijke strekking met
|
|
|
|
|
+het doel er inspiratie uit op te doen, zo is het programma ``UDAV'' gevonden.
|
|
|
|
|
+
|
|
|
|
|
+UDAV\footnote{\url{http://udav.sourceforge.net/}} is een programma waarmee
|
|
|
|
|
+data op verschillende manieren kan worden gevisualiseerd met behulp van
|
|
|
|
|
+MathGL\footnote{\url{http://mathgl.sourceforge.net/}}. Om dit programma te
|
|
|
|
|
+kunnen gebruiken is kennis nodig van de MathGL syntax, waar het UVA-programma
|
|
|
|
|
+juist als eigenschap heeft dat er weinig kennis nodig is van de gebruiker.
|
|
|
|
|
+Het zou echter wel een optie zijn om visualisatiemogelijkheden in de MathGL
|
|
|
|
|
+library onder te brengen in een module voor het UVA-programma.
|
|
|
|
|
+
|
|
|
|
|
+\section{Onderzoeksmethodiek}
|
|
|
|
|
+\label{sec:methodiek}
|
|
|
|
|
+
|
|
|
|
|
+\subsection{Methode}
|
|
|
|
|
+
|
|
|
|
|
+Het UVA-programma is een nieuw soort programma, er is nog geen bestaande
|
|
|
|
|
+variant van. Dit onderzoek maakt daarom gebruik van een experimentele
|
|
|
|
|
+onderzoeksmethode\footnote{\url{http://artikelen.foobie.nl/verslagen-scripties/onderzoeksmethode-samenvatting/}}:
|
|
|
|
|
+tijdens de ontwikkeling van het programma wordt geëxperimenteerd met de
|
|
|
|
|
+beschikbare opties voor implementatie, en wordt bepaald in hoeverre deze
|
|
|
|
|
+opties voldoen aan de vooraf gestelde eisen.
|
|
|
|
|
+
|
|
|
|
|
+\subsection{Fases}
|
|
|
|
|
+
|
|
|
|
|
+Het onderzoek kan worden verdeeld in vier hoofdfases:
|
|
|
|
|
+
|
|
|
|
|
+\subsubsection*{Oriëntatiefase}
|
|
|
|
|
+
|
|
|
|
|
+De eerste fase is de oriëntatie op het werken met de multi-touch interface, en
|
|
|
|
|
+op het weergeven van voorbeeld-datasets in 3D (gebruik makend van de OpenGL-
|
|
|
|
|
+bindings\footnote{\url{http://kivy.org/docs/api-kivy.graphics.opengl.html}} in
|
|
|
|
|
+Kivy).
|
|
|
|
|
+
|
|
|
|
|
+Er moet bijvoorbeeld worden uitgezocht welke touch-gebaren worden herkend. Dit
|
|
|
|
|
+kan worden getest met behulp van een testprogramma dat een bericht toont op
|
|
|
|
|
+het moment dat een event optreedt.
|
|
|
|
|
+
|
|
|
|
|
+Ook is het nuttig om een testprogramma te maken dat met behulp van de eerder
|
|
|
|
|
+genoemde OpenGL-bindings een 3D plot maakt van een voorbeeld-dataset, om
|
|
|
|
|
+bekend te worden met de OpenGL functionaliteit.
|
|
|
|
|
+
|
|
|
|
|
+Daarnaast moet worden bepaald welke soorten 3D data gaan worden gebruikt, en
|
|
|
|
|
+hoe het formaat hiervan eruit ziet.
|
|
|
|
|
+
|
|
|
|
|
+\subsubsection*{Ontwerpfase}
|
|
|
|
|
+
|
|
|
|
|
+Met de kennis die is opgedaan tijdens de oriëntatiefase kan een ontwerp worden
|
|
|
|
|
+gemaakt van het kerncomponent van het programma, en de aansluiting hiervan op
|
|
|
|
|
+de 3D/multi-touch visualisatiecomponenten.
|
|
|
|
|
+
|
|
|
|
|
+\subsubsection*{Implementatiefase}
|
|
|
|
|
+
|
|
|
|
|
+Deze fase bevat het daadwerkelijk programmeren van de ontworpen onderdelen.
|
|
|
|
|
+Tijdens deze fase zullen ook ontwerpproblemen op een gedetailleerd niveau
|
|
|
|
|
+worden opgelost. Denk aan het invullen van de grafische interface met knoppen
|
|
|
|
|
+en eventuele widgets.
|
|
|
|
|
+
|
|
|
|
|
+\subsubsection*{Verslaglegging}
|
|
|
|
|
+
|
|
|
|
|
+Het is de bedoeling dat al tijdens de eerste drie fases wordt gewerkt aan de
|
|
|
|
|
+basis van de afstudeerscriptie. Tijdens die fases kunnen een aantal deelvragen
|
|
|
|
|
+worden beantwoord.
|
|
|
|
|
+Er zal een logboek worden bijgehouden in de vorm van Version Control. Het
|
|
|
|
|
+gebruikte Version Control systeem is Git\footnote{\url{http://git-scm.com/}}.
|
|
|
|
|
+Bij de ``commits'' worden ``commit messages'' ingevuld zodat zichtbaar is op
|
|
|
|
|
+welk moment (in welke commit) bepaalde taken zijn uitgevoerd.
|
|
|
|
|
+
|
|
|
|
|
+Tijdens de laatste fase worden de antwoorden op de deelvragen waar nodig
|
|
|
|
|
+aangevuld, en worden de overige hoofdstukken geschreven.
|
|
|
|
|
+
|
|
|
|
|
+\section{Het TUIO-protocol}
|
|
|
|
|
+
|
|
|
|
|
+\emph{- Vertellen dat het op een UDP poort binnenkomt}\\
|
|
|
|
|
+\emph{- wat komt er dan binnen?}\\
|
|
|
|
|
+\emph{- wat doet de implementatie ermee?}
|
|
|
|
|
+
|
|
|
|
|
+\section{Multitouch-library}
|
|
|
|
|
+
|
|
|
|
|
+\subsection{Threads}
|
|
|
|
|
+
|
|
|
|
|
+\emph{- Meerdere threads nodig omdat er 3 loops zijn}\\
|
|
|
|
|
+\emph{- Daemon threads voor stabiliteit}
|
|
|
|
|
+
|
|
|
|
|
+\subsection{Gebaarherkenning}
|
|
|
|
|
+
|
|
|
|
|
+\subsubsection*{Rotatie}
|
|
|
|
|
+
|
|
|
|
|
+\emph{- Tangens-vergelijking voor rotatie om centroid}
|
|
|
|
|
+
|
|
|
|
|
+\subsubsection*{``Pinch''}
|
|
|
|
|
+
|
|
|
|
|
+\emph{- Relatief verschil in afstand tot centroid}
|
|
|
|
|
+
|
|
|
|
|
+\subsubsection*{Slepen met meerdere vingers}
|
|
|
|
|
+
|
|
|
|
|
+\emph{- meerdere vingers in dezelfde richting genereert drag event met beweging van
|
|
|
|
|
+centroid}
|
|
|
|
|
+
|
|
|
|
|
+\subsection{Afvuren ``event''}
|
|
|
|
|
+
|
|
|
|
|
+\emph{- Event binding uitleggen}\\
|
|
|
|
|
+\emph{- Waarom deze manier handig is}\\
|
|
|
|
|
+\emph{- Eventueel: beschrijven welk design pattern dit is}
|
|
|
|
|
+
|
|
|
|
|
+\subsection{Toewijzing aan ``event window''}
|
|
|
|
|
+
|
|
|
|
|
+\emph{- TUIO coördinaten zijn over het hele scherm en van 0.0 tot 1.0, dus moeten worden vertaald naar pixelcoördinaten binnen een ``window''.}
|
|
|
|
|
+
|
|
|
|
|
+\section{Experimenten}
|
|
|
|
|
+
|
|
|
|
|
+\emph{- draw.py}\\
|
|
|
|
|
+\emph{- UVA front-end}
|
|
|
|
|
+
|
|
|
|
|
+\section{Conclusies}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+\section{Referenties}
|
|
|
|
|
+
|
|
|
|
|
+\begin{itemize}
|
|
|
|
|
+\item Homepage Robert Belleman \url{http://staff.science.uva.nl/~robbel/}
|
|
|
|
|
+\item Python homepage \url{http://python.org}
|
|
|
|
|
+\item Definitie experimentele onderzoeksmethode \url{http://artikelen.foobie.nl/verslagen-scripties/onderzoeksmethode-samenvatting/}
|
|
|
|
|
+\item Kivy homepage \url{http://kivy.org}
|
|
|
|
|
+\item Kivy OpenGL-bindings documentatie \url{http://kivy.org/docs/api-kivy.graphics.opengl.html}
|
|
|
|
|
+\item Git homepage \url{http://git-scm.com/}
|
|
|
|
|
+\item UDAV homepage \url{http://udav.sourceforge.net/}
|
|
|
|
|
+\item MathGL homepage \url{http://mathgl.sourceforge.net/}
|
|
|
|
|
+\end{itemize}
|
|
|
|
|
+
|
|
|
|
|
+\end{document}
|