Gymnasium Weilheim Abiturjahrgang 2015
S E M I N A R A R B E I T
Rahmenthema des Wissenschaftspropädeutischen Seminars:
Pr...
Charakteranimation durch Motion Capture
	
	 	
2
Inhaltsangabe
1. Einleitung 4
2. Der Kinect Sensor 5
2.1 Technische Daten ...
Charakteranimation durch Motion Capture
	
	 	
3
5. 3D Charakter 12
5.1 Vorbereitung 12
5.2 Das Mesch 13
• Boxmodeling 13
•...
Charakteranimation durch Motion Capture
	
	 	
2
1. Einleitung
Ein Spiel zu entwickeln heißt, eine Vielzahl verschiedener A...
Charakteranimation durch Motion Capture
	
	 	
3
2. Der Kinect Sensor
Microsoft Kinect ist ein Sensor der
ursprünglich zur ...
Charakteranimation durch Motion Capture
	
	 	
4
2.5 Tiefensensor
Der Tiefensensor besteht aus einem Infrarot-Projektor
und...
Charakteranimation durch Motion Capture
	
	 	
5
ursprüngliche Punktpositionen aufgrund des Zusammenhanges im Muster zu
erm...
Charakteranimation durch Motion Capture
	
	 	
6
In der Industrie haben sich als Alternative inzwischen optische Lösungen
d...
Charakteranimation durch Motion Capture
	
	 	
7
auch 30 neue Positionsinformationen pro Sekunde zu erhalten, muss dem Proz...
Charakteranimation durch Motion Capture
	
	 	
8
Rechenparameter darauf geachtet werden, dass nur das Bildrauschen entfernt...
Charakteranimation durch Motion Capture
	
	 	
9
Mit diesem Verfahren ist es möglich, Übereinstimmungen zwischen einer Vorl...
Charakteranimation durch Motion Capture
	
	 	
10
wo sich dieses Körperteil, zum Beispiel die Gelenke, im dreidimensionalen...
Charakteranimation durch Motion Capture
	
	 	
11
Zum fertigen Mesch führen wieder zahlreiche unterschiedliche Wege.
Boxmod...
Charakteranimation durch Motion Capture
	
	 	
12
Auf genauere Modellingverfahren und nützliche Funktionen gehe ich hier ni...
Charakteranimation durch Motion Capture
	
	 	
13
Starten wir das System, können wir über Kinect schon die Emptys in Blende...
Charakteranimation durch Motion Capture
	
	 	
14
Bevor man die Aufnahme beginnt, sollte noch festgelegt werden, was für
Be...
Charakteranimation durch Motion Capture
	
	 	
15
man jedoch die Anforderungen von jMonkey an solche Dateien sehr genau
bea...
Charakteranimation durch Motion Capture
	
	 	
16
einfacher, auf die Genauigkeit der Animationen zu verzichten und sie einf...
Charakteranimation durch Motion Capture
	
	 	
17
9. Literaturverzeichnis
[1] Buch
− Titel: Beginning Kinect Programming wi...
Charakteranimation durch Motion Capture
	
	 	
18
[7] Paper
− Titel: A Computational Approach to Edge Detection
− Autor: Jo...
Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)
Nächste SlideShare
Wird geladen in …5
×

Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

310 Aufrufe

Veröffentlicht am

Seminararbeit Finn Süberkrüb Charakteranimation durch Motion Capture mittels Microsoft Kinect.

Veröffentlicht in: Ingenieurwesen
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
310
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
6
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

  1. 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. 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. 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
  4. 4. 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.
  5. 5. 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.
  6. 6. 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.
  7. 7. 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]
  8. 8. 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
  9. 9. 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.
  10. 10. 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
  11. 11. 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
  12. 12. 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
  13. 13. 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
  14. 14. 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
  15. 15. 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
  16. 16. 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
  17. 17. 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
  18. 18. Charakteranimation durch Motion Capture 16 einfacher, auf die Genauigkeit der Animationen zu verzichten und sie einfach per Hand zu erstellen.
  19. 19. 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
  20. 20. 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.

×