Als problematisch können sich die optischen Verzerrungen beispielsweise beim Motion-Tracking erweisen. Je kleiner die Brennweite, desto ausgeprägter zeigt sich der verzerrende Effekt zu den Rändern hin, sodass man sich entscheiden muss, ob das Ausgangsmaterial direkt verwendbar ist, oder ob eine Vorbehandlung des Bild- bzw. Filmmaterials bzw. eine Anpassung der 3D-Elemente nötig ist. In diesem Tutorial stelle ich beide Varianten vor. Als Ausgangsbasis habe ich dabei eine einfache Smartphone-Aufnahme verwendet.
Die Cinema 4D-Projekte, das Ausgangsbild und das dabei entstandene Linsenprofil findet ihr wie immer in den Arbeitsmaterialien zu diesem Tutorial.
Vorbereiten des Linsenverzeichnungs-Werkzeugs
Im Gegensatz zum Motion-Tracking oder zur Kalibrierung einer Kamera gibt es zur Erstellung eines Linsenprofils in Cinema 4D kein eigenes Objekt, sondern ausschließlich das im Menü Werkzeuge befindliche Werkzeug Linsenverzeichnung.
Dafür bietet das Werkzeug in seinem Einstellungsdialog auch alles, was wir zur Erstellung des Linsenprofils benötigen. Auf der Bild-Seite finden wir die Basis-Einstellungen für die Anzeige des hinzugeladenen Bildes. Dies geschieht wie gewohnt über den Button neben dem Bild-Feld.
Über den Auswahl-Dialog laden wir uns das Bildmaterial für die Ermittlung der Verzerrung in das Bild-Feld des Linsenverzeichnungs-Werkzeugs.
Falls nicht bereits korrekt eingestellt, passt sich das Seitenverhältnis an das hinzugeladene Bild an. Es kann trotzdem nicht schaden, nach dem Import diese Einstellung zu überprüfen.
Erstellen des Linsenprofils
Auf der Linsenverzeichnung-Seite befinden sich die Funktionen zur Ermittlung der Linsenverzeichnung bzw. zur darauf basierenden Errechnung des Linsenprofils. Die Ermittlung der Verzerrung erfolgt über sogenannte n-Punkt-Linien, die wir in der Editoransicht an geeignete Stellen im Bild platzieren. Per Klick auf den Button n-Punkt-Linie hinzufügen erzeugen wir uns die erste Linie für unser Bild.
Diese erste n-Punkt-Linie befindet sich nun angewinkelt in der Mitte unserer Editoransicht, wo wir sie mit den orangenen Punktanfassern bearbeiten können. Da der Hintergrund des geladenen Bildes im Original ziemlich hell ist, dunkeln wir das Bild während der Arbeit mit den n-Punkt-Linien temporär ab.
Dazu wechseln wir kurz auf die Bild-Seite des Einstellungsdialogs und reduzieren die Helligkeit des eingeladenen Bildes auf ca. 10 % bis 15 %.
Jetzt lassen sich die n-Punkt-Linien wesentlich besser vor dem Bild ausmachen, und auch die relevanten Bildelemente sind noch gut zu erkennen. Für meine erste n-Punkt-Linie habe ich mir die Unterkante des aufgesteckten Regaloberteils ausgesucht. Während des Verschiebens der Punkte bekommen wir durch eine Lupenfunktion die Position des Punktes vergrößert angezeigt.
Da in meinem Ausgangsbild keine extreme Verzerrung vorliegt, lässt sich der Verlauf der Kante im Bild mit den drei Punkten der n-Punkt-Linie gut nachbilden. Zusätzliche Punkte könnt Ihr übrigens durch Klick mit gedrückter Strg- bzw. Ctrl-Taste auf die gewünschte Stelle der Linie erzeugen.
Die erste n-Punkt-Linie ist korrekt platziert, sodass wir uns über den Button n-Punkt-Linie hinzufügen im Einstellungsdialog gleich eine weitere n-Punkt-Linie in die Ansicht holen.
Nachdem wir mit dieser ersten n-Punkt-Linie eine in die Tiefe laufende Kante nachgebaut haben, soll unsere zweite Linie so weit wie möglich die Breite des Bildes erfassen. In unserem Fall also von der hinteren Ecke unten links …
… bis zu der Stelle, an der das Buch die Kante verdeckt.
Mehr eingebaute n-Punkt-Linien bedeuten nicht immer ein zwingend besseres Ergebnis. Wir beschränken uns auf die Kantenverläufe im Bild, die wirklich eindeutig sind und möglichst viele Bereiche des Bildes abdecken. Dazu gehört natürlich die hintere Kante im Buchregal …
… genauso wie die vorderen Kanten des Regalbodens …
… sowie die Lamellen des Regalrollos, soweit sie sich gut genug für das Zeichnen der n-Punkt-Linien vom Hintergrund abheben.
Da wir ja wissen, dass die Verzerrungen der optischen Linsen zu den Rändern hin zunehmen, ist es natürlich wichtig, insbesondere dort nach geeigneten Stellen für unsere n-Punkt-Linien zu suchen.
Wenn schließlich alle wichtigen Bereiche des Bildes mit n-Punkt-Linien bestückt sind, lassen wir auf Basis dieser Informationen das Linsenprofil errechnen.
Dazu finden wir im Einstellungsdialog des Linsenverzeichnungs-Werkzeugs auf der Linsenverzeichnung-Seite ein Menü mit gebräuchlichen Linsenverzeichnungsmodellen. Für unsere Smartphone-Aufnahme wählen wir das Modell 3DE Standard Classic.
Nach Klick auf den Button Automatisch berechnen bekommen wir die aus den n-Punkt-Linien errechneten Linsenverzeichnungsparameter eingetragen.
In der Editoransicht ist die Entzerrung an der leicht kissenförmigen Ausformung an den Rändern zu erkennen. Ebenfalls gut zu sehen: da wir für den rechten Rand kaum Information in Form von n-Punkt-Linien bereitgestellt haben, ist hier auch kaum eine Ver- bzw. Entzerrung vorhanden. Für unsere Zwecke genügt aber sowieso der bestens abgedeckte Hauptaktionsbereich.
Wir können dieses fertige Linsenprofil nun zum einen, wie in der Editoransicht zu sehen, zum Entzerren des Ausgangsbildes verwenden. Zum anderen können wir mit dem Linsenprofil aber auch die 3D-Elemente in den jeweiligen Bereichen leicht verzerren, um sie an das unveränderte Ausgangsbild anzupassen.
Bevor wir beide Varianten in diesem Tutorial kurz durchspielen, speichern wir das Linsenprofil über den zugehörigen Button ab.
Damit eindeutig erkennbar ist, dass unser eben erstelltes Linsenprofil zu der Regal-Aufnahme gehört, macht es Sinn, dies auch beim Speichern im verwendeten Dateinamen festzuhalten.
Verwenden des Linsenprofils zum Entzerren einer Aufnahme
Auch wenn wir die entzerrte Aufnahme noch in der Editoransicht sehen: Dies hängt ausschließlich mit dem Linsenverzeichnungs-Werkzeug zusammen und ist noch kein Bestandteil unserer Szene. Um das Bild als Hintergrund in einer Szene zu verwenden, müssen wir dies über die Kamera-Kalibrierung in Kombination mit einem Hintergrund-Objekt bewerkstelligen.
Zum Thema Kamera-Kalibrierung findet ihr ein eigenes, ausführliches Tutorial bei PSD-tutorials.de, deswegen beschränke ich mich an dieser Stelle auf die für die Linsenverzeichnung wichtigen Funktionen. Für die Kamera-Kalibrierung erzeugen wir uns ein Kamera-Objekt und weisen ihm über das Kontextmenü per rechte Maustaste oder über das Menü Tags>CINEMA 4D Tags des Objekte-Managers ein Kamera-kalibrieren-Tag zu.
Im Einstellungsdialog des Kamera-kalibrieren-Tags öffnen wir die Bild-Seite und laden unsere Regal-Aufnahme in das dafür vorgesehene Feld Bild. Im zweiten Abschnitt des Dialogs finden wir das Feld Linsenprofil, über dessen rechten Laden-Button wir den Datei-Manager aufrufen …
… und das von uns gespeicherte Linsenprofil für die Regal-Aufnahme hinzuladen.
Dank des hinzugeladenen Linsenprofils können wir für die Kalibrierung der Szene auf das entzerrte Bild zurückgreifen.
Wir lassen die Kalibrierung einmal außen vor und kümmern uns um die Frage, wie wir das entzerrte Bild nun auch beim Rendern in die Szene bekommen. Wir erstellen uns dazu auf der Kalibrieren-Seite bequem über den Button Hintergrund-Objekt einen korrekt gemappten Hintergrund, inklusive unserer Regal-Aufnahme als zugewiesenes Material.
Wir öffnen das Material über den Attribute-Manager und finden im Farbe-Kanal als Textur unsere Regal-Aufnahme verknüpft, allerdings noch in ihrer verzerrten Version. Um diese Textur nun mit unserem Linsenprofil zu entzerren, laden wir über das Pfeilbutton-Menü Effekte den Linsenverzeichnungs-Shader dazu.
Weil wir die Regal-Textur zuvor nicht entfernt haben, wird sie durch das Hinzuladen des Linsenverzeichnungs-Shaders automatisch als Textur in den Shader übernommen. Wir müssen nun nur noch das Linsenprofil über den rechten Button in das zugehörige Feld laden.
Nun können wir endlich auch beim Rendern auf das entzerrte Bildmaterial zurückgreifen. Für die Kalibrierung der Szene bzw. der Kamera zum Einbau von 3D-Elementen haben wir die entzerrte Aufnahme ja bereits im Kamera-kalibrieren-Tag.
Analog zum Kamera-kalibrieren-Tag können wir von uns erstellte Linsenprofile natürlich auch für die Entzerrung von Footage-Material im Motion-Tracker verwenden. Durch die Entzerrung bekommen wir zudem auch bessere Tracking-Ergebnisse.
Verwenden des Linsenprofils zum Verzerren der 3D-Szene
Wie bereits angesprochen, können wir das von uns erstellte Linsenprofil auch zur leichten Verzerrung der 3D-Elemente verwenden, um sie an die Original-Aufnahme anzupassen. In diesem Fall verzichten wir natürlich auf die Entzerrung des Bildes im Kamera-kalibrieren-Tag und ebenso im Material für den Hintergrund.
Für dieses zweite Beispiel habe ich also das Hintergrund-Objekt gelöscht und im Einstellungsdialog des Kamera-kalibrieren-Tags das zur Entzerrung hinterlegte Linsenprofil entfernt.
Die Kalibrierung der Kamera bzw. Szene erfolgt also auf Basis der Originalaufnahme. Auf der Stellfläche des Regals liegt das Ebene-Constraint zur Festlegung der X- und Z-Achse. Den Nagel zur Festlegung des Ursprungs der Szene habe ich in die Ecke hinten links platziert.
Für das Rendering des Hintergrunds benötigen wir ebenfalls kein entzerrtes Bildmaterial. Entweder erstellt ihr euch über den Button Hintergrund erzeugen im Kamera-kalibrieren-Tag einfach ein komplett neu texturiertes Hintergrund-Objekt, oder Ihr löscht den Linsenverzeichnungs-Shader, indem ihr die Textur des Regals einfach aus dem Shader in das Textur-Feld des Farbe-Kanals kopiert.
Passend zu den drei in der Regal-Aufnahme befindlichen Marmor-Pyramiden habe ich in Cinema 4D ein Pyramide-Objekt erzeugt und ihm zur Glättung der Kanten einen Bevel-Deformer untergeordnet. Ein Punktlicht sorgt für eine zur Aufnahme passende Beleuchtung des 3D-Objekts Pyramide.
Dank der kalibrierten Szene lässt sich die Pyramide gut in die Szene integrieren, für meinen ersten Test positioniere ich sie zu den anderen drei Pyramiden in die Bildmitte.
Wie nicht anders zu erwarten, macht die platzierte Pyramide auch im Rendering eine gute Figur, hier ist auch der Effekt der Verzerrung durch die optische Linse am geringsten.
Damit sich die Pyramide (und natürlich alle weiteren 3D-Objekte) auch an den anderen Stellen der Szene gemäß der Linsenverzeichnung verhalten, sorgen wir über einen Render-Effekt für die leichte Verzerrung der 3D-Elemente. Wie alle anderen Effekte liegt auch der Effekt der Linsenverzeichnung in den Rendervoreinstellungen, die wir über das Menü Rendern aufrufen.
Wir aktivieren uns also den Effekt Linsenverzeichnung über den Button Effekte… in den Rendervoreinstellungen für das Rendering.
Auf der zugehörigen Seite des Effekts in den Rendervoreinstellungen finden wir das Feld für unser Linsenprofil. Durch Hinzuladen des von uns erstellten Linsenprofils sorgt der Linsenverzeichnungs-Effekt für die entsprechende Verzerrung der 3D-Elemente beim Rendering.
Zum Testen des Zusammenspiels zwischen Originalaufnahme und verzerrter Geometrie positionieren wir die Pyramide in die vordere rechte Ecke des Regals und stoßen das Rendering in der Ansicht oder auch im Bild-Manager an.
Da wir es mit einem gewöhnlichen Smartphone-Bild und nicht mit einer Weitwinkelaufnahme zu tun haben, ist der Effekt der Verzerrung natürlich nicht extrem ausgeprägt. Die Pyramide wirkt im Vergleich zur Editoransicht etwas flacher und minimal gequetscht. Dank unseres Linsenprofils sorgt Cinema 4D ab jetzt selbst für die Anpassung der Geometrie an unsere Originalaufnahme.