|
|
@@ -1,6 +1,6 @@
|
|
|
\documentclass[10pt,a4paper]{article}
|
|
|
|
|
|
-\usepackage[dutch]{babel}
|
|
|
+\usepackage[english]{babel}
|
|
|
\usepackage[utf8]{inputenc}
|
|
|
\usepackage{amsmath,hyperref,graphicx,booktabs,float}
|
|
|
|
|
|
@@ -16,14 +16,17 @@
|
|
|
Name: & Taddeüs Kroes\\
|
|
|
Student number: & 6054129\\
|
|
|
E-mail address: & \texttt{taddeus.kroes@student.uva.nl}\\
|
|
|
-Adres: & Wethouder van Wijckstraat 40, 1107 BR Amsterdam\\
|
|
|
+Address: & Wethouder van Wijckstraat 40, 1107 BR Amsterdam\\
|
|
|
Phone number: & 06-23437025\\
|
|
|
-supervisor: & Dr. R.G. Belleman (UvA)\\
|
|
|
+Supervisor: & Dr. R.G. Belleman (UvA)\\
|
|
|
\end{tabular}}
|
|
|
|
|
|
\begin{document}
|
|
|
|
|
|
\maketitle
|
|
|
+\abstract{
|
|
|
+ % TODO
|
|
|
+}
|
|
|
\pagebreak
|
|
|
\tableofcontents
|
|
|
\pagebreak
|
|
|
@@ -37,265 +40,153 @@ this method of interaction, the programmer needs an abstraction of the raw data
|
|
|
provided by the touch driver of the device. This abstraction exists in several
|
|
|
multi-touch application frameworks like Nokia's
|
|
|
Qt\footnote{\url{http://qt.nokia.com/}}. However, applications that do not use
|
|
|
-these frameworks consequently have no access to multi-touch events.
|
|
|
+these frameworks have no access to their multi-touch events.
|
|
|
|
|
|
% Aanleiding
|
|
|
This problem was observed during an attempt to create a multi-touch
|
|
|
``interactor'' class for the Visualization Toolkit
|
|
|
-(VTK\footnote{\url{http://www.vtk.org/}}).
|
|
|
+(VTK\footnote{\url{http://www.vtk.org/}}). Because VTK provides the application
|
|
|
+framework here, it is undesirable to use an entire framework like QT
|
|
|
+simultaneously only for its multi-touch support.
|
|
|
|
|
|
% Ruw doel
|
|
|
-The goal of this thesis is to define a universal multi-touch event triggering mechanism.
|
|
|
-
|
|
|
-- Om een universeel multi-touch event 'gesture'-detectie te definiëren.
|
|
|
+The goal of this project is to define a universal multi-touch event triggering
|
|
|
+mechanism. To test the definition, a reference implementation is written in
|
|
|
+Python.
|
|
|
|
|
|
% Setting/afbakening
|
|
|
-Dit onderzoek heeft als einddoel een Proof of Concept te maken, namelijk een
|
|
|
-toepassing van de universele multi-touch gesture-detectie in een VTK interactor.
|
|
|
-
|
|
|
-\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.
|
|
|
+To tests multi-touch interaction properly, a multi-touch device is required.
|
|
|
+The University of Amsterdam (UvA) has provided access to a multi-touch table
|
|
|
+from PQlabs. The table uses the TUIO
|
|
|
+protocol\footnote{\url{http://www.tuio.org/}} to communicate touch events.
|
|
|
|
|
|
-Tot slot wordt in hoofdstuk \ref{sec:gerelateerd} een blik geworpen op een
|
|
|
-gerelateerd project.
|
|
|
+The scope of this thesis includes the design of an multi-touch triggering
|
|
|
+mechanism, a reference implementation of this design, and its integration into
|
|
|
+a VTK interactor.
|
|
|
+To be successful, the design should allow for extensions to be added to any
|
|
|
+implementation. The reference implementation is a Proof of Concept with some
|
|
|
+simple touch gestures that are used by the VTK interactor.
|
|
|
|
|
|
-\emph{- Rest v/d hoofdstukken beschrijven}
|
|
|
+ \subsection{Structure of this document}
|
|
|
|
|
|
-\section{Vraagstelling}
|
|
|
-\label{sec:vraagstelling}
|
|
|
+ % TODO
|
|
|
|
|
|
-\subsection{Doelstelling}
|
|
|
+\section{Definition of the problem}
|
|
|
|
|
|
-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}
|
|
|
+The goal of this thesis is to create a multi-touch event triggering mechanism
|
|
|
+for use in a VTK interactor. The design of the mechanism must be universal.
|
|
|
|
|
|
+To design such a mechanism properly, the following questions are relevant:
|
|
|
\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.
|
|
|
-
|
|
|
+ \item What is the input of the mechanism? Different touch drivers have
|
|
|
+ different API's. To be able to support different drivers (which is
|
|
|
+ highly desirable), there should probably be a translation from the
|
|
|
+ driver API to a fixed input format.
|
|
|
+ \item How can extendability be accomplished? The set of supported events
|
|
|
+ should not be limited to a single implementation, but an application
|
|
|
+ should be able to define its own custom events.
|
|
|
+ \item Can events be shared with multiple processes at the same time? For
|
|
|
+ example, a network implementation could run as a service instead of
|
|
|
+ within a single application, triggering events in any application that
|
|
|
+ needs it.
|
|
|
+ \item Is performance an issue? For example, an event loop with rotation
|
|
|
+ detection could swallow up more processing resources than desirable.
|
|
|
\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.
|
|
|
+\section{Hypothesis}
|
|
|
|
|
|
-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.
|
|
|
+To accomplish extendability, an object-oriented approach is an obvious choice.
|
|
|
+% TODO
|
|
|
|
|
|
-\section{Onderzoeksmethodiek}
|
|
|
-\label{sec:methodiek}
|
|
|
+\section{Related work}
|
|
|
|
|
|
-\subsection{Methode}
|
|
|
+% TODO
|
|
|
|
|
|
-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.
|
|
|
+\section{Methods}
|
|
|
|
|
|
-\subsection{Fases}
|
|
|
+% TODO
|
|
|
|
|
|
-Het onderzoek kan worden verdeeld in vier hoofdfases:
|
|
|
+ \subsection{Preliminary inquiries}
|
|
|
|
|
|
-\subsubsection*{Oriëntatiefase}
|
|
|
+ \subsubsection{The TUIO protocol}
|
|
|
|
|
|
-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).
|
|
|
+ % TODO
|
|
|
+ % Vertellen dat het met UDP werkt
|
|
|
+ % wat komt er dan binnen?
|
|
|
+ % wat doet de implementatie ermee?
|
|
|
|
|
|
-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.
|
|
|
+ \subsection{Experiments}
|
|
|
|
|
|
-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.
|
|
|
+ % testimplementatie met taps, rotatie en pinch. Hieruit bleek:
|
|
|
+ % - dat het gebruik van threads soms onvermijdelijk is
|
|
|
+ % - dat er verschillende manieren zijn om bijv. "rotatie" te
|
|
|
+ % detecteren, (en dat daartussen onderscheid moet kunnen worden
|
|
|
+ % gemaakt)
|
|
|
+ % - dat detectie van verschillende soorten gestures moet kunnen
|
|
|
+ % worden gescheiden, anders wordt het een chaos.
|
|
|
+ % -
|
|
|
|
|
|
-Daarnaast moet worden bepaald welke soorten 3D data gaan worden gebruikt, en
|
|
|
-hoe het formaat hiervan eruit ziet.
|
|
|
+ % Tekenprogramma dat de huidige state tekent en waarmee
|
|
|
+ % transformatie kan worden getest
|
|
|
+ % Link naar appendix "supported events"
|
|
|
|
|
|
-\subsubsection*{Ontwerpfase}
|
|
|
+ % Proof of Concept: VTK interactor
|
|
|
|
|
|
-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.
|
|
|
+% -------
|
|
|
+% Results
|
|
|
+% -------
|
|
|
|
|
|
-\subsubsection*{Implementatiefase}
|
|
|
+\section{Server structure}
|
|
|
|
|
|
-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.
|
|
|
+\subsection{Input server}
|
|
|
|
|
|
-\subsubsection*{Verslaglegging}
|
|
|
+% TODO
|
|
|
+% vertaling driver naar point down, move, up
|
|
|
+% TUIO in reference implementation
|
|
|
|
|
|
-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.
|
|
|
+\subsection{Gesture server}
|
|
|
|
|
|
-Tijdens de laatste fase worden de antwoorden op de deelvragen waar nodig
|
|
|
-aangevuld, en worden de overige hoofdstukken geschreven.
|
|
|
+ \subsubsection{Windows}
|
|
|
|
|
|
-\section{Het TUIO-protocol}
|
|
|
+ % TODO
|
|
|
+ % toewijzen even aan deel v/h scherm:
|
|
|
+ % 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''
|
|
|
|
|
|
-\emph{- Vertellen dat het op een UDP poort binnenkomt}\\
|
|
|
-\emph{- wat komt er dan binnen?}\\
|
|
|
-\emph{- wat doet de implementatie ermee?}
|
|
|
+ \subsubsection{Trackers}
|
|
|
|
|
|
-\section{Multitouch-library}
|
|
|
+ % TODO
|
|
|
+ % event binding/triggering
|
|
|
+ % extendability
|
|
|
|
|
|
-\subsection{Threads}
|
|
|
|
|
|
-\emph{- Meerdere threads nodig omdat er 3 loops zijn}\\
|
|
|
-\emph{- Daemon threads voor stabiliteit}
|
|
|
+\section{Reference implementation}
|
|
|
|
|
|
-\subsection{Gebaarherkenning}
|
|
|
+% TODO
|
|
|
+% draw.py
|
|
|
+% VTK interactor
|
|
|
|
|
|
-\subsubsection*{Rotatie}
|
|
|
+\section{Conclusions}
|
|
|
|
|
|
-\emph{- Tangens-vergelijking voor rotatie om centroid}
|
|
|
+% TODO
|
|
|
+% Windows zijn een manier om globale events toe te wijzen aan vensters
|
|
|
+% Trackers zijn een effectieve manier om gebaren te detecteren
|
|
|
+% Trackers zijn uitbreidbaar door object-orientatie
|
|
|
|
|
|
-\subsubsection*{``Pinch''}
|
|
|
+\section{References}
|
|
|
|
|
|
-\emph{- Relatief verschil in afstand tot centroid}
|
|
|
+% TODO: BibTex
|
|
|
|
|
|
-\subsubsection*{Slepen met meerdere vingers}
|
|
|
+\appendix
|
|
|
|
|
|
-\emph{- meerdere vingers in dezelfde richting genereert drag event met beweging van
|
|
|
-centroid}
|
|
|
+\section{Schema of mechanism structure}
|
|
|
+\label{app:schema}
|
|
|
|
|
|
-\subsection{Afvuren ``event''}
|
|
|
+% TODO: "dia"
|
|
|
|
|
|
-\emph{- Event binding uitleggen}\\
|
|
|
-\emph{- Waarom deze manier handig is}\\
|
|
|
-\emph{- Eventueel: beschrijven welk design pattern dit is}
|
|
|
+\section{Supported events in reference implementation}
|
|
|
+\label{app:supported-events}
|
|
|
|
|
|
-\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}
|
|
|
+% TODO
|
|
|
|
|
|
\end{document}
|