+ All Categories
Home > Engineering > Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

Date post: 20-Mar-2017
Category:
Upload: rpex
View: 819 times
Download: 0 times
Share this document with a friend
21
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
Transcript
Page 1: Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

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

Page 2: Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

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

Page 3: Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

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

Page 4: Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)
Page 5: 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.

Page 6: Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

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.

Page 7: Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

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.

Page 8: Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

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]

Page 9: Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

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

Page 10: Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

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.

Page 11: Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

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

Page 12: Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

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

Page 13: Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

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

Page 14: Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

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

Page 15: Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

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

Page 16: Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

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

Page 17: Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

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

Page 18: Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

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

Page 19: Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

Charakteranimation durch Motion Capture

16

einfacher, auf die Genauigkeit der Animationen zu verzichten und sie einfach per

Hand zu erstellen.

Page 20: Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

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_3D-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_201212.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

Page 21: Charakteranimation durch Motion Capture mittels Microsoft Kinect (Seminararbeit)

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/Human_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.


Recommended