{"id":1341,"date":"2011-07-28T16:03:14","date_gmt":"2011-07-28T16:03:14","guid":{"rendered":"http:\/\/www.lukas-kalinowski.com\/Homepage\/?page_id=1341"},"modified":"2021-01-19T14:07:57","modified_gmt":"2021-01-19T14:07:57","slug":"interaktive-mediensysteme-ss11","status":"publish","type":"page","link":"http:\/\/www.lukas-kalinowski.com\/Homepage\/interaktive-mediensysteme-ss11\/","title":{"rendered":"Interaktive Mediensysteme SS11"},"content":{"rendered":"<p><script type=\"text\/javascript\" src=\"swfobject.js\">\n            swfobject.registerObject(\"csSWF\", \"9.0.115\", \"expressInstall.swf\");\n<\/script><\/p>\n<style type=\"text\/css\">\n            #media\n            {\n                margin-top: 40px;\n            }\n            #noUpdate\n            {\n                margin: 0 auto;\n                font-family:Arial, Helvetica, sans-serif;\n                font-size: x-small;\n                color: #cccccc;\n                text-align: left;\n                width: 210px; \n                height: 200px;\t\n                padding: 40px;\n            }\n<\/style>\n<h2><span style=\"color: #3282cd;\">Anwendung zur Veranstaltung Interaktive Mediensysteme<\/span><\/h2>\n<p>&nbsp;<\/p>\n<h3><span style=\"color: #3282cd;\">Beschreibung<\/span><\/h3>\n<p style=\"text-align: justify;\">Zusammen in einem Team wurde in diesem Projekt eine hochinteraktive und verteilte Anwendung entwickelt. Es wurde ein 3D-Zauberspruchszenario mit Hilfe und Erweiterung der OgreBasisArchitektur erstellt, indem der Benutzer von einem Helferlin in einem Zauberland gef\u00fchrt wird. Der Benutzer steuert den Spieler mit Hilfe des Wii-Kontrollers. Zauberspr\u00fcche werden \u00fcber eine Gestenerkennung und Spracherkennung validiert und ausgef\u00fchrt. Das Helferlein gibt dem Benutzer Tips und reagiert auf ihn dynamisch.<\/p>\n<p>&nbsp;<\/p>\n<h3><span style=\"color: #3282cd;\">Demonstration:<\/span><\/h3>\n<div id=\"media\">\n<iframe loading=\"lazy\" width=\"961\" height=\"721\" src=\"https:\/\/www.youtube.com\/embed\/xHwKmsf4Bnk\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n        <\/div>\n<h3><span style=\"color: #3282cd;\">Architektur des Projektes:<\/span><\/h3>\n<p><span style=\"color: #3282cd;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" title=\"Architektur der Anwendung\" src=\"http:\/\/www.lukas-kalinowski.com\/Homepage\/wp-content\/uploads\/InteraktivesMediensystem_Architektur.png\" alt=\"\" width=\"618\" height=\"510\" \/><br \/>\n<\/span><\/p>\n<h3><span style=\"color: #3282cd;\">Beschreibung des Ablaufs<\/span><\/h3>\n<p style=\"text-align: justify;\">Die Anwendung ist auf zwei Computern verteilt, da es bei einem Rechner warscheinlich zu einer \u00dcberlastung von Rechenkapazit\u00e4ten k\u00e4me. Beide Rechner sind \u00fcber LAN miteinander verkn\u00fcpft. Der Benutzer muss zun\u00e4chst den Computer A mit der Anwendung starten. Die Steuerung des Spieler erfolgt \u00fcber den Wii-Controller, dieser muss in der linken Hand gehalten werden, da das rechte Handgelenk von der Kinect zur Gestenerkennung ben\u00f6tigt wird. Beim Laden des Szenarios wird der Wii-Controller und die Kinect erkannt. Anschlie\u00dfend wartet die Anwendung auf eine Verbindung zum Computer B. Der Benutzer muss zuerst auf dem Computer B zweimal DialogOS mit einem Szenario zur Spracheingabe und Sprachsynthese starten. Zuletzt wird eine Java-Client Anwendung gestartet, welche zugleich den SceneMaker hochf\u00e4hrt. Wenn eine Verbindung da ist, erfolgt in der 3D-Simulation zun\u00e4chst eine kurze Einf\u00fchrung in das Programm. Die Anwendung sendet Kommandos \u00fcber den Server an den Java-Client. Dieser leitet die Kommandos an den SceneMaker. Im SceneMaker wird die Logik und das Verhalten des Helferleins f\u00fcr die Simulation gesteuert. Der SceneMaker leitet Kommandos weiter an DialogOS zur Sprachsynthese, damit das Helferlein das Intro spricht und zugleich leitet es ein Kommandos an die Anwendung, wann eine &#8222;Sprechanimation&#8220; vom Helferlein ausgef\u00fchrt werden soll und wann der Text zu ende gesprochen wurde. Nun kann der Spieler mittels des Wii-Controllers den Spieler aus der &#8222;Ich-Perspektive&#8220; steuern. Das Helferlein befindet sich immer in der n\u00e4he zum Spieler und schwebt in der Luft. Wenn dem Helferlein langweilig wird, macht es sich durch lustige Ger\u00e4usche wie zum Beispiel &#8222;G\u00e4\u00e4hn&#8220; bemerkbar. Der Spieler muss zun\u00e4chst Zauberspr\u00fcche erlernen. Dazu muss er drei Steinrunen anfixieren. Daraufhin wird \u00fcber einen Schweif das entsprechende Symbol vorgezeichnet. W\u00e4hrend des Spielverlaufs wechseln sich Tag und Nacht ab. Die folgenden Zauberspr\u00fcche wurden bisher umgesetzt:<\/p>\n<ul>\n<li>Helferlein zeigen<\/li>\n<li>Helferlein verstecken<\/li>\n<li>Reducio: B\u00e4ume verkleinern; Geste: Kreis<\/li>\n<li>Mobilcorpus: Schwerkraft umkehren; Geste: X<\/li>\n<li>Demobilcorpus: Schwerkraft normalisieren; Geste: L<\/li>\n<li>multo die: von Nacht zum Tag simulieren<\/li>\n<li>multa nocte: von Tag zu Nacht<\/li>\n<li>Aspectus: Kisten erscheinen lassen; Geste: Dreieck<\/li>\n<li>Alohomora: verschlossene T\u00fcren knacken; Geste: Mondsichel<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Um in der Welt weiter zu kommen muss er zun\u00e4chst mit Hilfe eines Zauberspruchs B\u00e4ume vor einem Zugang verkleinern damit er passieren kann. Dazu h\u00e4lt er die A-Taste des Wii-Controllers und f\u00fchrt mit der rechten Hand eine Kreisbewegung durch, dabei wird ein Schweif nachgezogen um die Geste besser zu visualisieren. Danach l\u00e4sst er die A-Taste los. Dies veranlasst eine Generierung eines bin\u00e4res Bildes  mit den Bildinformationen der Geste. Das Bild wird an OpenCV weitergeleitet. OpenCV f\u00fchrt eine Bildererkennung durch und liefert das Resultat. Anschlie\u00dfend spricht der Benutzer den Zauberspruch &#8222;Reducio&#8220; in ein Mikrophon. DialogOS versucht den Spruch zu erkennen und liefert das Resultat an den SceneMaker. Der SceneMaker wiederum f\u00fchrt die Logik aus und schickt ein Kommando an die Anwendung. War der Zauberspruch erfolgreich wird in der Simulation ein Baum so lange verkleinert, bis er nicht mehr sichtbar ist. Zugleich wird ein Strompartikeleffekt ausgef\u00fchrt und eine passende Audiodatei \u00fcber OpenAL abgespielt. Danach erfolgt ein Feedback vom Helferlein. Die resultierende Scene wird in Echtzeit \u00fcber die Ogre3D-Engine gerendert und auf dem Bildschirm ausgegeben.<\/p>\n<p>&nbsp;<\/p>\n<h3><span style=\"color: #3282cd;\">Beschreibung der Komponenten und des Ablaufs<\/span><\/h3>\n<h4><span style=\"color: #3282cd;\">OgreBasisArchitektur<\/span><\/h3>\n<p style=\"text-align: justify;\">Eine Beschreibung kann <a href=\"http:\/\/www.lukas-kalinowski.com\/Homepage\/?page_id=332\" target=\"_blank\">hier<\/a> nachgelesen werden. Die OgreBasisArchitektur wurde durch viele Funktionalit\u00e4ten und Komponenten erweitert. Zu diesen z\u00e4hlen:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.ogre3d.org\/tikiwiki\/RT+Shader+System&#038;structure=Development\" target=\"_blank\">RT Shader System<\/a>: Neuartiges Echtzeitshadersystem von Ogre zur effizienten Berechnung von Normalmaps und Parallel-Split Shadow Mapping (Abk. PSSM)<\/li>\n<li>KinectManager: Zur Erhaltung von Gestenkoordinaten<\/li>\n<li><a href=\"http:\/\/www.fxpression.com\/\" target=\"_blank\">ParticleUniverse<\/a>: F\u00fcr eindrucksvolle Partikeleffekte<\/li>\n<\/ul>\n<h4><span style=\"color: #3282cd;\">Ogitor und Exportierung<\/span><\/h3>\n<p style=\"text-align: justify;\">Der <a href=\"http:\/\/www.ogitor.org\/HomePage\" target=\"_blank\">(Ogitor)<\/a> ist ein frei verf\u00fcgbarer Leveleditor um den Design von 3D-Umgebungen zu vereinfachen.  Mit ihm wurde eine 3D-Welt erstellt und im XML-Format exportiert. Diese wird \u00fcber die OgreBasisArchitektur in der Interaktive Mediensysteme Anwendung geladen. Au\u00dferdem sind in der XML-Datei Informationen f\u00fcr physikalische Effekte und Kollisionsk\u00f6rper enthalten. Mittels der NewtonDynamics-PhysikEngine werden der Anwendung Physik eingehaucht.<\/p>\n<h4><span style=\"color: #3282cd;\">Interaktive Mediensysteme Anwendung<\/span><\/h3>\n<p style=\"text-align: justify;\">Es wurde ein Simulationszustand entwickelt der nach den Men\u00fceinstellungen geladen wird. In dieser Komponente erfolgt die Berechnung der Benutzersteuerung, Logik, Physik, Audio und Rendern der Szene. Der Benutzer wird \u00fcber den Wii-Controller physikalisch gesteuert. Er kann sich frei bewegen und Sprungaktionen ausf\u00fchren. Zudem wird ein Helferlein immer in der N\u00e4he des Spieler dynamisch bewegt und animiert. Der Spieler kann Runen fixieren. Dabei wird ein Raycast auf Polygonebene ausgef\u00fchrt und wenn die Rune erkannt wurde, wird f\u00fcr das entsprechende Symbol auf der Rune ein Schweif ausgef\u00fchrt. Das Problem beim Schweif war, dass dieser ein 3D-Objekt ist, er jedoch im 2D-Maus Koordinatensystem gezeichnet werden soll. Daher musste eine Funktion geschrieben werden, welche abh\u00e4ngig von der Spielerposition und Orientierung \u00fcber ein Kameraray Projektion auf eine unsichtbare Plane die 3D-Koordinaten in ein 2D-Koordinatensystem umwandelt. Der Spieler kann wie zuvor beschrieben \u00fcber Sprache und Gestik Zauberspr\u00fcche ausf\u00fchren. Er kann somit physikalische B\u00e4ume verkleinern, sodass die Kollisionsh\u00fclle irgendwann entfernt wird. Des Weiteren kann er verschlossene T\u00fcren knacken wenn er sich vor eine T\u00fcr befindet. Die T\u00fcren sind \u00fcber Joints an S\u00e4ulen gekn\u00fcpft. Wenn der Zauberspruch erfolgreich war, kann der Spieler gegen die T\u00fcr laufen und diese wird physikalisch aufgemacht. Au\u00dferdem befindet sich eine Rune in einem Turm an der Decke. Daher muss der Spieler einen Zauberspruch ausf\u00fchren, der die Schwerkraft umkehrt. Der Spieler wird an die Decke bef\u00f6rdert und gedreht, sodass er sich entlang der Decke bewegen kann. Schwerkraft normalisieren l\u00e4sst den Spieler wieder auf den Boden knallen. Mit dem Zauberspruch &#8222;Aspectus&#8220; wird eine Kiste physikalisch generiert und f\u00e4llt vor dem Spieler auf den Boden. Er kann diese nutzen um an h\u00f6her gelegene Stellen zu gelangen. Zu Sch\u00f6nheitszwecken kann der Spieler, wenn es in der Welt dunkel wird einen Zauberspruch ausf\u00fchren, der die Nacht beschleunigt bis der n\u00e4chste Tag heranbricht. Beim Erreichen der Tageszeit 12 Uhr, verliert der Zauberspruch seine Wirkung. Zudem werden entsprechende Partikeleffekte und Sounds abgespielt. Das Helferlein wird \u00fcber den Animationsblender der OgreBasisArchitektur animiert. Somit kann zwischen verschiedenen Animationen nahtlos \u00fcbergeblendet werden. Der Simulationszustand ist auch eine Sammelstelle f\u00fcr Kommandos die von au\u00dferhalb \u00fcber den SocketServer kommen.<\/p>\n<h4><span style=\"color: #3282cd;\">DialogOS<\/span><\/h3>\n<p style=\"text-align: justify;\">Bei <a href=\"http:\/\/www.dialogos.org\/\" target=\"_blank\">DialogOS<\/a> handelt es sich um eine m\u00e4chtige Software die in der Lage ist Spracheingaben die \u00fcber ein Mikrophon vom Benutzer geschickt werden, auszuwerten und Sprache zu synthetisieren und \u00fcber die Lautsprecher auszugeben. Vorher werden Variablen in DialogOS erstellt. Wenn der Benutzer ein Wort spricht, versucht DialogOS zu erkennen ob eine Variable mit dem Wort \u00fcbereinstimmt. In den meisten F\u00e4llen liefert es korrekte Ergebnisse. Es besteht auch die M\u00f6glichkeit Variablen \u00fcber einen &#8222;Rendeveuz Server&#8220; an einen Java Client weiter zu leiten um damit arbeiten zu k\u00f6nnen. In einer Szene zur Spracheingabe wurde die Erkennung f\u00fcr gesprochene Zauberspr\u00fcche erstellt. In einer anderen Szene wurden Ma\u00dfnahmen getroffen um eine Sprachsynthese zu erm\u00f6glichen. Dazu bekommt DialogOS von au\u00dferhalb ein Kommando und eine synthetische Sprecherin (Steffi) spricht den Inhalt des Kommandos. Es soll so aussehen, alsob das Helferlein den Text spricht.<\/p>\n<h4><span style=\"color: #3282cd;\">SceneMaker<\/span><\/h3>\n<p style=\"text-align: justify;\">\nDer <a href=\"http:\/\/www.dfki.de\/~gebhard\/\" target=\"_blank\">SceneMaker<\/a> ist ein Forschungprojekt am DFKI in Saarbr\u00fccken. Es dient zur Modellierung von komplexer Logik. Der Benutzer kann Szenenknoten, \u00dcberg\u00e4nge, Bedingungen, paralelle Abl\u00e4ufe usw. erstellen. Er kann Variablen anlegen und das Logik-Szenario in Echtzeit abspielen indem er Variablen \u00e4ndert und den resultierenden Knotenablauf visualisiert bekommt. Im SceneMaker wird das Verhaltens des Helferleins gesteuert. Dar\u00fcberhinaus werden Zauberspr\u00fcche behandelt, sowie Kommandos von der Interaktiven Anwendung in beide Richtungen.<\/p>\n<h4><span style=\"color: #3282cd;\">Java Clients<\/span><\/h3>\n<p style=\"text-align: justify;\">Diese in Java geschriebenen Clients k\u00fcmmern sich um die Weiterleitung von Kommandos an DialogOS, den SceneMaker und die Simulationsanwendung. Es wurden mehrere Clients erstellt, die \u00fcber LAN mit dem ServerSocket der Simulationsanwendung verbunden werden. Zudem wurde eine GUI erstellt, die alle augenblicklich ankommenden Kommandos darstellt. Es wurde ein SocketClient erstellt, der direkt mit der Simulationsanwendung in beide Richtungen kommuniziert. Der SocketClient leitet Kommandos an den SceneMakerClient weiter. Dieser wiederum leitet die Kommandos an den SceneMaker weiter. Au\u00dferdem empf\u00e4ngt der SceneMakerClient Kommandos von DialogOS (Zauberspr\u00fcche) und leitet vom SceneMaker geschickte Kommandos weiter \u00fcber einen SpeechOutputClient an DialogOS, damit diese synthetisiert werden k\u00f6nnen. Damit das Helferlein in der 3D-Szene wei\u00df wann eine Sprechanimation vor\u00fcber ist. Wird \u00fcber den SpeechOutputClient eine Variable gesetzt nachdem ein Text von der Steffi fertig gesprochen wurde.<\/p>\n<h4><span style=\"color: #3282cd;\">OpenCV<\/span><\/h3>\n<p style=\"text-align: justify;\">\n<a href=\"http:\/\/opencv.willowgarage.com\/wiki\/\" target=\"_blank\">OpenCV<\/a> ist eine Bibliothek, die \u00fcber Algorithmen zur effizienten 2D-Bilderkennung enth\u00e4lt. Beim Dr\u00fccken der A-Taste des Wii-Controllers wird ein bin\u00e4res Bild gezeichnet. Beim Loslassen der Taste, wird es abgespeichert und an die OpenCV Bibliothek weitergeleitet. Diese f\u00fchrt die Bilderkennung durch. Zuvor wurden mehrere Trainingsdaten in Form von Bildern erstellt. Es wurde beispielsweise 30x ein Kreis unterschiedlich gezeichnet. OpenCV nutzt diese Trainingsdaten zur schneller Bilderkennung.<\/p>\n<h4><span style=\"color: #3282cd;\">KinectSDK<\/span><\/h3>\n<p style=\"text-align: justify;\">\nBei dem <a href=\"http:\/\/research.microsoft.com\/en-us\/um\/redmond\/projects\/kinectsdk\/\" target=\"_blank\">KinectSDK<\/a> handelt es sich um eine Bibliothek, die von Microsoft freigegeben wurde um 3D-Punkte aus Gesten zu erhalten. Zum KinectSDK wurde eine Kinect Sensorleiste gekauft. Sie besteht neben einem 3D-Mikrophon, das nicht verwendet wird, aus einer Tiefensensor- und Farbkamera. Die Kamera erkennt 26 Skelettpunkte eines Benutzers. Es wurde eine Beispielanwendung so adaptiert, dass nur Daten des Skelettpunkt des rechten Handgelenks erhalten werden. Weiterer Overhead zum Darstellen der Bilder und des Skeletts wurde aus Performanzgr\u00fcnden entfernt. In der Simulationsanwendung, wird Halten der A-Taste des Wii-Controllers, der Schweif an die Daten vom KinectManager gemappt und zudem aus den entsprechenden Koordinaten ein Bild gezeichnet.<\/p>\n<h4><span style=\"color: #3282cd;\">3D-Modelle und Animation in Cinema4D<\/span><\/h3>\n<p style=\"text-align: justify;\">\nMit dem 3D-Modellierungs und Animationsprogramm <a href=\"http:\/\/www.maxon.net\/de\/home.html\" target=\"_blank\">Cinema4D<\/a> wurden verschiedene 3D-Modelle wie zum Bespiel das Helferlein, eine T\u00fcr, die Runen usw. modelliert. F\u00fcr das Helferlein wurden zudem unterschiedliche Animationen erstellt. Alle Modelle wurden \u00fcber ein Plugin <a href=\"http:\/\/skinprops.com\/iogre.php\" target=\"_blank\">(iOgre)<\/a> in ein Mesh-Format mit einer Skeleton-Datei f\u00fcr die Animationen und Materialdateien f\u00fcr Texturen und Shader exportiert.<\/p>\n<h3><span style=\"color: #3282cd;\">Screenshots:<\/span><\/h3>\n<div align=\"center\">\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" title=\"p1_2\" src=\"http:\/\/www.lukas-kalinowski.com\/Homepage\/wp-content\/uploads\/InteraktiveMediensysteme1.jpg\" alt=\"\" width=\"996\" height=\"679\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" title=\"p1_3\" src=\"http:\/\/www.lukas-kalinowski.com\/Homepage\/wp-content\/uploads\/InteraktiveMediensysteme2.jpg\" alt=\"\" width=\"996\" height=\"679\" \/>\n<\/div>\n<p><a href=\"http:\/\/www.lukas-kalinowski.com\/Homepage\/?page_id=23\" target=\"_self\">zur\u00fcck<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Anwendung zur Veranstaltung Interaktive Mediensysteme &nbsp; Beschreibung Zusammen in einem Team wurde in diesem Projekt eine hochinteraktive und verteilte Anwendung entwickelt. Es wurde ein 3D-Zauberspruchszenario mit Hilfe und Erweiterung der OgreBasisArchitektur erstellt, indem der Benutzer von einem Helferlin in einem &hellip; <a href=\"http:\/\/www.lukas-kalinowski.com\/Homepage\/interaktive-mediensysteme-ss11\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"onecolumn-page.php","meta":{"ngg_post_thumbnail":0,"footnotes":""},"class_list":["post-1341","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/www.lukas-kalinowski.com\/Homepage\/wp-json\/wp\/v2\/pages\/1341","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.lukas-kalinowski.com\/Homepage\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/www.lukas-kalinowski.com\/Homepage\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/www.lukas-kalinowski.com\/Homepage\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.lukas-kalinowski.com\/Homepage\/wp-json\/wp\/v2\/comments?post=1341"}],"version-history":[{"count":28,"href":"http:\/\/www.lukas-kalinowski.com\/Homepage\/wp-json\/wp\/v2\/pages\/1341\/revisions"}],"predecessor-version":[{"id":2395,"href":"http:\/\/www.lukas-kalinowski.com\/Homepage\/wp-json\/wp\/v2\/pages\/1341\/revisions\/2395"}],"wp:attachment":[{"href":"http:\/\/www.lukas-kalinowski.com\/Homepage\/wp-json\/wp\/v2\/media?parent=1341"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}