SlideShare ist ein Scribd-Unternehmen logo
Gymnasium Weilheim Abiturjahrgang 2015
S E M I N A R A R B E I T
Rahmenthema des Wissenschaftspropädeutischen Seminars:
Programmierung eines Abenteuerspiels
Leitfach: Informatik
Thema der Arbeit:
Charakteranimation durch Motion Capture
Verfasser/in:
Finn Süberkrüb
Kursleiter/in:
Abgabetermin: 4. November 2014
Bewertung Punkte Punkte
schriftliche Arbeit3 - x 3
Abschlusspräsentation2 x 1
Summe:
Gesamtleistung nach § 61 (7) GSO = Summe : 2 (gerundet)
Datum und Unterschrift der Kursleiterin bzw. des Kursleiters
Charakteranimation durch Motion Capture
	
	 	
2
Inhaltsangabe
1. Einleitung 4
2. Der Kinect Sensor 5
2.1 Technische Daten 5
2.2 Array-Mikrofone 5
2.3 Farbkamera 5
2.4 Beschleunigungssensor 5
2.5 Tiefensensor 6
2.6 Chip (PS1080) 6
3. Dreidimensionale Erfassung der Kinect 6
3.1 Messvorgang 6
3.2 Alternativen 7
4. RAW Daten Analyse 8
4.1 Verbindung 9
4.2 Kanten Analyse 9
• Tiefendaten 9
• Der Canny-Algorithmus 9
• Vorprozessierung 9
• Kantenerkennung 10
4.3 Erkennungsmuster 10
4.4 Distance Transform Pyramid 11
• Auflösungspyramide 11
• Entfernungsbilder 11
• Übereinstimmung 11
4.5 NI mate 12
Charakteranimation durch Motion Capture
	
	 	
3
5. 3D Charakter 12
5.1 Vorbereitung 12
5.2 Das Mesch 13
• Boxmodeling 13
• Polygon Modeling 13
• 3D Scanner 13
• Modell Generatoren 13
5.3 Rigging 14
5.4 Skinning 14
5.5 Kinect Schnittstelle 14
6. Animation 15
6.1 Vorbereitung 15
6.2 Aufnahme 16
6.3 Nachbearbeitung 16
7. Import in die jMonkeyEngine 17
8. Fazit 17
9. Literaturverzeichnis 19
Bildnachweis 20
Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)
Charakteranimation durch Motion Capture
	
	 	
2
1. Einleitung
Ein Spiel zu entwickeln heißt, eine Vielzahl verschiedener Aufgaben zu bewältigen.
Von der Spielidee bis zum Endgegner ist es ein langer Weg. Zum einen wird eine
Geschichte aufgebaut und es werden Welten gestaltet. Zum anderen muss das Spiel
noch eine gewisse Logik besitzen. Ganz selbstverständliche Dinge, dass ein Stein
auf den Boden fällt oder ein Mensch gehen kann, müssen dem Programm wie einem
Kind erklärt werden.
Die folgende Seminararbeit beschreibt die Animation von Charakteren mit Hilfe des
Kinect Sensors von Microsoft, welche anschließend in die jMonkeyEngine
eingebunden werden.
Da eine realistische Animation von Bewegungen mindestens genau so viel Zeit in
Anspruch nimmt, wie das eigentliche Gestalten der Figur, habe ich mich mit
Möglichkeiten beschäftigt, diese Arbeit zu beschleunigen. Motion Capturing zur
Animation von 3D Charakteren ist keine Neuheit. In großen Animationsfilmen wird
diese Technik schon sehr viel eingesetzt. Jedoch sind die dort verwendeten Systeme
wegen der Kosten und der benötigten Rechenleistung nur für professionelle
Anwendungen geeignet. Vor einigen Jahren hat Microsoft eine Spielekonsole mit
dem Kinect Sensor zur dreidimensionalen Erfassung des Spielers auf den Markt
gebracht. Viele Hacker haben Kinect für neue Anwendungen erschlossen. Sie kann
inzwischen auch zur Animation am Computer genutzt werden.
Im Folgenden gehe ich auf Kinect und die darin eingesetzten Sensoren, die
dreidimensionale Erfassung, Bildanalyse, die Steuerung und Animation von Objekten
in Blender und den anschließenden Einsatz in der jMonkeyEngine ein.
Charakteranimation durch Motion Capture
	
	 	
3
2. Der Kinect Sensor
Microsoft Kinect ist ein Sensor der
ursprünglich zur Steuerung der
Spielekonsole Xbox 360 entwickelt
wurde. Microsoft hat den Sensor
zusammen mit der Firma PrimeSense, einem Entwicklungsunternehmen für drei-
dimensionale Erkennungssysteme entwickelt.
2.1 Technische Daten
Kinect beinhaltet ein Mikrofon Array, eine Farbkamera, einen 3-Achsen
Beschleunigungs- und einen Tiefensensor.
2.2 Array-Mikrofone
Kinect ist mit vier Mikrofonen ausgestattet, die im Sensor verteilt sind. Durch
Laufzeitdifferenzen der Töne vom Sprecher zu den Mikrofonen kann ermittelt
werden, aus welcher Richtung der Ton kommt.
2.3 Farbkamera
In der integrierten Farbkamera arbeitet ein Bayer-Sensor mit einer reellen Auflösung
von 640x480 Pixeln mit 30 fps ([1], Seite 38). Theoretisch wäre eine Auflösung bis zu
1280x1024 Pixel mit 12 fps möglich. Die meisten vorhandenen Treiber für den Kinect
Sensor liefern aber nur die geringere Auflösung. Die mit der Kamera erfassten
Farbbilder können später genutzt werden, um die entstandenen 3D Objekte mit
Texturen zu versehen.
2.4 3-Achsen Beschleunigungssensor - (Gyrosensor)
Im Fuß der Kinect befindet sich ein Servomotor, der die Sensorleiste bei Bedarf um
ca. 27° vertikal schwenken kann. [10, Seite 14] Dadurch wird das Sichtfeld der
Kameras zusätzlich erweitert. Der 3-Achsen Beschleunigungssensor wird genutzt,
um die aktuelle Neigung des Sensors zu ermitteln. Dazu wird aber nur eine Achse
ausgewertet.
Charakteranimation durch Motion Capture
	
	 	
4
2.5 Tiefensensor
Der Tiefensensor besteht aus einem Infrarot-Projektor
und einer Infrarotkamera. Als Infrarot-Projektor wird
ein 60 mW starker IR-Laser (Wellenlänge 830 nm) [2]
genutzt. Durch ein diffraktives optisches Element
(Brechungsgitter), das vor dem Laser sitzt, wird ein
definiertes Muster erzeugt. [3] Als Kamera wird ein
Monochromer CMOS Sensor mit vorgesetztem
Bandpass-Filter in der Wellenlänge des Lasers
genutzt. Die Kamera kann einen Sichtwinkel von 57° horizontal und 43° vertikal
abdecken. Nutzbare Daten liefert sie für eine Entfernung zwischen 0,8 m und 3,5 m.
Sie ist in einer Entfernung von 2 Metern in der Tiefe auf 10 mm horizontal so wie
vertikal auf 3 mm genau.
2.6 Chip (PS1080)
Der im Sensor verbaute Chip berechnet die Tiefe für jeden sichtbaren Laserpunkt
und kombiniert sie mit dem RGB Signal. Als Datenstrom liefert der Chip direkt ein
Farbbild mit Tiefeninformation an den Rechner. Der Chip verarbeitet die Daten mit
30fps.
3. Dreidimensionale Erfassung der Kinect
3.1 Messvorgang
Das im Zusammenwirken
von Laser und
Brechungsgitter gebildete
Muster auf einer geraden
Projektionsfläche ist
bekannt. Da es sich um
keine Punkte mit
gleichmäßigem Abstand,
sondern um ein unregelmäßiges Punktemuster handelt, ist es möglich, die
Punktemuster mit der
Infrarotkamera der Kinect
aufgenommen.
Charakteranimation durch Motion Capture
	
	 	
5
ursprüngliche Punktpositionen aufgrund des Zusammenhanges im Muster zu
ermitteln. Somit ist man nicht auf die Definition und Identifikation von fixen
Referenzpunkten angewiesen. Sobald sich nun ein Objekt zwischen Hintergrund und
Kinect befindet, verändert sich die Position der Punkte, da sie auf dem Objekt
abgebildet werden. Der Abstand zwischen Sender und Empfänger in der Kinect
sowie die alten und neuen Positionen der Lichtpunkte sind bekannt. Somit kann
durch Triangulation die Tiefe von jedem Punkt berechnet werden.
Der Sensor ist sehr empfindlich gegen Fremdlicht. Um für das menschliche Auge
ungefährlich zu sein, darf jeder einzelne Laserpunkt die Laserschutzklasse 1M mit
einer Leistung von 25 µW nicht übersteigen. Somit sind die Punkte bei Sonnenlicht
für den Sensor kaum noch zu erkennen.
Ein weiteres Problem besteht im Abstand
zwischen Projektor und Kamera. Durch diesen
Abstand gibt es Bereiche hinter den Objekten,
die nicht von dem Laser, aber von der Kamera
erreicht werden. Die Kamera hat in diesen
Bereichen also keine Punkte, über die sie die
Tiefe berechnen könnte. Diese Schatten
erzeugen häufig Fehler, die später in der
Bildanalyse korrigiert werden müssen.
Auch durch eine vollständige Reflexion der Punkte können Fehler entstehen. Dabei
kann ein Punkt, der zum Beispiel auf einen Spiegel trifft, komplett verschwinden oder
an eine andere Stelle wandern.
3.2 Alternativen
Da die Firma PrimeSense ein Patent auf das Verfahren der Tiefen variierenden
Lichtfelder zur dreidimensionalen Erfassung hat, nutzen nur wenige Sensoren diese
Technik.
Jedoch gibt es noch weitere unabhängige Motion Capturing Verfahren.
Eine Möglichkeit sind Sensoranzüge. Dabei werden alle relevanten Punkte des
Menschen mit Bewegungssensoren und Lagesensoren ausgestattet. Dies ist jedoch
mit einem hohen Arbeitsaufwand verbunden und die Aufnahmemöglichkeiten sind
sehr beschränkt. [4, Seite 34]
Charakteranimation durch Motion Capture
	
	 	
6
In der Industrie haben sich als Alternative inzwischen optische Lösungen
durchgesetzt. Ein Raum wird mit mehreren Kameras ausgestattet. Jede Kamera hat
einen anderen Winkel zu dem aufzunehmenden Objekt. Die Positionen und
Neigungen der Kameras sind bekannt und werden während der Aufnahme auch
nicht verändert. Nun werden bestimmte Punkte an dem aufzunehmenden Objekt
markiert. Bei der Erkennung von Menschen werden dazu meistens weiße Kugeln
benutzt, die auf einem schwarzen Anzug befestigt sind. Damit kann mit Hilfe von
zwei Kameras, welche das Objekt aus verschiedenen Positionen aufnehmen, die
Kugelposition im dreidimensionalen Raum mittels Triangulation berechnet werden.
Die Positionsbestimmung kann durch weitere Kameras exakter werden. Das
Verfahren wird inzwischen bei vielen professionellen Animationsfilmen eingesetzt.
Dort muss dann nicht jede Bewegung einzeln animiert werden, denn die
Bewegungen des Schauspielers werden einfach auf den zu animierenden Charakter
übertragen. Es ist dennoch sehr viel manuelle Nachbearbeitung notwendig, wenn
beispielsweise ein Mensch für die Animation nichtmenschlicher Objekte genutzt wird.
Damit ein ausgewachsener Mensch einen Hasen steuern kann, bedarf es
komplizierter Umrechnungsverfahren, um realistische Bewegungen zu erzeugen.
[4, Seite 18]
4. RAW Daten Analyse
Die RAW Daten Analyse ist die zentrale Umwandlung der erfassten Daten in die
Positionsdaten der aufgenommenen Person. Ziel ist es, die Position von festgelegten
Körperstellen im dreidimensionalen Raum zu bestimmen. Im ersten Schritt werden
dazu die Kanten im Bild analysiert. Im zweiten Schritt werden bekannte Vorlagen mit
dem Kantenbild abgeglichen, bis die Umrisse des Menschen gefunden wurden. Nun
ist die Position und die Haltung der Person bekannt. Die wichtigen Körperstellen
wurden zuvor auf den Vorlagen markiert und liegen nun auf den entsprechenden
Stellen des Originalbildes. Im letzten Schritt wird die Position und die Tiefe der
Markierungen berechnet. Somit ermittelt man, wo die gesuchte Körperstelle im Raum
liegt.
Dabei wird jedes einzelne Bild, das von der Kinect kommt, analysiert. Der PS1080
Chip, der in der Kinect genutzt wird, liefert einen Stream mit 30fps. Um anschließend
Charakteranimation durch Motion Capture
	
	 	
7
auch 30 neue Positionsinformationen pro Sekunde zu erhalten, muss dem Prozess
genug Rechenleistung zur Verfügung stehen.
4.1 Verbindung
Kinect wird per USB an den Computer angeschlossen. Der Standard-Treiber
ermöglicht es Entwicklern jedoch nur über die „Kinect vor Windows SDK“ auf die
Funktionen des Sensors zuzugreifen [10, Seite 30]. Ein passender Open-Source-
Treiber von PrimeSense kann problemlos nachinstalliert werden. Der Treiber enthält
auch direkt die sogenannte Open NI API, über deren Schnittstellen der Zugriff auf die
Daten des Audio-, Video- und Tiefensensors der Kinect erleichtert wird. [6]
4.2 Kanten Analyse
Tiefendaten
Die Daten des Tiefensensors werden als Array mit 307.200
Werten übergeben. Die Tiefenangaben sind Werte
zwischen 0 bis 2047. Diese Werte werden in ein
Graustufenbild umgewandelt und repräsentieren abhängig
von der Tiefe einen Helligkeitswert zwischen 0 und 255.
Da fehlende Werte keine gültige Tiefe besitzen, müssen
diese zuvor auf 0 gesetzt werden.
Der Canny-Algorithmus
Nun beginnen wir mit dem Canny-Algorithmus, oder auch Canny Edge Detector
genannt, die Kanten der Objekte zu analysieren. Dieser Algorithmus wurde 1986 von
John Canny entwickelt und ist heute in der digitalen Bildanalyse weit verbreitet. [7]
	
Datenvorverarbeitung
Um die Daten für den Canny-Algorithmus brauchbar zu machen, benötigen wir das
Graustufenbild, das aus den Tiefendaten erzeugt wurde. Um zu verhindern, dass
Kanten an Stellen erkannt werden, an denen lediglich ein Bildrauschen vorliegt,
wenden wir einen Gaußschen Weichzeichner auf das Bild an. Wie der Name schon
sagt, beruht dieser Weichzeichner auf der Gauß-Funktion. Dabei werden die
umliegenden Pixel eines Pixels betrachtet und der Wert des in der Mitte liegenden
Pixels in Abhängigkeit davon angepasst. Dabei muss bei der Wahl der
Tiefenbild mit der Kinect
aufgenommen.
Charakteranimation durch Motion Capture
	
	 	
8
Rechenparameter darauf geachtet werden, dass nur das Bildrauschen entfernt wird
und keine relevanten Details. [8]
Kanten-Erkennung
Nun wird für jedes Pixel die Kantenrichtung und die
Kantenstärke berechnet. Die Kantenrichtung wird auf 45°
genau berechnet, da jedes Pixel nur 8 angrenzende Pixel
besitzt. Wenn nun alle Kanten markiert sind, werden nur
die stärksten Pixel gesucht und der Rest gelöscht, um alle
Kanten auf die Breite von einem Pixel zu reduzieren (Non-
maximum Suppression). [7]
Zum Abschluss wird durch manuell oder automatisch bestimmte Schwellenwerte
festgelegt, wie detailreich das entstandene Kantenbild sein soll. Dementsprechend
werden schwächere Kanten gelöscht und nur die stärksten Kanten werden auf dem
Bild angezeigt.
4.3 Erkennungsmuster
Nun brauchen wir eine Vorlage von einem Menschen, der
erkannt werden soll. Da ein Mensch jedoch viele Haltungen
einnehmen kann und somit auch viele verschiedene Muster
benötigt werden, um einen Menschen in allen Haltungen
erkennen zu können, reduzieren wir die Suche erst einmal
auf den Kopf. Der Kopf eines Menschen ist von der Form her immer ähnlich. Eine
Kantenzeichnung, die als Vorlage genutzt wird, wird aber immer noch nicht genau so
aussehen wie der Kopf in unserer Kantenzeichnung. Außerdem ist der Kopf eventuell
gedreht oder hat eine andere Größe als die Vorlage.
Deshalb wird zusätzlich ein Verfahren genutzt, dass 1988 von Gunilla Borgefors
entwickelt wurde. [9]
4.4 Distance Transform Pyramid
Tiefenbild nach der
Kanten Erkennung
Vorlage mit Punkten
zum Tracking
mehrere Layer mit
unterschiedlicher
Auflösung übereinander
Charakteranimation durch Motion Capture
	
	 	
9
Mit diesem Verfahren ist es möglich, Übereinstimmungen zwischen einer Vorlage
und einem Bild, unabhängig von der Skalierung zu finden. In unserem Beispiel
nutzen wir den vereinfachten Fall, dass wir den Menschen von vorne sehen und
somit nur eine Schablone brauchen.
Auflösungspyramide
Das Kantenbild wird als Grundlage, beziehungsweise als erster Layer genutzt. Nun
wird ein zweites Bild mit geringerer Auflösung erstellt. Dabei werden immer vier Pixel
des unteren Bildes genommen und zusammengefasst. Wenn eins der vier Pixel im
unteren Bild eine Kante war, wird das neue Pixel auch eine Kante. So werden
mehrere Layer übereinander gelegt.
Entfernungsbilder
Nun wird für jeden Pixel eines Layers berechnet, wie weit dieser
von der nächsten Kante entfernt ist. Ist ein Pixel eine Kante,
bekommt dieser die Entfernung null. Dies wird für alle Layer
gemacht.
Übereinstimmung
Auf dem obersten Layer bewegen wir nun die Vorlage über das gesamte Bild und
berechnen jedes Mal die Übereinstimmung. Dabei orientieren wir uns nicht an der
Kante. Wir vergleichen die Entfernungen der Pixel auf dem Kantenbild, die unter der
Kante von der Vorlage liegen. Dort, wo die Entfernungen am ähnlichsten sind, haben
wir eine Übereinstimmung von Vorlage und Original. Nun skalieren wir die Vorlage
an der Stelle so weit, dass sie mit dem Muster auf dem aktuellen Layer
übereinstimmt. Diesen Vorgang wiederholen wir für alle
Layer und haben zum Schluss die Position des Kopfes.
Ausgehend von der Kopfposition kann jetzt der restliche
Körper lokalisiert werden. Um bestimmte Punkte zu
tracken, legen wir uns diese Punkte direkt auf unsere
Vorlagen. Sind die Vorlagen an das aktuelle Kantenbild
angepasst, wissen wir auch, wo der Punkt sich befindet,
den wir tracken wollen. Über die Tiefenangabe und die Position im Bild wissen wir,
Tiefenbild mit überlagerter
Kantenvorlage
Charakteranimation durch Motion Capture
	
	 	
10
wo sich dieses Körperteil, zum Beispiel die Gelenke, im dreidimensionalen Raum
befindet.
Dies ist eine Möglichkeit, die RAW Daten der Kinect zu analysieren und festgelegte
Körperstellen im dreidimensionalen Raum zu lokalisieren.
4.5 NI mate
Das Programm NI (Natural Interaction) mate von Delicode kann diesen
Analyseprozess automatisieren. Basierend auf Open NI analysiert es in Echtzeit
Motion Capture Daten von Sensoren wie der Kinect und gibt sie anschließend über
Protokolle wie z.B. OSC (Open Sound Control) weiter.
5. 3D Charakter
Das Erstellen eines dreidimensionalen Charakters für unsere Zwecke kann in vier
Schritte gliedert werden. Die Vorbereitung, das Erstellen des Mesches, die Textur
und das Rigging. Anschließend braucht das Modell noch eine Schnittstelle zu den
Kinect Daten, um den Charakter steuern zu können.
5.1 Vorbereitung
Da das Erstellen eines dreidimensionalen Objekts um eine Dimension komplexer ist,
als das einfache Zeichnen einer Person auf ein Papier, empfiehlt es sich, im
Zweidimensionalen zu beginnen. Wenn feststeht, wie das Modell später aussehen
soll, fängt man mit Zeichnungen oder auch Fotografien aus verschiedenen
Perspektiven an. Diese Vorlagen werden später als Grundlagen für das Modellieren
genutzt. Um die Performance des endgültigen Spieles nicht mit unnötig vielen
Polygonen zu belasten, sollte man schon bei der Vorbereitung darauf achten, nur
das Nötigste zu zeichnen. Unsere zweidimensionalen Vorlagen können wir nun
einfach neben uns legen oder direkt in Blender einbinden. Handelt es sich um eine
Ansicht, die parallel zu einer der Achsen ist, gibt es in Blender die Möglichkeit,
Hintergrundbilder einzubinden. Diese Bilder werden immer dann angezeigt, wenn die
Sicht ebenfalls parallel zu der entsprechenden Achse liegt.
5.2 Das Mesch
Charakteranimation durch Motion Capture
	
	 	
11
Zum fertigen Mesch führen wieder zahlreiche unterschiedliche Wege.
Boxmodeling
Bei dieser Methode wird ein einfacher Grundkörper als
Ausgangsform genutzt. Meistens ein Würfel. Durch
verschiedene Operationen wird dieser Körper so weit verändert,
bis das gewünschte Modell entsteht. Diese Methode hat den
Vorteil, auch ohne genaue Planung starten zu können, da das
Modell einfach aus dem Grundkörper entsteht und man sehr
schnell Ergebnisse sieht. [5]
Polygon Modeling
Beim Polygon Modeling wird jedes Polygon einzeln aufgebaut. Für diese Variante
empfiehlt sich eine Vorlage, weil man die einzelnen Punkte genau nach der Vorlage
setzen kann. Um so genauer und detailreicher man Muskeln, Falten und andere
Körperteile nachbaut, desto realistischer wirkt das Objekt im Nachhinein. Dies geht
jedoch schnell zur Lasten der Performance. Daher empfiehlt es sich, gerade für
unsere Anwendung eher an Details zu sparen und diese danach über die Textur
einzuarbeiten. [5]
3D Scanner
Wohl eine der schnellsten und detailreichste Varianten, ein dreidimensionales Abbild
von einem reellen Objekt zu erstellen, ist das 3D Scanning. Diese Technik wäre auch
mit der Kinect möglich. Dabei wird ein Objekt von einem 3D Scanner von allen
Perspektiven aus abgetastet und anschließend automatisch ein Modell erstellt. Diese
Technik liefert allerdings eine große Anzahl an Polygonen und ist daher für unsere
Anwendung nicht zu empfehlen.
Modell Generatoren
Inzwischen wurden auch einige Programme entwickelt, die nach eigenen
Vorstellungen fertige Modelle generieren. Open Source Projekte wie MaceHumen
liefern schnelle und gute Ergebnisse. Für unsere Anwendung sind aber auch diese
Objekte immer noch zu detailreich.
Mesch mit Textur
Charakteranimation durch Motion Capture
	
	 	
12
Auf genauere Modellingverfahren und nützliche Funktionen gehe ich hier nicht weiter
ein.
5.3 Rigging
Wenn nur eine Pose gebraucht wird, könnte das Mesch so
genutzt werden wie es ist. Da die Charaktere sich aber im
Spiel bewegen müssen und jMonkey nur Knochen-
Animationen unterstützt, benötigt das Mesch noch ein Skelett.
Das Erstellen eines Skeletts nennt man Rigging. Dazu setzt
man in das Mesch sogenannte Bones, um die Animation zu
erleichtern. Dabei kann man sich an einem menschlichen
Skelett orientieren. Für den Import in jMonkey ist es wichtig,
dass das Rig einen Root Bone besitzt, der mittig am Boden
des Mesches sitzt. An diesem Knochen laufen alle anderen Knochen zusammen.
Somit kann die Position des gesamten Objektes mit dem einen Knochen gesteuert
werden.
5.4 Skinning
Beim Skinning wird das Skelett mit dem Mesch verknüpft. Dazu kann man entweder
dem Skelett das Mesch unterordnen nutzt einen Skelettmodifikator nutzen. Auf beide
Systeme kann man durch Vertex Groups oder die Weight Painting Funktion von
Blender Einfluss nehmen.
5.5 Kinect Schnittstelle
Um die Positionsdaten der Kinect in Blender darzustellen, empfehlen sich Emptys.
Emptys sind keine Geometrien. Es sind lediglich Objekte mit Positions- und
Rotationsinformationen. Emptys werden nicht gerendert und können auch nicht
bearbeitet werden.
Nun benennen wir ein Empty genau so wie einen Punkt aus
dem Motion Capturing. NI mate sendet die Positionsdaten
und den Namen des zugehörigen Punktes über OSC an den
Client. Der Client ist in unserem Fall ein Blender Plugin, das
die Positionsdaten nun auf das gleichnamige Empty
überträgt.
Visualisierung von
Emptys
Skelett / Rig
Charakteranimation durch Motion Capture
	
	 	
13
Starten wir das System, können wir über Kinect schon die Emptys in Blender
bewegen.
Nun muss der Charakter noch die Positionen von unseren
Emptys übernehmen. Dazu nutzen wir Bone Constraints.
Die Position des Körpers können wir komplett von einem
der zentralen Emptys übernehmen. Dazu lassen wir die
Position eines zentralen Emptys auf einen Knochen
kopieren, der eine ähnliche Position im Körper hat und
die anderen Knochen beeinflussen kann. Bei allen
anderen Emptys sollte man nicht die gesamte Position
kopieren, da es sonst zu Problemen kommt, wenn die menschlichen Proportionen
nicht mit den Proportionen des Charakters übereinstimmen. Sinvoller ist es, den
Knochen nur in die Richtung des Emptys zu führen. Die Funktion in Blender findet
sich unter den Bone Constrains und heißt „Track To“. Sobald alle notwendigen
Emptys mit dem Charakter verbunden sind, kann das gesamte System gestartet
werden und der Charakter lässt sich über Kinect in Blender bewegen.
6. Animation
Sobald das Live Motion Capturing funktioniert, können wir mit der eigentlichen
Animation beginnen.
6.1 Vorbereitung
Das System sollte in einem Raum installiert werden, in dem der Sensor die besten
Ergebnisse erzielen kann. Das heißt, möglichst wenig Umgebungslicht und vor allem
kein Infrarotlicht. Außerdem sollte genug Platz vorhanden sein. Auch Gegenstände,
die Ähnlichkeiten von menschlichen Mustern aufweisen und stark reflektierende,
bzw. extrem absorbierende Flächen können stören.
Auch die Kleidung spielt eine wichtige Rolle bei der Aufnahme. Weite Kleidung oder
Röcke sind zu vermeiden, da der Computer sonst Schwierigkeiten bekommt, die
genauen Positionen von Gelenken oder Körperteilen zu bestimmen.
Skelett mit Verknüpfung
zu den Emptys
Charakteranimation durch Motion Capture
	
	 	
14
Bevor man die Aufnahme beginnt, sollte noch festgelegt werden, was für
Bewegungen aufgenommen werden sollen, um diese anschließend möglichst klar
auszuführen.
6.2 Aufnahme
Für die Aufnahme gibt es zwei verschiedene Wege in Blender. Entweder Schritt für
Schritt oder in einem kontinuierlichen Verfahren alles auf einmal.
Der erste Weg ist, eine Pose einzunehmen und diese Körperhaltung zu speichern.
Anschließend kann man die Pose etwas verändern und die Körperhaltung erneut
speichern. Diese Methode ist sehr zeitaufwändig. Wenn es sich jedoch um eine
Bewegung handelt, die ein Mensch nicht ohne weiteres ausführen kann, empfiehlt
sich diese Methode. Dabei werden nur die wichtigsten Daten gespeichert. Durch die
geringere Datenmenge lässt sich anschließend die Animation leichter bearbeiten. Für
die deutlich schnellere zweite Methode nutzt man die Auto Keyframing Funktion von
Blender. Dabei setzt Blender die Keyframes bei Bewegungen von Objekten oder
Knochen automatisch. Diese Methode speichert meistens sehr viele Keyframes. Es
ist möglich, Bewegungen in Echtzeit aufzunehmen, mit dem Nachteil eines höheren
Bearbeitungsaufwandes bei Anpassungen.
6.3 Nachbearbeitung
Die entstandenen Keyframes könnte man zwar direkt so lassen. Jedoch empfiehlt es
sich, die Daten noch nachzubearbeiten, da Aufnahmefehler vorkommen können.
Dazu können entweder einzelne Keyframes geöffnet und Posen geändert oder mit
dem Graph Editor von Blender Fehler gelöscht oder Bewegungen korrigiert werden.
Sollen mehrere Animationen erstellt werden, speichert man diese zuerst
hintereinander in die Timeline. Nun definiert man den Start- und End-Frame einer
Animation und wandelt sie anschließend über die Bake Action Funktion in Blender in
eine Action um.
7. Import in die jMonkeyEngine
Sind nun alle gewünschten Animationen aufgenommen und bearbeitet, können die
fertigen Blender Dateien ohne Umwege in jMonkey importiert werden. Dazu muss
Charakteranimation durch Motion Capture
	
	 	
15
man jedoch die Anforderungen von jMonkey an solche Dateien sehr genau
beachten.
Nach dem Import werden die Dateien automatisch in .j3o Files konvertiert. Diese
Dateien können im jMonkey integrierten Scene Composer geöffnet und bearbeitet
werden. Auch die Animationen lassen sich dort abspielen.
Um unseren Charakter nun in das Spiel zu integrieren, bedarf es noch etwas
Programmcode.
Die jMonkeyEngine besitzt ein eigenes Entity System, zu dem wir unseren Charakter
hinzufügen. Außerdem erstellen wir eine Klasse zu dem Entity, über die unter
anderem die Figur als Form zum Spiel hinzugefügt wird und die Animationen
gestartet und gestoppt werden.
8. Fazit
Zur herkömmlichen Animationsmethode bieten Motion-Capturing-Verfahren viele
neue Möglichkeiten. Jedoch bringen sie auch ihre Schwierigkeiten mit sich. So sollte
man sich einige Fragen stellen, bevor man beschließt, eine Animation per Motion-
Capture-Verfahren aufzunehmen.
Ist die Technik genau genug, um die erwünschten Bewegungen zu erfassen? Nicht
nur die Auflösung kann zu Problemen führen, auch die Verarbeitungsgeschwindigkeit
spielt eine große Rolle. Soll z.B. eine Kampfszene etwas langsamer wiedergeben
werden, um sie dramatischer zu gestalten, braucht man deutlich mehr als 30fps, um
anschließend noch ein flüssiges Bild zu haben.
Kann man die Animation eventuell über einen anderen Weg einfacher realisieren?
Gerade wenn es darum geht, unrealistische Lebewesen zu steuern, muss genau
überlegt werden, wie man die Bewegung des Menschen auf die zu animierende
Figur überträgt.
Welches System ist das Sinnvollste? Kinect reicht sicherlich nur für einen
Hobbyanimator, aber auch bei professionellen Systemen gibt es viele Unterschiede.
Und, und, und, ...
Ob sich Kinect für unser jMonkey Spiel lohnt?
Ja! Denn solange wir das Spiel entwickeln, um dabei etwas zu lernen, lohnt es sich.
Würden wir das Spiel für kommerzielle Zwecke entwickeln, wäre es sicherlich
Charakteranimation durch Motion Capture
	
	 	
16
einfacher, auf die Genauigkeit der Animationen zu verzichten und sie einfach per
Hand zu erstellen.
Charakteranimation durch Motion Capture
	
	 	
17
9. Literaturverzeichnis
[1] Buch
− Titel: Beginning Kinect Programming with the Microsoft Kinect SDK
− Autor: Jarrett Webb und James Ashley
− Erscheinungsdatum: 6. März 2012
− Verlag: Apress
[2] Webseite
− URL: http://wiki.zimt.uni-
siegen.de/fertigungsautomatisierung/index.php/Einsatzmöglichkeiten_einer_3
D-Kamera_in_der_Produktionstechnik_am_Beispiel_der_Kinect-Kamera
− aufgerufen am: 24.8.2014
[3] Webseite
− URL: http://ntuzhchen.blogspot.de/2010/12/how-kinect-works-prime-
sense.html
− aufgerufen am: 24.8.2014
[4] Buch
− Titel: Understanding Motion Capture for Computer Animation
− Autor: Alberto Menache
− Auflage: Second Edition
− Erscheinungsdatum: 24. Januar 2011
− Verlag: Morgan Kaufmann
[5] Diplomarbeit
− Titel: Realismus bei der 3D-Charaktermodellierung des Menschen
− Autor: Denis Schröder
− URL: https://www.informatik.hu-
berlin.de/forschung/gebiete/viscom/thesis/final/Diplomarbeit_Schroeder_2012
12.pdf
− aufgerufen am: 26.8.2014
[6] Webseite
− URL: http://www.heise.de/newsticker/meldung/Offizielle-Open-Source-Treiber-
fuer-Kinect-1152510.html
− aufgerufen am: 27.8.2014
Charakteranimation durch Motion Capture
	
	 	
18
[7] Paper
− Titel: A Computational Approach to Edge Detection
− Autor: John Canny
− Erscheinungsdatum: 6. November 1986 (aktuell: 27.Januar 2009)
− Verlag: IEEE
− URL:
http://www.cim.mcgill.ca/~image529/TA529/Image529_99/assignments/edge_
detection/references/canny-pami.pdf
[8] Masterarbeit
− Titel: Human detection and extraction using kinect depth images
− Autor: Sundar Narayan Krishnamurthy
− URL:
http://nccastaff.bournemouth.ac.uk/jmacey/MastersProjects/MSc11/Sundar/Hu
man_Detection_and_Extraction_using_Kinect_Depth_Images_Thesis.pdf
− aufgerufen am: 27.8.2014
[9] Paper
− Titel: Hierarchical chamfer matching: a parametric edge matching algorithm
− Autor: Gunilla Borgefors
− Erscheinungsdatum: 6. November 1988 (aktuell: 6.August 2002)
− Verlag: IEEE
− URL: http://www.cs.berkeley.edu/~malik/cs294/borgefors88.pdf
[10] Buch
− Titel: Kinect for Windows SDK Programming Guide
− Autor: Abhijit Jana
− Erscheinungsdatum: 26. Dezember 2012
− Verlag: Packt Publishing
Bildnachweis
Alle Bilder, Grafiken und Tabellen von Finn Süberkrüb.
Die Abbildungen unterliegen ausschließlich dem Urheberrecht von Finn Süberkrüb.

Weitere ähnliche Inhalte

Andere mochten auch

Ecologia
EcologiaEcologia
Ecologia
Hernan Real
 
Gabrielle Weber Photography
Gabrielle Weber PhotographyGabrielle Weber Photography
Gabrielle Weber Photography
ga6rie11e
 
Quienes somos
Quienes somosQuienes somos
Quienes somos
emm22
 
Trabajo de rocio jiménez.
Trabajo de rocio jiménez.Trabajo de rocio jiménez.
Trabajo de rocio jiménez.
rociojimenez4b
 
Presentacion julio mendez
Presentacion julio mendezPresentacion julio mendez
Presentacion julio mendez
jliomendez
 
Pasos a seguir para la implementación de videos educativos
Pasos a seguir para la implementación de videos educativosPasos a seguir para la implementación de videos educativos
Pasos a seguir para la implementación de videos educativos
aljivi067
 
La planificación curricular (2)
La planificación curricular (2)La planificación curricular (2)
La planificación curricular (2)
COLEGIO
 
74 nuevas leyes físicas y advanced ligo by the numbers
74   nuevas leyes físicas y advanced ligo by the numbers74   nuevas leyes físicas y advanced ligo by the numbers
74 nuevas leyes físicas y advanced ligo by the numbers
Miguel Cabral Martín
 
Diapositivas de rrhh exposicion
Diapositivas de rrhh exposicionDiapositivas de rrhh exposicion
Diapositivas de rrhh exposicion
Kitty Ffyje Jm
 
rrr
rrrrrr
Año Jubilar Rociero
Año Jubilar Rociero Año Jubilar Rociero
Año Jubilar Rociero
Jero Garcia Barba
 
E Learning Konzept26 Okt07v02
E Learning Konzept26 Okt07v02E Learning Konzept26 Okt07v02
E Learning Konzept26 Okt07v02
subsecond
 
Gemeinsam stark nach den nationalen Förderprogrammen.
Gemeinsam stark nach den nationalen Förderprogrammen.Gemeinsam stark nach den nationalen Förderprogrammen.
Gemeinsam stark nach den nationalen Förderprogrammen.
e-teaching.org
 
Online-Kommunikation beobachten – bewerten – steuern
Online-Kommunikation beobachten – bewerten – steuernOnline-Kommunikation beobachten – bewerten – steuern
Online-Kommunikation beobachten – bewerten – steuern
Olaf Nitz
 

Andere mochten auch (15)

Ecologia
EcologiaEcologia
Ecologia
 
Gabrielle Weber Photography
Gabrielle Weber PhotographyGabrielle Weber Photography
Gabrielle Weber Photography
 
Quienes somos
Quienes somosQuienes somos
Quienes somos
 
Trabajo de rocio jiménez.
Trabajo de rocio jiménez.Trabajo de rocio jiménez.
Trabajo de rocio jiménez.
 
Presentacion julio mendez
Presentacion julio mendezPresentacion julio mendez
Presentacion julio mendez
 
Ley antidiscriminacion- JuanIgnacio Venegas
Ley antidiscriminacion- JuanIgnacio VenegasLey antidiscriminacion- JuanIgnacio Venegas
Ley antidiscriminacion- JuanIgnacio Venegas
 
Pasos a seguir para la implementación de videos educativos
Pasos a seguir para la implementación de videos educativosPasos a seguir para la implementación de videos educativos
Pasos a seguir para la implementación de videos educativos
 
La planificación curricular (2)
La planificación curricular (2)La planificación curricular (2)
La planificación curricular (2)
 
74 nuevas leyes físicas y advanced ligo by the numbers
74   nuevas leyes físicas y advanced ligo by the numbers74   nuevas leyes físicas y advanced ligo by the numbers
74 nuevas leyes físicas y advanced ligo by the numbers
 
Diapositivas de rrhh exposicion
Diapositivas de rrhh exposicionDiapositivas de rrhh exposicion
Diapositivas de rrhh exposicion
 
rrr
rrrrrr
rrr
 
Año Jubilar Rociero
Año Jubilar Rociero Año Jubilar Rociero
Año Jubilar Rociero
 
E Learning Konzept26 Okt07v02
E Learning Konzept26 Okt07v02E Learning Konzept26 Okt07v02
E Learning Konzept26 Okt07v02
 
Gemeinsam stark nach den nationalen Förderprogrammen.
Gemeinsam stark nach den nationalen Förderprogrammen.Gemeinsam stark nach den nationalen Förderprogrammen.
Gemeinsam stark nach den nationalen Förderprogrammen.
 
Online-Kommunikation beobachten – bewerten – steuern
Online-Kommunikation beobachten – bewerten – steuernOnline-Kommunikation beobachten – bewerten – steuern
Online-Kommunikation beobachten – bewerten – steuern
 

Ähnlich wie Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

BAT40 SBB Jöckel Optische Zuglokalisation mit Machine Learning
BAT40 SBB Jöckel Optische Zuglokalisation mit Machine LearningBAT40 SBB Jöckel Optische Zuglokalisation mit Machine Learning
BAT40 SBB Jöckel Optische Zuglokalisation mit Machine Learning
BATbern
 
Fotoworkshop - Technik
Fotoworkshop - TechnikFotoworkshop - Technik
Fotoworkshop - Technik
Backlab
 
Digitale Kamera und Modulationstransferfunktion
Digitale Kamera und ModulationstransferfunktionDigitale Kamera und Modulationstransferfunktion
Digitale Kamera und Modulationstransferfunktion
Roland Bruggmann
 
Bachelorthesis Robert Ballon Intelligentes Mikrofonsystem - Einsatzszenarien ...
Bachelorthesis Robert Ballon Intelligentes Mikrofonsystem - Einsatzszenarien ...Bachelorthesis Robert Ballon Intelligentes Mikrofonsystem - Einsatzszenarien ...
Bachelorthesis Robert Ballon Intelligentes Mikrofonsystem - Einsatzszenarien ...
Robert Ballon
 
Ifgicopter - Microcopter as a sensor platform for environmental monitoring
Ifgicopter - Microcopter as a sensor platform for environmental monitoringIfgicopter - Microcopter as a sensor platform for environmental monitoring
Ifgicopter - Microcopter as a sensor platform for environmental monitoring
Matthes Rieke
 
Smarte 3D-Sensorik
Smarte 3D-SensorikSmarte 3D-Sensorik
Smarte 3D-Sensorik
ifm electronic gmbh
 

Ähnlich wie Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit) (6)

BAT40 SBB Jöckel Optische Zuglokalisation mit Machine Learning
BAT40 SBB Jöckel Optische Zuglokalisation mit Machine LearningBAT40 SBB Jöckel Optische Zuglokalisation mit Machine Learning
BAT40 SBB Jöckel Optische Zuglokalisation mit Machine Learning
 
Fotoworkshop - Technik
Fotoworkshop - TechnikFotoworkshop - Technik
Fotoworkshop - Technik
 
Digitale Kamera und Modulationstransferfunktion
Digitale Kamera und ModulationstransferfunktionDigitale Kamera und Modulationstransferfunktion
Digitale Kamera und Modulationstransferfunktion
 
Bachelorthesis Robert Ballon Intelligentes Mikrofonsystem - Einsatzszenarien ...
Bachelorthesis Robert Ballon Intelligentes Mikrofonsystem - Einsatzszenarien ...Bachelorthesis Robert Ballon Intelligentes Mikrofonsystem - Einsatzszenarien ...
Bachelorthesis Robert Ballon Intelligentes Mikrofonsystem - Einsatzszenarien ...
 
Ifgicopter - Microcopter as a sensor platform for environmental monitoring
Ifgicopter - Microcopter as a sensor platform for environmental monitoringIfgicopter - Microcopter as a sensor platform for environmental monitoring
Ifgicopter - Microcopter as a sensor platform for environmental monitoring
 
Smarte 3D-Sensorik
Smarte 3D-SensorikSmarte 3D-Sensorik
Smarte 3D-Sensorik
 

Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

  • 1. Gymnasium Weilheim Abiturjahrgang 2015 S E M I N A R A R B E I T Rahmenthema des Wissenschaftspropädeutischen Seminars: Programmierung eines Abenteuerspiels Leitfach: Informatik Thema der Arbeit: Charakteranimation durch Motion Capture Verfasser/in: Finn Süberkrüb Kursleiter/in: Abgabetermin: 4. November 2014 Bewertung Punkte Punkte schriftliche Arbeit3 - x 3 Abschlusspräsentation2 x 1 Summe: Gesamtleistung nach § 61 (7) GSO = Summe : 2 (gerundet) Datum und Unterschrift der Kursleiterin bzw. des Kursleiters
  • 2. Charakteranimation durch Motion Capture 2 Inhaltsangabe 1. Einleitung 4 2. Der Kinect Sensor 5 2.1 Technische Daten 5 2.2 Array-Mikrofone 5 2.3 Farbkamera 5 2.4 Beschleunigungssensor 5 2.5 Tiefensensor 6 2.6 Chip (PS1080) 6 3. Dreidimensionale Erfassung der Kinect 6 3.1 Messvorgang 6 3.2 Alternativen 7 4. RAW Daten Analyse 8 4.1 Verbindung 9 4.2 Kanten Analyse 9 • Tiefendaten 9 • Der Canny-Algorithmus 9 • Vorprozessierung 9 • Kantenerkennung 10 4.3 Erkennungsmuster 10 4.4 Distance Transform Pyramid 11 • Auflösungspyramide 11 • Entfernungsbilder 11 • Übereinstimmung 11 4.5 NI mate 12
  • 3. Charakteranimation durch Motion Capture 3 5. 3D Charakter 12 5.1 Vorbereitung 12 5.2 Das Mesch 13 • Boxmodeling 13 • Polygon Modeling 13 • 3D Scanner 13 • Modell Generatoren 13 5.3 Rigging 14 5.4 Skinning 14 5.5 Kinect Schnittstelle 14 6. Animation 15 6.1 Vorbereitung 15 6.2 Aufnahme 16 6.3 Nachbearbeitung 16 7. Import in die jMonkeyEngine 17 8. Fazit 17 9. Literaturverzeichnis 19 Bildnachweis 20
  • 5. Charakteranimation durch Motion Capture 2 1. Einleitung Ein Spiel zu entwickeln heißt, eine Vielzahl verschiedener Aufgaben zu bewältigen. Von der Spielidee bis zum Endgegner ist es ein langer Weg. Zum einen wird eine Geschichte aufgebaut und es werden Welten gestaltet. Zum anderen muss das Spiel noch eine gewisse Logik besitzen. Ganz selbstverständliche Dinge, dass ein Stein auf den Boden fällt oder ein Mensch gehen kann, müssen dem Programm wie einem Kind erklärt werden. Die folgende Seminararbeit beschreibt die Animation von Charakteren mit Hilfe des Kinect Sensors von Microsoft, welche anschließend in die jMonkeyEngine eingebunden werden. Da eine realistische Animation von Bewegungen mindestens genau so viel Zeit in Anspruch nimmt, wie das eigentliche Gestalten der Figur, habe ich mich mit Möglichkeiten beschäftigt, diese Arbeit zu beschleunigen. Motion Capturing zur Animation von 3D Charakteren ist keine Neuheit. In großen Animationsfilmen wird diese Technik schon sehr viel eingesetzt. Jedoch sind die dort verwendeten Systeme wegen der Kosten und der benötigten Rechenleistung nur für professionelle Anwendungen geeignet. Vor einigen Jahren hat Microsoft eine Spielekonsole mit dem Kinect Sensor zur dreidimensionalen Erfassung des Spielers auf den Markt gebracht. Viele Hacker haben Kinect für neue Anwendungen erschlossen. Sie kann inzwischen auch zur Animation am Computer genutzt werden. Im Folgenden gehe ich auf Kinect und die darin eingesetzten Sensoren, die dreidimensionale Erfassung, Bildanalyse, die Steuerung und Animation von Objekten in Blender und den anschließenden Einsatz in der jMonkeyEngine ein.
  • 6. Charakteranimation durch Motion Capture 3 2. Der Kinect Sensor Microsoft Kinect ist ein Sensor der ursprünglich zur Steuerung der Spielekonsole Xbox 360 entwickelt wurde. Microsoft hat den Sensor zusammen mit der Firma PrimeSense, einem Entwicklungsunternehmen für drei- dimensionale Erkennungssysteme entwickelt. 2.1 Technische Daten Kinect beinhaltet ein Mikrofon Array, eine Farbkamera, einen 3-Achsen Beschleunigungs- und einen Tiefensensor. 2.2 Array-Mikrofone Kinect ist mit vier Mikrofonen ausgestattet, die im Sensor verteilt sind. Durch Laufzeitdifferenzen der Töne vom Sprecher zu den Mikrofonen kann ermittelt werden, aus welcher Richtung der Ton kommt. 2.3 Farbkamera In der integrierten Farbkamera arbeitet ein Bayer-Sensor mit einer reellen Auflösung von 640x480 Pixeln mit 30 fps ([1], Seite 38). Theoretisch wäre eine Auflösung bis zu 1280x1024 Pixel mit 12 fps möglich. Die meisten vorhandenen Treiber für den Kinect Sensor liefern aber nur die geringere Auflösung. Die mit der Kamera erfassten Farbbilder können später genutzt werden, um die entstandenen 3D Objekte mit Texturen zu versehen. 2.4 3-Achsen Beschleunigungssensor - (Gyrosensor) Im Fuß der Kinect befindet sich ein Servomotor, der die Sensorleiste bei Bedarf um ca. 27° vertikal schwenken kann. [10, Seite 14] Dadurch wird das Sichtfeld der Kameras zusätzlich erweitert. Der 3-Achsen Beschleunigungssensor wird genutzt, um die aktuelle Neigung des Sensors zu ermitteln. Dazu wird aber nur eine Achse ausgewertet.
  • 7. Charakteranimation durch Motion Capture 4 2.5 Tiefensensor Der Tiefensensor besteht aus einem Infrarot-Projektor und einer Infrarotkamera. Als Infrarot-Projektor wird ein 60 mW starker IR-Laser (Wellenlänge 830 nm) [2] genutzt. Durch ein diffraktives optisches Element (Brechungsgitter), das vor dem Laser sitzt, wird ein definiertes Muster erzeugt. [3] Als Kamera wird ein Monochromer CMOS Sensor mit vorgesetztem Bandpass-Filter in der Wellenlänge des Lasers genutzt. Die Kamera kann einen Sichtwinkel von 57° horizontal und 43° vertikal abdecken. Nutzbare Daten liefert sie für eine Entfernung zwischen 0,8 m und 3,5 m. Sie ist in einer Entfernung von 2 Metern in der Tiefe auf 10 mm horizontal so wie vertikal auf 3 mm genau. 2.6 Chip (PS1080) Der im Sensor verbaute Chip berechnet die Tiefe für jeden sichtbaren Laserpunkt und kombiniert sie mit dem RGB Signal. Als Datenstrom liefert der Chip direkt ein Farbbild mit Tiefeninformation an den Rechner. Der Chip verarbeitet die Daten mit 30fps. 3. Dreidimensionale Erfassung der Kinect 3.1 Messvorgang Das im Zusammenwirken von Laser und Brechungsgitter gebildete Muster auf einer geraden Projektionsfläche ist bekannt. Da es sich um keine Punkte mit gleichmäßigem Abstand, sondern um ein unregelmäßiges Punktemuster handelt, ist es möglich, die Punktemuster mit der Infrarotkamera der Kinect aufgenommen.
  • 8. Charakteranimation durch Motion Capture 5 ursprüngliche Punktpositionen aufgrund des Zusammenhanges im Muster zu ermitteln. Somit ist man nicht auf die Definition und Identifikation von fixen Referenzpunkten angewiesen. Sobald sich nun ein Objekt zwischen Hintergrund und Kinect befindet, verändert sich die Position der Punkte, da sie auf dem Objekt abgebildet werden. Der Abstand zwischen Sender und Empfänger in der Kinect sowie die alten und neuen Positionen der Lichtpunkte sind bekannt. Somit kann durch Triangulation die Tiefe von jedem Punkt berechnet werden. Der Sensor ist sehr empfindlich gegen Fremdlicht. Um für das menschliche Auge ungefährlich zu sein, darf jeder einzelne Laserpunkt die Laserschutzklasse 1M mit einer Leistung von 25 µW nicht übersteigen. Somit sind die Punkte bei Sonnenlicht für den Sensor kaum noch zu erkennen. Ein weiteres Problem besteht im Abstand zwischen Projektor und Kamera. Durch diesen Abstand gibt es Bereiche hinter den Objekten, die nicht von dem Laser, aber von der Kamera erreicht werden. Die Kamera hat in diesen Bereichen also keine Punkte, über die sie die Tiefe berechnen könnte. Diese Schatten erzeugen häufig Fehler, die später in der Bildanalyse korrigiert werden müssen. Auch durch eine vollständige Reflexion der Punkte können Fehler entstehen. Dabei kann ein Punkt, der zum Beispiel auf einen Spiegel trifft, komplett verschwinden oder an eine andere Stelle wandern. 3.2 Alternativen Da die Firma PrimeSense ein Patent auf das Verfahren der Tiefen variierenden Lichtfelder zur dreidimensionalen Erfassung hat, nutzen nur wenige Sensoren diese Technik. Jedoch gibt es noch weitere unabhängige Motion Capturing Verfahren. Eine Möglichkeit sind Sensoranzüge. Dabei werden alle relevanten Punkte des Menschen mit Bewegungssensoren und Lagesensoren ausgestattet. Dies ist jedoch mit einem hohen Arbeitsaufwand verbunden und die Aufnahmemöglichkeiten sind sehr beschränkt. [4, Seite 34]
  • 9. Charakteranimation durch Motion Capture 6 In der Industrie haben sich als Alternative inzwischen optische Lösungen durchgesetzt. Ein Raum wird mit mehreren Kameras ausgestattet. Jede Kamera hat einen anderen Winkel zu dem aufzunehmenden Objekt. Die Positionen und Neigungen der Kameras sind bekannt und werden während der Aufnahme auch nicht verändert. Nun werden bestimmte Punkte an dem aufzunehmenden Objekt markiert. Bei der Erkennung von Menschen werden dazu meistens weiße Kugeln benutzt, die auf einem schwarzen Anzug befestigt sind. Damit kann mit Hilfe von zwei Kameras, welche das Objekt aus verschiedenen Positionen aufnehmen, die Kugelposition im dreidimensionalen Raum mittels Triangulation berechnet werden. Die Positionsbestimmung kann durch weitere Kameras exakter werden. Das Verfahren wird inzwischen bei vielen professionellen Animationsfilmen eingesetzt. Dort muss dann nicht jede Bewegung einzeln animiert werden, denn die Bewegungen des Schauspielers werden einfach auf den zu animierenden Charakter übertragen. Es ist dennoch sehr viel manuelle Nachbearbeitung notwendig, wenn beispielsweise ein Mensch für die Animation nichtmenschlicher Objekte genutzt wird. Damit ein ausgewachsener Mensch einen Hasen steuern kann, bedarf es komplizierter Umrechnungsverfahren, um realistische Bewegungen zu erzeugen. [4, Seite 18] 4. RAW Daten Analyse Die RAW Daten Analyse ist die zentrale Umwandlung der erfassten Daten in die Positionsdaten der aufgenommenen Person. Ziel ist es, die Position von festgelegten Körperstellen im dreidimensionalen Raum zu bestimmen. Im ersten Schritt werden dazu die Kanten im Bild analysiert. Im zweiten Schritt werden bekannte Vorlagen mit dem Kantenbild abgeglichen, bis die Umrisse des Menschen gefunden wurden. Nun ist die Position und die Haltung der Person bekannt. Die wichtigen Körperstellen wurden zuvor auf den Vorlagen markiert und liegen nun auf den entsprechenden Stellen des Originalbildes. Im letzten Schritt wird die Position und die Tiefe der Markierungen berechnet. Somit ermittelt man, wo die gesuchte Körperstelle im Raum liegt. Dabei wird jedes einzelne Bild, das von der Kinect kommt, analysiert. Der PS1080 Chip, der in der Kinect genutzt wird, liefert einen Stream mit 30fps. Um anschließend
  • 10. Charakteranimation durch Motion Capture 7 auch 30 neue Positionsinformationen pro Sekunde zu erhalten, muss dem Prozess genug Rechenleistung zur Verfügung stehen. 4.1 Verbindung Kinect wird per USB an den Computer angeschlossen. Der Standard-Treiber ermöglicht es Entwicklern jedoch nur über die „Kinect vor Windows SDK“ auf die Funktionen des Sensors zuzugreifen [10, Seite 30]. Ein passender Open-Source- Treiber von PrimeSense kann problemlos nachinstalliert werden. Der Treiber enthält auch direkt die sogenannte Open NI API, über deren Schnittstellen der Zugriff auf die Daten des Audio-, Video- und Tiefensensors der Kinect erleichtert wird. [6] 4.2 Kanten Analyse Tiefendaten Die Daten des Tiefensensors werden als Array mit 307.200 Werten übergeben. Die Tiefenangaben sind Werte zwischen 0 bis 2047. Diese Werte werden in ein Graustufenbild umgewandelt und repräsentieren abhängig von der Tiefe einen Helligkeitswert zwischen 0 und 255. Da fehlende Werte keine gültige Tiefe besitzen, müssen diese zuvor auf 0 gesetzt werden. Der Canny-Algorithmus Nun beginnen wir mit dem Canny-Algorithmus, oder auch Canny Edge Detector genannt, die Kanten der Objekte zu analysieren. Dieser Algorithmus wurde 1986 von John Canny entwickelt und ist heute in der digitalen Bildanalyse weit verbreitet. [7] Datenvorverarbeitung Um die Daten für den Canny-Algorithmus brauchbar zu machen, benötigen wir das Graustufenbild, das aus den Tiefendaten erzeugt wurde. Um zu verhindern, dass Kanten an Stellen erkannt werden, an denen lediglich ein Bildrauschen vorliegt, wenden wir einen Gaußschen Weichzeichner auf das Bild an. Wie der Name schon sagt, beruht dieser Weichzeichner auf der Gauß-Funktion. Dabei werden die umliegenden Pixel eines Pixels betrachtet und der Wert des in der Mitte liegenden Pixels in Abhängigkeit davon angepasst. Dabei muss bei der Wahl der Tiefenbild mit der Kinect aufgenommen.
  • 11. Charakteranimation durch Motion Capture 8 Rechenparameter darauf geachtet werden, dass nur das Bildrauschen entfernt wird und keine relevanten Details. [8] Kanten-Erkennung Nun wird für jedes Pixel die Kantenrichtung und die Kantenstärke berechnet. Die Kantenrichtung wird auf 45° genau berechnet, da jedes Pixel nur 8 angrenzende Pixel besitzt. Wenn nun alle Kanten markiert sind, werden nur die stärksten Pixel gesucht und der Rest gelöscht, um alle Kanten auf die Breite von einem Pixel zu reduzieren (Non- maximum Suppression). [7] Zum Abschluss wird durch manuell oder automatisch bestimmte Schwellenwerte festgelegt, wie detailreich das entstandene Kantenbild sein soll. Dementsprechend werden schwächere Kanten gelöscht und nur die stärksten Kanten werden auf dem Bild angezeigt. 4.3 Erkennungsmuster Nun brauchen wir eine Vorlage von einem Menschen, der erkannt werden soll. Da ein Mensch jedoch viele Haltungen einnehmen kann und somit auch viele verschiedene Muster benötigt werden, um einen Menschen in allen Haltungen erkennen zu können, reduzieren wir die Suche erst einmal auf den Kopf. Der Kopf eines Menschen ist von der Form her immer ähnlich. Eine Kantenzeichnung, die als Vorlage genutzt wird, wird aber immer noch nicht genau so aussehen wie der Kopf in unserer Kantenzeichnung. Außerdem ist der Kopf eventuell gedreht oder hat eine andere Größe als die Vorlage. Deshalb wird zusätzlich ein Verfahren genutzt, dass 1988 von Gunilla Borgefors entwickelt wurde. [9] 4.4 Distance Transform Pyramid Tiefenbild nach der Kanten Erkennung Vorlage mit Punkten zum Tracking mehrere Layer mit unterschiedlicher Auflösung übereinander
  • 12. Charakteranimation durch Motion Capture 9 Mit diesem Verfahren ist es möglich, Übereinstimmungen zwischen einer Vorlage und einem Bild, unabhängig von der Skalierung zu finden. In unserem Beispiel nutzen wir den vereinfachten Fall, dass wir den Menschen von vorne sehen und somit nur eine Schablone brauchen. Auflösungspyramide Das Kantenbild wird als Grundlage, beziehungsweise als erster Layer genutzt. Nun wird ein zweites Bild mit geringerer Auflösung erstellt. Dabei werden immer vier Pixel des unteren Bildes genommen und zusammengefasst. Wenn eins der vier Pixel im unteren Bild eine Kante war, wird das neue Pixel auch eine Kante. So werden mehrere Layer übereinander gelegt. Entfernungsbilder Nun wird für jeden Pixel eines Layers berechnet, wie weit dieser von der nächsten Kante entfernt ist. Ist ein Pixel eine Kante, bekommt dieser die Entfernung null. Dies wird für alle Layer gemacht. Übereinstimmung Auf dem obersten Layer bewegen wir nun die Vorlage über das gesamte Bild und berechnen jedes Mal die Übereinstimmung. Dabei orientieren wir uns nicht an der Kante. Wir vergleichen die Entfernungen der Pixel auf dem Kantenbild, die unter der Kante von der Vorlage liegen. Dort, wo die Entfernungen am ähnlichsten sind, haben wir eine Übereinstimmung von Vorlage und Original. Nun skalieren wir die Vorlage an der Stelle so weit, dass sie mit dem Muster auf dem aktuellen Layer übereinstimmt. Diesen Vorgang wiederholen wir für alle Layer und haben zum Schluss die Position des Kopfes. Ausgehend von der Kopfposition kann jetzt der restliche Körper lokalisiert werden. Um bestimmte Punkte zu tracken, legen wir uns diese Punkte direkt auf unsere Vorlagen. Sind die Vorlagen an das aktuelle Kantenbild angepasst, wissen wir auch, wo der Punkt sich befindet, den wir tracken wollen. Über die Tiefenangabe und die Position im Bild wissen wir, Tiefenbild mit überlagerter Kantenvorlage
  • 13. Charakteranimation durch Motion Capture 10 wo sich dieses Körperteil, zum Beispiel die Gelenke, im dreidimensionalen Raum befindet. Dies ist eine Möglichkeit, die RAW Daten der Kinect zu analysieren und festgelegte Körperstellen im dreidimensionalen Raum zu lokalisieren. 4.5 NI mate Das Programm NI (Natural Interaction) mate von Delicode kann diesen Analyseprozess automatisieren. Basierend auf Open NI analysiert es in Echtzeit Motion Capture Daten von Sensoren wie der Kinect und gibt sie anschließend über Protokolle wie z.B. OSC (Open Sound Control) weiter. 5. 3D Charakter Das Erstellen eines dreidimensionalen Charakters für unsere Zwecke kann in vier Schritte gliedert werden. Die Vorbereitung, das Erstellen des Mesches, die Textur und das Rigging. Anschließend braucht das Modell noch eine Schnittstelle zu den Kinect Daten, um den Charakter steuern zu können. 5.1 Vorbereitung Da das Erstellen eines dreidimensionalen Objekts um eine Dimension komplexer ist, als das einfache Zeichnen einer Person auf ein Papier, empfiehlt es sich, im Zweidimensionalen zu beginnen. Wenn feststeht, wie das Modell später aussehen soll, fängt man mit Zeichnungen oder auch Fotografien aus verschiedenen Perspektiven an. Diese Vorlagen werden später als Grundlagen für das Modellieren genutzt. Um die Performance des endgültigen Spieles nicht mit unnötig vielen Polygonen zu belasten, sollte man schon bei der Vorbereitung darauf achten, nur das Nötigste zu zeichnen. Unsere zweidimensionalen Vorlagen können wir nun einfach neben uns legen oder direkt in Blender einbinden. Handelt es sich um eine Ansicht, die parallel zu einer der Achsen ist, gibt es in Blender die Möglichkeit, Hintergrundbilder einzubinden. Diese Bilder werden immer dann angezeigt, wenn die Sicht ebenfalls parallel zu der entsprechenden Achse liegt. 5.2 Das Mesch
  • 14. Charakteranimation durch Motion Capture 11 Zum fertigen Mesch führen wieder zahlreiche unterschiedliche Wege. Boxmodeling Bei dieser Methode wird ein einfacher Grundkörper als Ausgangsform genutzt. Meistens ein Würfel. Durch verschiedene Operationen wird dieser Körper so weit verändert, bis das gewünschte Modell entsteht. Diese Methode hat den Vorteil, auch ohne genaue Planung starten zu können, da das Modell einfach aus dem Grundkörper entsteht und man sehr schnell Ergebnisse sieht. [5] Polygon Modeling Beim Polygon Modeling wird jedes Polygon einzeln aufgebaut. Für diese Variante empfiehlt sich eine Vorlage, weil man die einzelnen Punkte genau nach der Vorlage setzen kann. Um so genauer und detailreicher man Muskeln, Falten und andere Körperteile nachbaut, desto realistischer wirkt das Objekt im Nachhinein. Dies geht jedoch schnell zur Lasten der Performance. Daher empfiehlt es sich, gerade für unsere Anwendung eher an Details zu sparen und diese danach über die Textur einzuarbeiten. [5] 3D Scanner Wohl eine der schnellsten und detailreichste Varianten, ein dreidimensionales Abbild von einem reellen Objekt zu erstellen, ist das 3D Scanning. Diese Technik wäre auch mit der Kinect möglich. Dabei wird ein Objekt von einem 3D Scanner von allen Perspektiven aus abgetastet und anschließend automatisch ein Modell erstellt. Diese Technik liefert allerdings eine große Anzahl an Polygonen und ist daher für unsere Anwendung nicht zu empfehlen. Modell Generatoren Inzwischen wurden auch einige Programme entwickelt, die nach eigenen Vorstellungen fertige Modelle generieren. Open Source Projekte wie MaceHumen liefern schnelle und gute Ergebnisse. Für unsere Anwendung sind aber auch diese Objekte immer noch zu detailreich. Mesch mit Textur
  • 15. Charakteranimation durch Motion Capture 12 Auf genauere Modellingverfahren und nützliche Funktionen gehe ich hier nicht weiter ein. 5.3 Rigging Wenn nur eine Pose gebraucht wird, könnte das Mesch so genutzt werden wie es ist. Da die Charaktere sich aber im Spiel bewegen müssen und jMonkey nur Knochen- Animationen unterstützt, benötigt das Mesch noch ein Skelett. Das Erstellen eines Skeletts nennt man Rigging. Dazu setzt man in das Mesch sogenannte Bones, um die Animation zu erleichtern. Dabei kann man sich an einem menschlichen Skelett orientieren. Für den Import in jMonkey ist es wichtig, dass das Rig einen Root Bone besitzt, der mittig am Boden des Mesches sitzt. An diesem Knochen laufen alle anderen Knochen zusammen. Somit kann die Position des gesamten Objektes mit dem einen Knochen gesteuert werden. 5.4 Skinning Beim Skinning wird das Skelett mit dem Mesch verknüpft. Dazu kann man entweder dem Skelett das Mesch unterordnen nutzt einen Skelettmodifikator nutzen. Auf beide Systeme kann man durch Vertex Groups oder die Weight Painting Funktion von Blender Einfluss nehmen. 5.5 Kinect Schnittstelle Um die Positionsdaten der Kinect in Blender darzustellen, empfehlen sich Emptys. Emptys sind keine Geometrien. Es sind lediglich Objekte mit Positions- und Rotationsinformationen. Emptys werden nicht gerendert und können auch nicht bearbeitet werden. Nun benennen wir ein Empty genau so wie einen Punkt aus dem Motion Capturing. NI mate sendet die Positionsdaten und den Namen des zugehörigen Punktes über OSC an den Client. Der Client ist in unserem Fall ein Blender Plugin, das die Positionsdaten nun auf das gleichnamige Empty überträgt. Visualisierung von Emptys Skelett / Rig
  • 16. Charakteranimation durch Motion Capture 13 Starten wir das System, können wir über Kinect schon die Emptys in Blender bewegen. Nun muss der Charakter noch die Positionen von unseren Emptys übernehmen. Dazu nutzen wir Bone Constraints. Die Position des Körpers können wir komplett von einem der zentralen Emptys übernehmen. Dazu lassen wir die Position eines zentralen Emptys auf einen Knochen kopieren, der eine ähnliche Position im Körper hat und die anderen Knochen beeinflussen kann. Bei allen anderen Emptys sollte man nicht die gesamte Position kopieren, da es sonst zu Problemen kommt, wenn die menschlichen Proportionen nicht mit den Proportionen des Charakters übereinstimmen. Sinvoller ist es, den Knochen nur in die Richtung des Emptys zu führen. Die Funktion in Blender findet sich unter den Bone Constrains und heißt „Track To“. Sobald alle notwendigen Emptys mit dem Charakter verbunden sind, kann das gesamte System gestartet werden und der Charakter lässt sich über Kinect in Blender bewegen. 6. Animation Sobald das Live Motion Capturing funktioniert, können wir mit der eigentlichen Animation beginnen. 6.1 Vorbereitung Das System sollte in einem Raum installiert werden, in dem der Sensor die besten Ergebnisse erzielen kann. Das heißt, möglichst wenig Umgebungslicht und vor allem kein Infrarotlicht. Außerdem sollte genug Platz vorhanden sein. Auch Gegenstände, die Ähnlichkeiten von menschlichen Mustern aufweisen und stark reflektierende, bzw. extrem absorbierende Flächen können stören. Auch die Kleidung spielt eine wichtige Rolle bei der Aufnahme. Weite Kleidung oder Röcke sind zu vermeiden, da der Computer sonst Schwierigkeiten bekommt, die genauen Positionen von Gelenken oder Körperteilen zu bestimmen. Skelett mit Verknüpfung zu den Emptys
  • 17. Charakteranimation durch Motion Capture 14 Bevor man die Aufnahme beginnt, sollte noch festgelegt werden, was für Bewegungen aufgenommen werden sollen, um diese anschließend möglichst klar auszuführen. 6.2 Aufnahme Für die Aufnahme gibt es zwei verschiedene Wege in Blender. Entweder Schritt für Schritt oder in einem kontinuierlichen Verfahren alles auf einmal. Der erste Weg ist, eine Pose einzunehmen und diese Körperhaltung zu speichern. Anschließend kann man die Pose etwas verändern und die Körperhaltung erneut speichern. Diese Methode ist sehr zeitaufwändig. Wenn es sich jedoch um eine Bewegung handelt, die ein Mensch nicht ohne weiteres ausführen kann, empfiehlt sich diese Methode. Dabei werden nur die wichtigsten Daten gespeichert. Durch die geringere Datenmenge lässt sich anschließend die Animation leichter bearbeiten. Für die deutlich schnellere zweite Methode nutzt man die Auto Keyframing Funktion von Blender. Dabei setzt Blender die Keyframes bei Bewegungen von Objekten oder Knochen automatisch. Diese Methode speichert meistens sehr viele Keyframes. Es ist möglich, Bewegungen in Echtzeit aufzunehmen, mit dem Nachteil eines höheren Bearbeitungsaufwandes bei Anpassungen. 6.3 Nachbearbeitung Die entstandenen Keyframes könnte man zwar direkt so lassen. Jedoch empfiehlt es sich, die Daten noch nachzubearbeiten, da Aufnahmefehler vorkommen können. Dazu können entweder einzelne Keyframes geöffnet und Posen geändert oder mit dem Graph Editor von Blender Fehler gelöscht oder Bewegungen korrigiert werden. Sollen mehrere Animationen erstellt werden, speichert man diese zuerst hintereinander in die Timeline. Nun definiert man den Start- und End-Frame einer Animation und wandelt sie anschließend über die Bake Action Funktion in Blender in eine Action um. 7. Import in die jMonkeyEngine Sind nun alle gewünschten Animationen aufgenommen und bearbeitet, können die fertigen Blender Dateien ohne Umwege in jMonkey importiert werden. Dazu muss
  • 18. Charakteranimation durch Motion Capture 15 man jedoch die Anforderungen von jMonkey an solche Dateien sehr genau beachten. Nach dem Import werden die Dateien automatisch in .j3o Files konvertiert. Diese Dateien können im jMonkey integrierten Scene Composer geöffnet und bearbeitet werden. Auch die Animationen lassen sich dort abspielen. Um unseren Charakter nun in das Spiel zu integrieren, bedarf es noch etwas Programmcode. Die jMonkeyEngine besitzt ein eigenes Entity System, zu dem wir unseren Charakter hinzufügen. Außerdem erstellen wir eine Klasse zu dem Entity, über die unter anderem die Figur als Form zum Spiel hinzugefügt wird und die Animationen gestartet und gestoppt werden. 8. Fazit Zur herkömmlichen Animationsmethode bieten Motion-Capturing-Verfahren viele neue Möglichkeiten. Jedoch bringen sie auch ihre Schwierigkeiten mit sich. So sollte man sich einige Fragen stellen, bevor man beschließt, eine Animation per Motion- Capture-Verfahren aufzunehmen. Ist die Technik genau genug, um die erwünschten Bewegungen zu erfassen? Nicht nur die Auflösung kann zu Problemen führen, auch die Verarbeitungsgeschwindigkeit spielt eine große Rolle. Soll z.B. eine Kampfszene etwas langsamer wiedergeben werden, um sie dramatischer zu gestalten, braucht man deutlich mehr als 30fps, um anschließend noch ein flüssiges Bild zu haben. Kann man die Animation eventuell über einen anderen Weg einfacher realisieren? Gerade wenn es darum geht, unrealistische Lebewesen zu steuern, muss genau überlegt werden, wie man die Bewegung des Menschen auf die zu animierende Figur überträgt. Welches System ist das Sinnvollste? Kinect reicht sicherlich nur für einen Hobbyanimator, aber auch bei professionellen Systemen gibt es viele Unterschiede. Und, und, und, ... Ob sich Kinect für unser jMonkey Spiel lohnt? Ja! Denn solange wir das Spiel entwickeln, um dabei etwas zu lernen, lohnt es sich. Würden wir das Spiel für kommerzielle Zwecke entwickeln, wäre es sicherlich
  • 19. Charakteranimation durch Motion Capture 16 einfacher, auf die Genauigkeit der Animationen zu verzichten und sie einfach per Hand zu erstellen.
  • 20. Charakteranimation durch Motion Capture 17 9. Literaturverzeichnis [1] Buch − Titel: Beginning Kinect Programming with the Microsoft Kinect SDK − Autor: Jarrett Webb und James Ashley − Erscheinungsdatum: 6. März 2012 − Verlag: Apress [2] Webseite − URL: http://wiki.zimt.uni- siegen.de/fertigungsautomatisierung/index.php/Einsatzmöglichkeiten_einer_3 D-Kamera_in_der_Produktionstechnik_am_Beispiel_der_Kinect-Kamera − aufgerufen am: 24.8.2014 [3] Webseite − URL: http://ntuzhchen.blogspot.de/2010/12/how-kinect-works-prime- sense.html − aufgerufen am: 24.8.2014 [4] Buch − Titel: Understanding Motion Capture for Computer Animation − Autor: Alberto Menache − Auflage: Second Edition − Erscheinungsdatum: 24. Januar 2011 − Verlag: Morgan Kaufmann [5] Diplomarbeit − Titel: Realismus bei der 3D-Charaktermodellierung des Menschen − Autor: Denis Schröder − URL: https://www.informatik.hu- berlin.de/forschung/gebiete/viscom/thesis/final/Diplomarbeit_Schroeder_2012 12.pdf − aufgerufen am: 26.8.2014 [6] Webseite − URL: http://www.heise.de/newsticker/meldung/Offizielle-Open-Source-Treiber- fuer-Kinect-1152510.html − aufgerufen am: 27.8.2014
  • 21. Charakteranimation durch Motion Capture 18 [7] Paper − Titel: A Computational Approach to Edge Detection − Autor: John Canny − Erscheinungsdatum: 6. November 1986 (aktuell: 27.Januar 2009) − Verlag: IEEE − URL: http://www.cim.mcgill.ca/~image529/TA529/Image529_99/assignments/edge_ detection/references/canny-pami.pdf [8] Masterarbeit − Titel: Human detection and extraction using kinect depth images − Autor: Sundar Narayan Krishnamurthy − URL: http://nccastaff.bournemouth.ac.uk/jmacey/MastersProjects/MSc11/Sundar/Hu man_Detection_and_Extraction_using_Kinect_Depth_Images_Thesis.pdf − aufgerufen am: 27.8.2014 [9] Paper − Titel: Hierarchical chamfer matching: a parametric edge matching algorithm − Autor: Gunilla Borgefors − Erscheinungsdatum: 6. November 1988 (aktuell: 6.August 2002) − Verlag: IEEE − URL: http://www.cs.berkeley.edu/~malik/cs294/borgefors88.pdf [10] Buch − Titel: Kinect for Windows SDK Programming Guide − Autor: Abhijit Jana − Erscheinungsdatum: 26. Dezember 2012 − Verlag: Packt Publishing Bildnachweis Alle Bilder, Grafiken und Tabellen von Finn Süberkrüb. Die Abbildungen unterliegen ausschließlich dem Urheberrecht von Finn Süberkrüb.