Für dieses Tutorial habe ich absichtlich ganz gewöhnliches, mit einem Smartphone aufgenommenes Footage-Material verwendet, um auf die alltäglichen Probleme zu stoßen. So ist der Blickwinkel auf die linke Mauerwand sehr steil, außerdem bewegen sich einige Pflanzen. Falls ihr das Tutorial direkt nachvollziehen möchtet, findet ihr den verwendeten 2D-Film „Mauern.mov“ beim Arbeitsmaterial.
2D-Tracking des Footage-Materials
Wir beginnen den Motion-Tracking-Workflow wie üblich mit dem Tracking des 2D-Films. Dazu holen wir uns ein Motion Tracker-Objekt aus dem Menü Motion Tracker in eine neue, leere Cinema 4D-Szene.
Damit der Motion-Tracker den Film analysieren kann, öffnen wir den Einstellungsdialog des Motion Tracker-Objekts im Attribute-Manager auf der Footage-Seite. Per Klick auf den Lade-Button in der Footage-Zeile gelangen wir zum Öffnen-Dialog.
Dort wählt ihr den mitgelieferten 2D-Film als Footage aus und ladet ihn über den Button Open in das Motion Tracker-Objekt.
Der Resample-Wert für die Analyse des Footage bezieht sich nur auf den anstehenden Tracking-Vorgang für die Kamera-Rekonstruktion. Bei der späteren Szenen-Rekonstruktion verwendet Cinema 4D generell die bestmögliche Qualität des Films. Doch auch für die Kamera-Rekonstruktion kann ein hoher Wert (außer der etwas längeren Rechenzeit) nicht schaden.
Für das 2D-Tracking wechseln wir auf die gleichnamige Seite des Motion Tracker-Einstellungsdialogs. Wir beschränken uns auf automatisches Tracking, da wir keine speziellen Tracking-Punkte für den späteren Aufbau benötigen. Damit dabei auch sicher ausreichend Tracking-Information vorhanden ist, setzen wir die Track-Anzahl auf 2000, bei einer Minimaldistanz von 25.
Nach Klick auf den Button Auto-Tracks erzeugen …
… finden wir die gewünscht hohe Zahl an Tracking-Punkten sehr gleichmäßig in unserem Footage-Material verteilt vor.
Damit sich der Motion-Tracker etwas toleranter bei schnellen Kamerabewegungen zeigt, wechseln wir vor dem Tracking noch kurz auf die Optionen-Seite und aktivieren dort die Option Suchposition extrapolieren.
Jetzt können wir das 2D-Tracking auf der Seite Automatisches Tracking über den Button < Auto-Track > starten.
Nachdem der Motion-Tracker seine Arbeit beendet hat, lassen wir den getrackten 2D-Film per Klick auf den Abspielbutton testweise laufen, um zu kontrollieren, ob über den gesamten Verlauf des Films genügend Tracking-Punkte erhalten bleiben.
3D-Rekonstruktion der Kamera
Aus diesen Track-Informationen werden wir im folgenden Schritt die Kamerainformationen rekonstruieren. Dazu wechseln wir zur nächsten Seite im Motion Tracker-Einstellungsdialog, zur 3D-Berechnung. Wir können die voreingestellten Werte für die Volle 3D-Rekonstruktion belassen, da der Motion-Tracker die Brennweite selbst bestimmen soll.
Nach Klick auf den Button 3D-Rekonstruktion erfolgt die 3D-Berechnung der Kamerainformation.
Das Ergebnis der 3D-Berechnung zeigt – wie nicht anders zu erwarten – die meisten grünen Features bei den gut einsehbaren, nicht bewegten Bereichen, während die bewegten Pflanzen und die steile linke Wand aufgrund der im Verhältnis schnellen Bewegungen der Kamera die mit roten Features ausgewiesene Problemzone bleibt.
Kalibrierung der Szene
Bevor es an die Szenen-Rekonstruktion geht, kalibrieren wir die vorliegende Szene mit Constraints. Dieser Schritt ist zwar für die Rekonstruktion theoretisch nicht unbedingt nötig, bringt die Szene aber gleich an einen brauchbaren Bezugspunkt (Ursprung) und in eine korrekte Achslage und Skalierung.
Damit wir die für diesen Schritt besten Tracking-Punkte gut erreichen, versetzen wir den Zeitregler auf einen späten Zeitpunkt, der uns hochwertige Tracking-Punkte garantiert.
Wir beginnen mit der Bestimmung des Szenen-Ursprungs. Dazu weisen wir dem Motion Tracker-Objekt über das Menü Motion Tracker>Constraints ein Positions-Constraint zu.
Um nun einen Tracking-Punkt als Ursprung der Szene zu deklarieren, klicken wir mit dem aktiven Positions-Constraint-Werkzeug auf einen in der Mitte des Boden liegenden Tracking-Punkt. Die dicke, orange Umrandung des Tracking-Punkts zeigt uns an, dass der Ursprung damit bestimmt ist.
Wir können uns im Einstellungsdialog des dem Motion-Tracker-Objekt zugewiesenen Positions-Constraint-Tags vergewissern, dass der von uns gewählte Szenen-Ursprung sich an einem hochwertigen, weil grün gefärbten Feature-Ziel (hier: Auto 0661) gebunden ist.
Wir fahren fort mit einem Ebenen-Constraint aus dem Menü Motion Tracker>Constraints, über den wir die Ausrichtung der Y-Achse festlegen wollen.
Mit dem nun aktiven Ebenen-Constraint-Werkzeug spannen wir ein Dreieck durch Klick über drei auf der Boden-Ebene liegenden Tracking-Punkte. Beobachtet dabei auch immer die Ausrichtung der gezeigten Achse. Mit dem Verschieben-Werkzeug könnt ihr die Dreiecks-Punkte nachträglich selektieren und testweise auf andere, möglicherweise besser geeignete Tracking-Punkte setzen.
Wenn ihr mit dem Ergebnis so weit zufrieden seid, müssen wir für den Ebenen-Constraint nur noch die gewünschte Achse festlegen. Dies erfolgt im Einstellungsdialog des Ebenen-Constraint-Tags, wo wir die Y-Achse wählen.
Im letzten Schritt der Kalibrierung legen wir noch die Ausrichtung der Z-Achse und gleichzeitig die Skalierung der Szene fest. Dafür holen wir uns einen Vektor-Constraint aus dem Menü Motion Tracker>Constraints.
Mit dem Erzeugen des Vektor-Constraints haben wir eine Linie in der 3D-Ansicht erhalten, die wir auf zwei geeignete Tracking-Punkte an der rechten Mauer verschieben, um die Lage der Z-Achse zu definieren.
Nachdem die Linie über zwei zum Verlauf der Mauer parallel liegende Tracking-Punkte positioniert wurde, öffnen wir den Einstellungsdialog des Vektor-Constraint-Tags und legen dort fest, dass die Vektor-Constraint-Linie die Z-Achse definiert.
Um bei dieser Gelegenheit auch gleich die Skalierung der Szene zu erledigen, setzen wir die vorgegebene Länge auf Bekannt und geben eine Schätzung für die Länge der Linie (in meinem Fall 1,5 Meter) ab.
Wie wir an der Grünfärbung der beiden Linien-Ziele sehen, sind auch diese Tracking-Punkte für die Kalibrierung gut geeignet.
Wechseln wir nach Abschluss der Kalibrierung durch Klick auf das kleine Kamera-Symbol neben der rekonstruierten Kamera kurz in die Editor-Kamera, um uns die bis hierher rekonstruierte Szene anzusehen.
Wie gewünscht, liegt der Boden der Einmauerung auf der XZ-Ebene unseres Welt-Koordinatensystems. Bei der Unebenheit des Bodens und der mit Sicherheit auch nicht wirklich lotrechten Mauer können wir mit diesem Ergebnis ganz zufrieden sein.
3D-Rekonstruktion der Einmauerung
Nach den nun endlich erledigten Vorarbeiten kommen wir zur eigentlichen Neuerung in Release 19, der Rekonstruktion der Szene auf Basis der 2D-Filmdaten.
Wir wechseln dazu zur letzten Seite des Einstellungsdialogs des Motion Tracker-Objekts, zur Rekonstruktion. Hier wählen wir als Erstes das Preset Hohe Qualität, das wir gleich noch an unsere Anforderungen anpassen.
Die Szenen-Rekonstruktion teilt sich in die Erzeugung einer Punktewolke sowie das anschließende Meshing, die Umsetzung dieser Punktewolke in ein Polygon-Mesh auf. Beides würde automatisch hintereinander ablaufen, da wir das Preset Hohe Qualität gewählt haben. Da wir aber zunächst nur die Punktewolke erhalten möchten, um diese vor dem Meshing zu überprüfen, aktivieren wir die Option Nur Punktwolke, bevor wir die Rekonstruktion per Klick auf den Button Szenenrekonstruktion starten anstoßen.
Je nach Geschwindigkeit des Rechners kann es nun durchaus ein paar Minuten dauern, bis nach Beendigung der Szenen-Rekonstruktion ein Polygonobjekt mit einer Szenenpunktewolke erzeugt wird. Dieses Punktewolke-Objekt besitzt ein Vertex-Farben-Tag, das die einzelnen Punkte der Punktewolke praktischerweise gleich mit der rekonstruierten Farbinformation zeigt.
In der Editor-Kameraansicht haben wir daher schon allein mit dieser gefärbten Punktwolke eine sehr aussagekräftige Information über die Rekonstruktion und das zu erwartende Meshing.
Im vorliegenden Fall können wir mit dem Ergebnis natürlich nicht zufrieden sein. Von der hinteren Wand ist gar nichts zu sehen, der Boden stellt sich nur in vereinzelten Bruchstücken dar – das Meshing haben wir uns zu Recht gespart.
Wir müssen also die Einstellungen für die Erzeugung der Punktewolke an die Anforderungen unseres Footage anpassen. Zum einen verringern wir den minimalen Winkel auf 2°, um der Rekonstruktion bei der linken und hinteren Wand auf die Sprünge zu helfen. Damit gleichen wir das Problem des spitzen Winkels an der linken Wand und der vorliegenden geringen Kamerabewegung aus.
Durch die Erhöhung der Patchgröße auf 30 erreichen wir ein größeres Suchmuster, was die Qualität der Punktwolke erhöht. Schließlich deaktivieren wir noch die Option Kleine Gruppen filtern, um zu verhindern, dass feine, aber eben wichtige Patches ausgefiltert werden.
Wir löschen noch das Polygonobjekt der alten Punktewolke im Objekt-Manager, bevor wir mit einem Klick auf den Button Szenenrekonstruktion starten einen erneuten Anlauf wagen.
Die Erzeugung der Punktewolke wird aufgrund der veränderten Rekonstruktions-Parameter etwas länger dauern, dafür spricht das Ergebnis für sich.
Der Boden und die hintere Wand sind nun ebenfalls vorhanden, bei der linken Wand ist aufgrund des schlechten Kamerawinkels nicht mehr herauszuholen. Doch das ist nicht weiter dramatisch, denn für nicht bzw. kaum sichtbare Bereiche wird schließlich auch kein filigranes Mesh benötigt.
Mit dieser Punktewolke kann ein erfolgreiches Meshing gelingen. Um die Verarbeitung der Punktwolke zu einem Polygonmesh zu starten, klicken wir auf der Rekonstruktion-Seite im Bereich Meshing auf den Button Mesh generieren.
Auch dieser Prozessschritt ist aufgrund der eingestellten hohen Qualität etwas zeitaufwendig, doch spätestens nach ein paar Minuten Wartezeit bekommen wir ein nahezu überall geschlossenes Polygonmesh präsentiert.
Für das rekonstruierte Szenenmesh wurde ein neues Polygonobjekt erzeugt. Da wir nun mit diesem Objekt weiterarbeiten werden, können wir die Sichtbarkeit der Szenenpunktwolke und – falls nicht schon erfolgt – des Motion-Tracker-Objekts in der Editor-Ansicht über die Ampelschalter im Objekt-Manager deaktivieren.
Da auch das Szenenmesh-Objekt ein Vertex-Farben-Tag trägt, …
… sehen wir beim Anwählen des Vertex-Farben-Tags im Objekt-Manager das mit dem Footage gefärbte rekonstruierte Mesh.
Hier werden die bereits besprochenen Problemstellen der Rekonstruktion durch die Farbverzerrungen noch einmal deutlich. Wir sind aber nur an einem einfachen Polygonmesh der Einmauerung interessiert, weshalb wir dies getrost außer Acht lassen können.
Was wir nicht außer Acht lassen sollten, ist das kleine Polygonloch in der Ecke links hinten. Um dieses Loch zu schließen, selektieren wir das Polygonobjekt des Szenenmeshs und rufen das Werkzeug Polygonloch schließen aus dem Menü Mesh>Erstellen auf.
Dieses Werkzeug erkennt das störende Loch im Szenenmesh, sobald wir mit dem Mauszeiger über eine anliegende Kante fahren, und schließt das Loch, sobald wir darauf klicken.
Das Polygonmesh glätten
Die hohe Auflösung der Szenen-Rekonstruktion schlägt sich natürlich auch in einer sehr unruhigen Mesh-Oberfläche nieder. Wenn wir das Polygonobjekt der Einmauerung zum Glätten nun einfach in einen Subdivision Surface-Generator legen würden, wäre die Szene durch die zusätzliche Unterteilung des Meshs nur noch komplexer.
Stattdessen selektieren wir das Polygonobjekt und holen bei gedrückt gehaltener Shift-Taste einen Glätten-Deformer aus dem Menü Erzeugen>Deformer.
Durch die Hinzunahme der Shift-Taste als Modifier-Key wurde der Glätten-Deformer gleich wie benötigt dem Szenenmesh-Polygonobjekt untergeordnet.
Die Einstellungen des Glätten-Deformers können wir auf den Default-Werten belassen.
Damit sieht das Polygonmesh schon wesentlich besser aus. Unser Ziel des Tutorials, die Szenen-Rekonstruktion einer Einmauerung, wäre damit erreicht. Sehen wir uns nun noch kurz an, wie wir das Polygon-Objekt texturieren und in den 2D-Film integrieren.
Integration des 3D-Polygonobjekts in den 2D-Film
Um die rekonstruierte Einmauerung als 3D-Objekt in den getrackten Film zu integrieren, müssen wir zum einen den 2D-Film im Hintergrund bereitstellen und zum anderen die Einmauerung mit einer frontal projizierten Material-Textur belegen.
Wir holen uns dazu den Einstellungsdialog des Motion Tracker-Objekts hervor und wechseln auf die Footage-Seite. Über den Button Hintergrund-Objekt erstellen erzeugen wir uns ein fertig texturiertes Hintergrund-Objekt für die Einblendung des 2D-Films im Rendering.
Das Textur-Tag des Hintergrund-Objekts können wir nun auch gleich für das Szenenmesh-Objekt der Einmauerung verwenden. Durch Ziehen des Textur-Tags mit gedrückt gehaltener Strg- bzw. Ctrl-Taste kopieren wir es auf das Szenenmesh-Objekt.
Damit die Einmauerung zwar Schatten von anderen Objekten empfangen, selbst aber keine Schatten werfen kann, weisen wir dem Szenenmesh über das Menü Tags>Cinema 4D Tags im Objekt-Manager ein Render-Tag zu.
Im Einstellungsdialog des Render-Tags deaktivieren wir also entsprechend die Option Schatten werfen und aktivieren die Option Hintergrund-Compositing.
Nun können wir beliebige 3D-Objekte in die Einmauerung platzieren, die Szene noch mindestens mit einem Schatten werfenden Licht ausstatten …
… und die Einmauerung empfängt an den korrekten Stellen Schatten. Durch das Motion-Tracking ist zudem sichergestellt, dass jedes integrierte 3D-Objekt auch an der richtigen Stelle im rekonstruierten 2D-Film bleibt.