NeosCon Hobby: Projection Mapping

Sebastian Kurfürst15.07.2025

Nach der Neos Con ist vor der Neos Con - wir machen gerade die ersten Schritte für die Neos Conference 2026. Neben den aktuell wirklich wichtigen Dingen (Location, Termin - BTW ➡️ da läuft noch eine Umfrage ⬅️, Ticketing) gibt es immer auch ein Spielprojekt, die ich gern pushe :) 

Zur Neos Con 2024 war mein Spielprojekt selbst gebaute und angesteuerte, 64x64cm große, LED Panels - wo ich einiges über Layer 2 networking zur Ansteuerung, Reverse Engineering, und OpenGL Programmierung gelernt habe. Diese Panels hatten wir dieses Jahr wieder im Einsatz. Angesteuert wird das Ganze über ein eigenes OPENRNDR Java-Programm mit AKAI Midi Controller für die spontane Steuerung und Szenen-Programmierung; und mit Chataigne als Sequencer fürs Opening, basierend auf Timecode.

2024 Neos Conference   012Die drei LED Panels sind links auf dem Foto zu sehen
 NIK5881LED-Panels von Hinten - Chaos :)

Nach der diesjährigen Konferenz hat mein Kollege Martin das Packaging für die LED Panels nochmals grundlegend überarbeitet - anstatt einer IKEA-Grundplatte und Kabelbindern kommen nun extra Verbinder-Elemente zum Einsatz, die er für unserem 3D Drucker eigens entwickelt hat. Damit werden die LED Panels nochmals viel robuster einsetzbar.

Projection Mapping für 2026!?

Projection Mapping ist eine Technik, in dem Bilder, Videos und Animationen auf verschiedenste Objekte projiziert werden, um dabei spannende und vielseitige Effekte zu erzielen. Dabei kann man verschiedene Beamer so ansteuern, dass ein großes Bild entsteht.

Ich habe mich hier in den letzten Wochen mit verschiedenen Software-Lösungen für Projection Mapping beschäftigt (u.a. Resolume Arena, MadMapper und Millumin). Letztendlich hat mich das Featureset und Bedienkonzept von HeavyM am Meisten überzeugt, da es nicht nur layerbasiertes Abspielen von Videos ermöglicht, sondern noch viele weitere Funktionen unter einer sehr intuitiven Oberfläche vereint.

HeavyM Library Efffects.png

Ansteuerung der Beamer

Jetzt ergibt sich allerdings die Frage: Wie kann man viele Beamer gleichzeitig ansteuern, wo der Laptop nur eine begrenzte Anzahl von USB-C/HDMI Anschlüssen hat? Dies war ein ordentliches Rabbit hole, von dem ich heute kurz schreiben will.

Neben HDMI-Anschlüssen und USB-C2HDMI Konvertern gibt es auch die Möglichkeit, mit professionellen PCI Express Capture-Karten zu arbeiten - diese können verwendet werden, um Videostreams aus dem Computer zu bekommen oder auch in diesen hinein. Ich habe mich hier letztendlich für die Blackmagic DeckLink Serie entschieden, da diese viele Funktionen für einen (im Vergleich) guten Preis bereit stellt.

Wir arbeiten ausschließlich mit Macbook Pros - d.h. wir können nicht einfach die PCI Express Karte in den Laptop stecken :) Es gibt hier Expansion-Gehäuse, welche verwendet werden können. Am Bekanntesten ist die Sonnet Echo Serie, die aber (für ein Gehäuse!) schon ordentlich teuer ist. Ich bin letztendlich über das OWC Mercury Helios 3S Gehäuse gestolpert, welches genauso funktioniert, aber deutlich günstiger ist.

Next challenge: Welche Capture-Karte steckt man da rein? Letztendlich passen über ein USB-C Thunderbolt 3 Kabel "nur" 40 GBit/s. PCI Express Karten gibt es mit verschiedenen Bandbreiten - das sieht man gut an der Breite des Anschlusses. Die 40 GBit/s entsprechen hier einer 4x PCIe Karte - wogegen die größten Karten bis zu 16 PCIe Lanes haben können. Als Zwischenfazit: Wir benötigen also eine Karte mit max. 4 PCIe Lanes. Aus diesem Grunde nutzen wir jetzt die DeckLink Duo 2, mit 4 SDI-Anschlüssen (=Videoanschlüssen), welche jeweils als Input oder Output konfigurierbar sind.

Wir wissen also jetzt, wie wir vier Extra-SDI-Anschlüsse an den Laptop bekommen - hooray!

Latenz und Performance

Die DeckLink Karten können nicht einfach als Bildschirm-Erweiterung genutzt werden; sondern man muss mit einem speziellen SDK die Bildinformationen zur Karte schicken.

Bei einer ersten Recherche habe ich nicht gefunden, dass HeavyM direkten Support für DeckLink Karten hat (-> hat es doch, siehe unten :) ). Bei der Recherche nach Alternativen bin ich auf Syphon gestoßen. Syphon ist ein Open Source Projekt, was das latenzfreie Sharing von Grafik-Inhalten zwischen Anwendungen erlaubt. So vom Prinzip her: Eine Anwendung berechnet ein Frame auf der GPU, sagt der nächsten Anwendung bescheid, und diese kann direkt mit dem GPU-Inhalt weiterrechnen, ohne das Bild zu kopieren.

☑️ HeavyM ist ein Syphon Server, d.h. es kann seine Videodaten als Syphon Feed für andere Anwendungen bereitstellen.

Sowohl OBS als auch BlackSyphon können ein Syphon-Signal empfangen und an einen DeckLink Output rendern.

Das habe ich beides konfiguriert - die gute Nachricht: Es funktioniert auf beiden Wegen, die Videos kommen an. Die schlechte Nachricht: Die Latenz liegt zwischen 0.2 und 0.3 Sekunden - deutlich spürbar und erkennbar. Da muss eine andere Lösung her.

Recherche: DeckLink Capture-Karten Latenz

Im Internet findet man sehr viele wiedersprüchliche Infos: Teilweise die Info, dass Latenzen von 200-300 ms normal sind (wie es ja auch bei mir war), und teilweise die Info, dass die Latenz maximal 1-2 Frames (20-40 ms) betragen sollte.

Nach einem Test mit DaVinci Resolve (dem Videoschnittprogramm von Blackmagic) die Erleichterung: Es ist grundsätzlich eine Latenz von 1-2 Frames möglich, auch im oben beschriebenen Setup mit externem PCI-Express Enclosure. Warum ist also die Latenz bei OBS oder BlackSyphon so viel höher? Muss ein Software-Thema sein...

Kickstart: Eigener Syphon2DeckLink Converter

Ich habe daraufhin (mit Anthropic Claude AI Hilfe, Doku Lesen, etc) innerhalb eines Abends einen Prototypen für Syphon to Decklink Konvertierung in Objective-C hinbkommen, der tatsächlich funktioniert hat.

🧑‍💻Hier ist der prototypische Quellcode zu finden: https://github.com/skurfuerst/Syphon2Decklink 🧑‍💻

Und YEAH - die richtig gute Nachricht: Mein eigener Syphon to Decklink Converter hat Latenzen von ~30ms; also genau im gewünschten Bereich 😁😁😁.

HeavyM: Doch Support für DeckLink Output

Danach habe ich mir nochmals HeavyM genauer angeschaut, und dabei zufällig gemerkt, dass unter "Outputs" im Menü ich nicht nur die externen Bildschirme per HDMI auswählen kann, sondern auch die Anschlüsse meiner DeckLink Karte! Diese Info habe ich interessanterweise nirgendwo im Internet finden können (einer der Gründe für diesen Blog Post - damit es die Nächsten einfacher haben :) ).

... und zweite gute Nachricht: auch hier war die Latenz im gewünschten Bereich von ~30ms. Damit lässt sich sehr gut arbeiten!

tl;dr: viel gelernt, viel experimentiert

Es war auf jeden Fall eine interessante Übung, den Syphon2Decklink Konverter zu implementieren; und ich war überrascht, wie einfach dies letztendlich ging. Auch wenn ich ihn letztendlich aktuell nicht benötige - wir werden sehen wofür er noch hilfreich ist :-)