Version 1.6 | Datum 06/10/2009
  mediajournal
 
       
   

Motion Capture für Interaktive Webseiten




Zusammenfassung: Durch Motion-Capturing werden die Bewegungen eines realen Objektes (Mensch, Tier, ...) aufgezeichnet und in digitaler Form zur Verfügung gestellt. Diese Daten können dann in diversen Anwendungen weiter verarbeitet werden, meistens in 3D-Animations-Programmen wie 3D-Studio Max oder Maya. Unser Ansatz war jedoch, diese Daten zur Animation eines "Avatars" in Flash zu verwenden, und zwar zur Realisierung einer Webseite für die John Cranko Gesellschaft. Die Schwierigkeit dabei war, die Anbindung der von Motion Capturing generierten Daten an Flash zu realisieren. Der ganze Arbeitsablauf wurde ist in einem Quicktime-Film (33,5 MB) dargestellt.

Kommentar: Ausgangspunkt für diesen Artikel ist ein Vortrag im Rahmen des Internet Seminars im Sommersemester 2002 an der Hochschule der Medien bei Prof. Dr. Johannes Schaugg. Diese beschriebenen Arbeiten wurden unterstützt durch Prof. Dr. Bernd Eberhard, der sein Vicon-Motion-Capture-System zur Verfügung stellte und die Studenten Jochen Bomm und Andrea Hiller. N.N. von der John Cranko Gesellschaft stellte den Kontakt zum Karlsruher Ballett her. Der Chef des Karlsruher Balletts Piere Wyss und sein Tänzer Hugo Vieira haben sich für die Aufnahmen zur Verfügung gestellt.

Motion-Capturing

Die Technik des Motion-Capturing basiert auf der kontinuierlichen Erkennung der Raumkoordinaten von bestimmten am Objekt angebrachten Markern (Targets). Zur besseren Erkennung und Lokalisierung der Targets hat man für diese die Kugel-Form gewählt, da die Kugel aus jedem Blickwinkel immer als Kugel zu erkennen ist, und eine eindeutige Bestimmung des Mittelpunktes zulässt.

Jochen Bomm befestigt die Targets an dem Anzug von Tänzer Hugo Vieira.

Zur möglichst genauen Aufnahme der jeweiligen Position der Targets müssen mehrere Bedingungen erfüllt werden:

Es müssen genügend Kameras (in unserem Falle 6) eingesetzt werden, um auch für eine Kamera eventuell unsichtbaren Target durch (mindestens zwei) andere Kameras zu erfassen.

Spezial-Kamera mit schmalbandigem IR-Strahler, samt dazu gehörigem Filtervorsatz.

Der durch die Kameras erfasste Raum muss genügend groß sein, um ein Erfassen der Targets zu jedem Zeitpunkt zu ermöglichen. Dieser Raum wird durch die Brennweiten der Kameras und deren Abstand zueinander beeinflusst.

Jedes Target muss zur eindeutigen Bestimmung seiner Position von mindestens 2 (3) Kameras gleichzeitig erfasst werden. Um störende Einflüsse durch die Umgebung möglichst weit auszuschliessen, werden IR-Scheinwerfer mit einem farblich sehr begrenzten Spektrum eingesetzt; die Objektive der Kameras werden mit entsprechenden Filtern bestückt; die Targets haben die Eigenschaft, genau dieses Lichtspektrum gut zu reflektieren.

Das Objekt (in unserem Falle ein Ballett-Tänzer) trägt dementsprechend einen nicht-reflektierenden schwarzen Anzug Die Targets werden an für die Bewegungsaufzeichnung wichtigen Punkten des Objektes befestigt, zum Beispiel an Fuß-, Knie-, Handgelenken, um so die Bewegung der einzelnen Körperteile bestimmen zu können. Zusätzliche Targets sichern die Details.Vor dem eigentlichen Capturing müssen die Positionen der Targets am unbewegten Objekt kalibriert werden. In unserem Fall nahm der Tänzer eine Position mit gespreizten Armen und Beinen ein. Der Operator bestimmte die Positionen und die Zuordnung der Targets zu den einzelnen Körperteilen.

Kalibrierung der Ursprungspositionen der Marker (Targets)

Um eine möglichst gute Auflösung der Bewegungen der Targets zu erreichen, werden beim Capture Framerates von bis zu 120 fps eingesetzt.

Um solche Bewegungen auch noch aufzeichnen zu können, wurde das Motion Capturing mit 120 fps durchgeführt.

Nach erfolgter Aufnahme werden die erfassten Daten in eine Plattform-spezifische 3D-Software übernommen, angezeigt, und bei Bedarf nachbearbeitet. Hier können auch sogenannte "Dropouts" unter Umständen noch korrigiert werden. Diese entstehen durch zeitweise Verdeckung der Targets, d.h. keine oder nicht genügend Kameras können zu einem gewissen Zeitpunkt ein bestimmtes Target erkennen. Dieses Target wird daraufhin auch im weiteren Verlauf nicht mehr korrekt erkannt.

s

Die Software ermöglicht noch Korrekturen nach dem Capturing, so etwa bei "Verlust" eines Targets.

Um die erfassten Daten zur weiteren Verarbeitung zur Verfügung zu stellen, werden diese aus dem Plattform-spezifischen Format in das *.csm -Format übertragen. Dieses Format wird von den meisten 3D-Animations-Programmen unterstützt, und besteht im wesentlichen aus einer ASCII-Liste der x, y und z - Koordinaten jedes Targets in jedem aufgezeichneten Frame.

Der ganze Arbeitsablauf wurde ist in einem Quicktime-Film (33,5 MB) dargestellt.

PHP

Zur Darstellung dieser Daten in einer Flash-Webseite müssen die gelieferten Daten weiter verarbeitet werden. Das Projekt sieht eine Möglichkeit des Uploads der Motion-Capture-Daten vor, weswegen die für Webanwendungen weit verbreitete Programmiersprache PHP eingesetzt wird. Die PHP-Skripte haben die Aufgabe, die gelieferten Daten für eine Darstellung in Flash anzupassen, und dabei besonders die Datenmenge zu reduzieren (1 Minute Motion-Capture-Daten entsprichen ca. 6 MB), und die nötigen Berechnungen (siehe weiter unten) durchzuführen.

Es werden hier zwei Skript-Varianten eingesetzt: eine Variante für die spätere interaktive Verwendung in Flash, eine Variante zur reinen Darstellung der Animation (nicht interaktiv)Beiden Varianten gemeinsam ist die Möglichkeit, nicht benötigte Target-Koordinaten wegzulassen, sowie redundante Daten zu reduzieren. Die Anzahl der Nachkommastellen wird begrenzt, da Flash sowieso nur die Darstellung ganzer Pixel beherrscht (auch wenn die Flash-Eingabemöglichkeiten andere Werte zuzulassen scheinen). Weiterhin bieten die Skripte die Möglichkeit, die gewünschten Anfangs- und End-Frames auszuwählen, sowie die Framerate zu bestimmen.

Die interaktive Skript-Variante gibt nach der oben genannten Verarbeitung der ursprünglichen Datei die (3D) x, y und z - Koordinaten der Targets in 2-dimensionalen Arrays an Flash weiter, die weitere Umrechnung der Daten geschieht in Flash. Es werden 2 Nachkommastellen zugelassen, um eine genauere Berechnung in Flash zu ermöglichen.

Die nicht-interaktive Variante nimmt bereits alle 3D zu 2D Umrechnungen (siehe weiter unten) vor, und gibt nur die vorberechneten (2D) x und y - Koordinaten an Flash weiter. Diese Koordinaten werden als Integer-Werte (gerundet) übermittelt. Die Drehungs-, Positionierungs- und Skalierungs-Operationen werden auch von diesem Skript übernommen.

3D zu 2D Umrechnung

Die Umrechnung von 3D in 2D Koordinaten erfolgt unter Verwendung der vertikalen Y-Koordinate (3D_Y) zur Darstellung der vertikalen Koordinate in Flash. Die horizontale Koordinate ergibt sich aus der anteiligen Einbeziehung der X- und Z-Koordinaten (3D_X , 3D_Z), die jeweils mit dem Sinus bzw. Cosinus des Drehwinkels (w) multipliziert werden.

2D_X = 3D_X * sin(w) + 3D_Z * cos(w)

Flash

Zur Darstellung der Animation in Flash wurde die Version FlashMX gewählt, da diese durch die neu hinzugekommene Zeichen-API eine höhere Effizienz bietet als die Vorgängerversionen. In einem Array werden diejenigen Targets festgelegt, die durch Bögen verbunden werden sollen. In einen neu erstellten MovieClip (1 x pro Frame) werden diese Bögen gezeichnet. Der nächste MovieClip wird eine Ebene höher eingefügt. Alle davor erschienenen MovieClips werden jeweils um einen bestimmten Faktor transparenter. Bei völliger Transparenz wird der MovieClip entladen (Effizienz).

So sieht der fertige Flash-Film aus. Daneben gibt es auch einen interaktiven Flash-Film (116 kB).

Optimierungen

Desweiteren sind hier Arbeiten notwendig, die nicht näher beschrieben werden: Reduzierung der Nachkommastellen der vom Motion-Capturing gelieferten Daten, Verlegung der meisten Berechnungen in das PHP-Skript, Koordinaten-Reduktion, keine Skalierung in Flash.

Achim Bitzer, Hugo Vieira, Pierre Wyss, Prof. Dr. Schaugg, Stephan Deierlein und Jochen Bomm beobachten gespannt die Resultate des Capturing.