<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tobias-Conradi &#187; TUIO</title>
	<atom:link href="http://tobias-conradi.de/index.php/tag/tuio/feed/" rel="self" type="application/rss+xml" />
	<link>http://tobias-conradi.de</link>
	<description></description>
	<lastBuildDate>Fri, 09 Mar 2012 12:54:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>TUIO Mouse Weiterentwicklung</title>
		<link>http://tobias-conradi.de/index.php/2010/08/06/tuio-mouse-weiterentwicklung/</link>
		<comments>http://tobias-conradi.de/index.php/2010/08/06/tuio-mouse-weiterentwicklung/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 14:27:34 +0000</pubDate>
		<dc:creator>toco</dc:creator>
				<category><![CDATA[Multitouch Tisch]]></category>
		<category><![CDATA[TUIO Mouse]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[TUIO]]></category>

		<guid isPermaLink="false">http://tobias-conradi.de/?p=170</guid>
		<description><![CDATA[Nachdem ich durch Abistress und viele Veranstaltungen wie Abistreich, -entlassung und -ball lange keine Zeit mehr hatte an diesem Projekt weiterzuarbeiten habe ich mich jetzt mal wieder drangesetzt die TUIO Mouse weiter zu entwickeln. Ich habe jetzt den Rechtsklick implementiert. Wenn man mit zwei Fingern innerhalb einer einstellbaren Zeit die MT-Fläche berührt hat, wird in [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem ich durch Abistress und viele Veranstaltungen wie Abistreich, -entlassung und -ball lange keine Zeit mehr hatte an diesem Projekt weiterzuarbeiten habe ich mich jetzt mal wieder drangesetzt die TUIO Mouse weiter zu entwickeln.</p>
<p>Ich habe jetzt den Rechtsklick implementiert. Wenn man mit zwei Fingern innerhalb einer einstellbaren Zeit die MT-Fläche berührt hat, wird in der Mitte der beiden Punkte ein Rechtsklick gemacht.</p>
<p>Als nächsten Schritt möchte ich  Scrollen  implementieren.</p>
<p>Noch möchte ich das Programm nicht ganz öffentlich zur Verfügung stellen. Auf <a href="http://tobias-conradi.de/index.php/kontakt/">Anfrage</a> stelle ich es gerne zur Verfügung.</p>
]]></content:encoded>
			<wfw:commentRss>http://tobias-conradi.de/index.php/2010/08/06/tuio-mouse-weiterentwicklung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TUIO Mouse</title>
		<link>http://tobias-conradi.de/index.php/2010/05/23/mttuio-mouse/</link>
		<comments>http://tobias-conradi.de/index.php/2010/05/23/mttuio-mouse/#comments</comments>
		<pubDate>Sun, 23 May 2010 14:10:56 +0000</pubDate>
		<dc:creator>toco</dc:creator>
				<category><![CDATA[Multitouch Tisch]]></category>
		<category><![CDATA[TUIO Mouse]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[TUIO]]></category>
		<category><![CDATA[WS-Touch]]></category>

		<guid isPermaLink="false">http://tobias-conradi.de/?p=100</guid>
		<description><![CDATA[Um mich erstmal wieder in Cocoa einzufinden und in das Framework einzuarbeiten habe ich mir vorgenommen ein kleines, einfaches Projekt anzugehen. Mir kam die Idee, dass es doch ganz gut wäre, wenn man mit dem Tisch auch ganz normal im Finder navigieren kann. Also wäre eine &#8220;MT-Maus&#8221; ganz gut. Nachdem ich ein wenig im Internet [...]]]></description>
			<content:encoded><![CDATA[<p>Um mich erstmal wieder in Cocoa einzufinden und in das Framework einzuarbeiten habe ich mir vorgenommen ein kleines, einfaches Projekt anzugehen. Mir kam die Idee, dass es doch ganz gut wäre, wenn man mit dem Tisch auch ganz normal im Finder navigieren kann. Also wäre eine &#8220;MT-Maus&#8221; ganz gut. Nachdem ich ein wenig im Internet nach bisherigen Lösungen gesucht hatte und keine zufrieden stellende Lösung gefunden habe, war für mich klar, dass ich versuchen werde eine gute &#8220;MT-Maus&#8221; für den MT-Tisch zu entwickeln.</p>
<p><span id="more-100"></span>Das Framework von Touché ist recht einfach aufgebaut. Nachdem man den TFTrackingClient instanziert hat, setzt man einen Delegate der das TFTrackingClientDelegate-Protokoll unterstützen muss.</p>
<p>Um einen Mausklick zu simulieren gibt es eine sehr einfache CoreGraphics-Funktion:</p>
<pre class="brush: objc; title: ; wrap-lines: false; notranslate">
CGPoint hit = CGPointMake(450, 345);
CGEventRef mouseDownEv = CGEventCreateMouseEvent (
						  NULL, //CGEventSourceRef source
						  kCGEventLeftMouseDown, //CGEventType mouseType
										//kCGEventNull
										//kCGEventMouseMoved
										//kCGEventLeftMouseDragged
										//kCGEventLeftMouseDown
										//kCGEventLeftMouseUp
						  hit, //CGPoint mouseCursorPosition
						  kCGMouseButtonLeft //CGMouseButton mouseButton
										//kCGMouseButtonLeft
										//kCGMouseButtonRight
										//kCGMouseButtonCenter
						  );
CGEventPost(kCGHIDEventTap, mouseDownEv);
</pre>
<p>Wenn jetzt an der gleichen Position ein MouseUp-Event geschickt wird, ist es ein einfacher Links-Klick.</p>
<pre class="brush: objc; title: ; notranslate">
CGPoint hit = CGPointMake(450, 345);
CGEventRef mouseUpEv = CGEventCreateMouseEvent (NULL,kCGEventLeftMouseUp,hit,kCGMouseButtonLeft);
CGEventPost (kCGHIDEventTap, mouseUpEv );
</pre>
<p>Wird aber nach dem MouseDown-Event kein MouseUp-Event sondern ein MouseDragged-Event geschickt, kann man mit der Maus z.B. Fenster ziehen.</p>
<pre class="brush: objc; title: ; notranslate">
CGPoint hit = CGPointMake(512, 412);
CGEventRef mouseMovedEv = CGEventCreateMouseEvent (NULL,kCGEventLeftMouseDragged,hit,kCGMouseButtonLeft);
CGEventPost (kCGHIDEventTap, mouseMovedEv);
</pre>
<p>Mit den drei Mousevents sollte man erst einmal ausreichend im Finder navigieren können.</p>
<p>Während des Programmierens und Testens habe ich gemerkt, dass Touché leider nicht 100% zuverlässig läuft, auf jeden Fall hat die Wii-Remote-Implementation noch einige Fehler. Deshalb habe ich mich entschlossen die Abhängigkeit von Touché zu verringern und auf ein generelles TUIO-Framework umzusteigen.</p>
<p><a href="http://fieryferret.com/" target="_blank">Bridger Maxwell</a> hat ein <a href="http://code.google.com/p/tuioframework/" target="_blank">ObjC TUIO-Framework</a> geschrieben auf das ich schonmal im Zusammenhang mit dem <a href="http://tobias-conradi.de/index.php/tag/wiimote-whiteboard/">Wiimote Whiteboard</a> gestoßen bin.</p>
<p>Ich habe die Maus noch mal neu angefangen und sie mit dem TUIO-Framework aufgebaut. Daher auch der Name &#8220;TUIO Mouse&#8221;.</p>
<p>Ich habe &#8220;TUIO Mouse&#8221; als reines Kommandozeilen-Tool geschrieben, es kann aus dem Terminal gestartet werden, oder was meine eigentliche Idee ist, als LaunchAgent im Hintergrund laufen sobald sich der Benutzer anmeldet.<br />
Damit man trotzdem noch ein paar Sachen konfigurieren kann habe ich beschlossen sie mit dem Default-System von OS-X zu speichern. So kann ich auch relativ einfach von einem anderen (Konfigurations-)Programm auf die Einstellungen von &#8220;TUIO Mouse&#8221; zugreifen.</p>
<p>Leider hatte ich anfangs Probleme auf die Defaults-Domain zuzugreifen, da ein Kommandozeilen-Tool kein Bundle ist und auch kein Bundle-Identifier hat, der aber von dem NSUserDefaults-Objekt als Standard-Domain gewählt wird. Mit einiger Bastelei und der Hilfe eines Bekannten habe ich es dann doch geschafft auf die &#8220;fremde&#8221; Domain zuzugreifen ohne auf CFPreferences zugreifen zu müssen.<br />
Durch folgenden Code bekommt man ein NSDictionary mit den momentanen Defaults aus der angegebenen Domain.</p>
<pre class="brush: objc; light: true; title: ; notranslate">
NSDictionary *currentDefaults = [userDefaults persistentDomainForName:kDomainName];
</pre>
<p>Nachdem man das Dictionary bearbeitet hat kann man die Defaults der Domain wieder überschreiben. Leider werden alle Defaults, die nicht im Dictionary vorhanden sind überschrieben!</p>
<pre class="brush: objc; light: true; title: ; notranslate">
[userDefaults setPersistentDomain:newDefaults forName:kDomainName];
</pre>
]]></content:encoded>
			<wfw:commentRss>http://tobias-conradi.de/index.php/2010/05/23/mttuio-mouse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Planung</title>
		<link>http://tobias-conradi.de/index.php/2010/05/23/software-planung/</link>
		<comments>http://tobias-conradi.de/index.php/2010/05/23/software-planung/#comments</comments>
		<pubDate>Sun, 23 May 2010 11:05:19 +0000</pubDate>
		<dc:creator>toco</dc:creator>
				<category><![CDATA[Multitouch Tisch]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[TUIO]]></category>
		<category><![CDATA[WS-Touch]]></category>

		<guid isPermaLink="false">http://tobias-conradi.de/?p=97</guid>
		<description><![CDATA[Wenn die Hardware funktioniert werden Berührungen der Tischoberfläche auf dem Bild der Webcam als weiße Blobs sichtbar sein. Diese Blobs müssen von einer Software erkannt und verarbeitet werden. In dem Wiki der NUI Group bin ich auf eine Liste mit Frameworks, Software und Libraries zum schreiben von Multitouch(MT)-Programmen gestoßen. Für mich ist klar, dass mein [...]]]></description>
			<content:encoded><![CDATA[<p>Wenn die Hardware funktioniert werden Berührungen der Tischoberfläche auf dem Bild der Webcam als weiße Blobs sichtbar sein. Diese Blobs müssen von einer Software erkannt und verarbeitet werden.</p>
<p>In dem Wiki der <a href="http://www.nuigroup.com/" target="_blank">NUI Group</a> bin ich auf eine <a href="http://wiki.nuigroup.com/Applications_and_libraries" target="_blank">Liste</a> mit Frameworks, Software und Libraries zum schreiben von Multitouch(MT)-Programmen gestoßen. Für mich ist klar, dass mein Endprodukt auf einem Mac laufen soll und ich am liebsten Cocoa programmieren möchte um mich weiter in die Sprache einzuarbeiten. Das in der Liste aufgeführte <a href="http://gkaindl.com/software/touche" target="_blank">Touché</a> von Georg Kaindl macht einen recht ausgereiften Eindruck, ist komplett in Cocoa geschrieben, bringt ein eigenes Framework zur Entwicklung von eigener Software mit und die Beispielprogramme sind eine gute Basis um sich in das Framework und überhaupt MT-Programme einzuarbeiten.</p>
<p>Sehr schön finde ich auch, dass man auch eine Wii-Remote als Input benutzen kann und ich so auch meine Programme testen kann bevor der Tisch fertig gebaut ist. Touché kann auch <a href="http://tuio.org/" target="_blank">TUIO</a>-Nachrichten ausgeben und ist so auch als Tracker für andere MT-Programme geeignet.</p>
<p>Wie schon beschrieben soll man mit Berührungen auf dem Tisch Pfade zeichnen können, die an die Roboter übermittelt werden und dann von den Robotern abgefahren werden. Die Roboter sollen während der Fahrt aber Hindernissen ausweichen und so ist der gefahrene Pfad u.U. anders als der gezeichnete. Der gefahrene Pfad soll also vom Roboter an den Tisch übertragen und dort dargestellt werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://tobias-conradi.de/index.php/2010/05/23/software-planung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

