Stereoskopie
Steroskopie Status: unstable | |
---|---|
Beschreibung | Backspace in 3D |
Autor: | xoquox krisha |
PayPal |
Der backspace in 3D
Als Hardware kommen zwei GoPro Hero 3 Black zum Einsatz. Die GoPros werden gleichzeitig per WiFi Remote Fernbedienung gestartet. Leider sind die Videos trotzdem manchmal nicht auf den Frame genau synchron, aber dazu später mehr...
Tools
GoPro Studio
Das GoPro Studio wird in einer kostenlosen Version angeboten. Mit dieser lassen sich 3D Videos aus GoPro Material erstellen. Als Ausgabe kann man aus mehreren 3D Einstellungen wählen. Wir verwenden Side-by-Side für die Oculus Rift und RedCyanAnaglyph für einfache farbige 3D Brillen.
Der Vorteil des GoPro Studios ist, dass es automatisch die Videos passend skaliert und so wie es aussieht auch verschiebt, wenn die Kameras einen leichten Offset haben.
Vorgehensweise (ist bei der ersten Verwendung nicht sonderlich intuitiv ):
- GoPro Studio installieren, QuickTime wird nicht benötigt
- Im 1. Schritt IMPORT NEW FILES klicken und das linke Video laden
- Rechtsklick auf das Video und Find Pair klicken, um das Video für das rechte Auge zu laden
- Das blaue Feld Add clip to conversion list anklicken
- Convert all anklicken
- Nach Abschluss Proceed to step 2 klicken
- Bei der Template auswahl kann man getrost auf Cancel klicken
- Jetzt den Clip in die Zeitliste in der Mitte unten ziehen
- Auf der rechten Seite unter 3D View die gewünschte Anzeigeart auswählen. Es müssen normalerweise keine weiteren Einstellungen verändert werden. Ausgabe überprüfen.
- Abschließend auf Export klicken und das Ausgabeformat einstellen. Sollte RedCyan gewählt worden sein, das 3D Format auf Current 3D Display Mode setzen.
Sync
Da die GoPros nicht immer gleichzeitig starten, muss man gelegentlich ein paar Frams zu Beginn eines Videos abschneiden. Leider macht dies das GoPro Studio nicht von alleine, so dass man hier auf Software von Drittanbietern zurück greifen muss. Man kann sich dabei relativ leicht am Audiotrack orientieren. Es kann aber durchaus sein, dass die Videos trotzdem nach einer Zeit auseinander laufen, da der Takt der Kameras nicht gesynced wird.
Problem: This is not a GoPro source file
Leider weigert sich das GoPro Studio nachbearbeitete Dateien (für Sync) als 3D anzunehmen. Um das zu ändern muss man die Gopro Studio.exe im Programme/Tools Verzeichnis modifizieren. GoPro Studio ist eine .net Applikation und basiert daher auf CIL. Man kann sie also relativ leicht dekompilieren - idealerweise macht man das mit einem Decompiler der auch die CIL Opcodes in Hex ausgibt, so dass man danach mit einem Hexeditor suchen und die Stelle modifizieren kann. Wenn man nach This is not a GoPro source file sucht, findet man schnell die Funktionen OpenLeftFile() und OpenRightFile(). Innerhalb der Funktionen wird eine Funktion ImportItem.IsGoProSource() aufgerufen. Wenn man den Branch brtrue.s danach zu brfalse.s umschreibt, kann man jedes andere Video laden aber nicht mehr originale GoPro Dateien. Idealerweise müsste man also diesen Branch duch einen unkonditionellen br.s austauschen. Hierbei wird die Applikation aber crashen, da br.s im Gegensatz zu brfalse.s und brtrue.s keinen Wert aus dem Stack entfernt.
Entweder entfernt man den Wert manuell vom Stack oder man modifiziert gleich die Funktion IsGoProSource(). Hier kann man einfach eine 1 statt einen memberabhängigen Wert zurück geben und hebt damit alle Einschränkungen auf, d.h. man kann jedes x-beliebige File laden und ein passendes Pair zuordnen.
Originaldatei:
.method IsGoProSource() { 02 ldarg.0 //arg0 ist eine Instanz der aktuellen Klasse 7B 0F 00 00 04 ldfld bool ImportItem::bIsGoPro //ruft den Member bIsGoPro ab und legt den Wert auf den Stack 2A ret }
Modifikation:
.method IsGoProSource() { 17 ldc.i4.1 //legt Wert 1 auf den Stack 2A ret 0F 00 00 04 2A //Rest; wird nicht mehr ausgeführt }
Am einfachsten sucht man also mit einem Hexeditor nach 027B0F0000042A und ersetzt es durch 172A0F0000042A. Bei einer anderen GoPro Studio Version kann dieser Hexstring natürlich anders aussehen und man muss sich selbst die Arbeit machen, die passende Stelle zu finden :)
Im Rahmen dieser Modifikation wurde auch JustDecompile in Verbindung mit Reflexil getestet. Funktioniert gut, allerdings werden immer wesentlich mehr Bytes verändert als eigentlich benötigt und man sollte den Prozess öfter mal neustarten, da Reflexil gelegentlich geänderte Werte speichert (bei mir hat auch ein Reflexil Reload im Kontextmenü nicht geholfen). Auch sollte man gegebenfalls darauf achten, dass die ersetzten Opcodes nicht immer gleich lang sind. Die Erklärungen zu den Opcodes sind sehr praktisch.
Kdenlive
Fly Cam
Da bei 3D Filmen ein ruckeln des Bildes sehr viel Unangenehmer ist als bei 2D haben wir eine einfache Fly Cam mit 2 Achsen entworfen. Die Bauteile wurden mit Autodesk Inventor entworfen und mit unserem 3D Drucker ausgedruckt.