Realtime videoprojections for The Shipboys of Bontekoe. A theatre production by De Jonge Honden.
Based on the book by Johan Fabricius.

Performances:
February 2023 - May 2023
Experiment
Mijn werk voor De Scheepsjongens van Bontekoe was tegelijkertijd een experiment waarvoor ik ook de Experiment subsidie van de Provincie Overijssel (Experimenten powered by cultuur) heb aangevraagd en gekregen. Ik wilde met dit project de haalbaarheid onderzoeken van het gebruik van realtime en interactieve videobeelden, daarbij gebruikmakend van verschillende aansturings- en trackingmethoden, binnen een reizende theaterproductie. Ook wilde ik mijn expertise vergroten door voor het eerst te werken met deze technologie in een reizende grotezaal productie. Waarbij betrouwbaarheid en de mate van afwerking van het werk hoger liggen dan de wat meer experimentele producties waar ik eerder aan heb gewerkt.
Mijn onderzoek richtte zich op de volgende vraag;
(Hoe) Is het gebruikmaken van een realtime render engine voor realtime en interactieve videobeelden, daarbij gebruikmakende van verschillende aansturings- en tracking technieken, inzetbaar in een reizende theaterproductie?
Omdat werken met realtime, custom software, tracking en live aansturing snel een behoorlijk complexe toestand kan worden heb ik bij deze productie de volgende doelen en regels opgesteld:
Alle beelden zijn live/realtime (no cheating).
Ik zelf ga niet mee op de tournee.
De technici die met de voorstelling touren moeten het kunnen opzetten en aansturen.
De setup tijd moet haalbaar en realistisch zijn i.c.m. het andere werk (licht, geluid, decor etc.)
Het geheel moet stabiel zijn (uiteraard) en eenvoudig op te zetten en te bedienen.
Het moet werkbaar zijn voor de acteurs.
De vormgegeven scenes
Na het bestuderen van het script en in overleg met het artistiek team is besloten om de volgende scenes vorm te geven.
Navigatie over zeekaarten
Omdat het stuk zich afspeelt over een gigantisch geografisch gebied was er behoefte aan een manier om de reis in beeld te brengen. De reis van het gezelschap gaat van Hoorn en Texel naar Sumatra en Java. In een tweetal scenes is deze reis vormgegeven door middel van een scheepje dat over 17e-eeuwse zeekaarten vaart. In deze scenes wordt het scheepje bestuurd door een actrice met een gamecontroller.
Neptunusritueel
Het Neptunusritueel is het wereldwijd voorkomende gebruik van zeelieden dat wordt uitgevoerd wanneer een bemanningslid of een passagier voor de eerste maal de evenaar oversteekt. Het is een soort ontgroening waarbij vaak een van de bemanningsleden verkleed ‘als Neptunus’ de nieuwelingen aan beproevingen onderwerpt.
Voor het vormgeven van deze scene is gekozen voor een hedendaagse variant. De bootsman ‘vermomt’ zich als Neptunus d.m.v. face tracking technologie een digitale avatar aan te sturen die levensgroot wordt geprojecteerd op het achterdoek. Je ziet dit alles tegelijk op het toneel gebeuren. De bootsman spreekt voor een camera. De scheepsjongens hebben een dialoog met Neptunus via de live aangestuurde projectie.
Storm
Het toneel transformeert tot het deinende dek van het schip doordat de (geprojecteerde) horizon begint te bewegen, de golven worden wilder en hoger, de deining heviger en de wolken staan op onweer. Vanuit de techniek kan heel precies de storm en deining worden aangestuurd. Doordat alles realtime gerenderd wordt en alleen de parameters worden aangestuurd, kan de scene heel precies getimed worden en zo lang duren als nodig is.
Sumatraanse Tijger
Op het eiland Sumatra is er een ontmoeting met een tijger. Voor hen een fabeldier uit verre verhalen. De scene is moest spannend zijn maar vooral een ode aan het dier.
Dit wilde ik ontzettend graag vormgeven. Hoe krijg je zoiets nou echt op het podium?
Dit was technisch de spannendste scene. Ik heb er voor gekozen om te werken met een verrijdbaar ‘scherm’ bestaande uit 4 oled tv’s (Bij oled is zwart echt zwart, niet zichtbaar in het donker) waarbij de positie en rotatie van het gescherm getracked werd.
De tijger is in 3D gemaakt en geanimeerd en had een aantal voorgeprogrammeerde routes die door de techniek in te starten waren. De 3D ruimte waarin de tijger kon bewegen was gelijk aan het toneel. Door met het scherm de tijger ‘in beeld te houden’ bleef deze zichtbaar te volgen over het hele toneel. Doordat het een erg donkere scene was, en de techniek daarom zo goed als onzichtbaar liep er visueel een levensgrote tijger over het podium. Het getrackte en verrijdbare scherm werkte als het ware als een raam (of portal) waarmee het virtuele getoond kon worden. Een virtuele camera die aangestuurd werd door de getrackte positie van het scherm, renderde de 3D animatie vanuit de juiste hoek en positie weer op het scherm. Dit werkte fantastisch. Een overtuigende vorm van augmented reality op het podium.
De Setup
Het doel was om de setup simpel te houden. Op het zijtoneel stond een computer die de software draait en alle beelden rendert. Deze ontvangt input van een ipad (gebruikt voor facetracking) op het toneel, trackingdata van een tracker op het verrijdbare scherm, input van een game-controller, en aansturing vanuit de techniek bij het front of house (FoH). Zie hieronder.
In de voorstelling wordt gebruik gemaakt van twee video oppervlakken. Een grote projectie op het achterdoek (een donkere operafolie). En een mobiel scherm bestaande uit 4 55”inch OLED tv’s. Deze worden met een displaywall controller (Datapath FX4) aangestuurd. De computer die de beelden rendert stuurt dus soms beeld naar de projector en soms naar de Datapath FX4. De 4 televisies, displaywall controller en alle bekabeling zijn gemonteerd op een frame op wielen dat tijdens de tour in elkaar blijft zitten. Deze fungeerde dus als 1 scherm met een lang snoer dat klaar voor gebruik was.
Software
Bij het maken werken aan deze productie heb ik gewerkt met de volgende software:
Blender voor het animeren en modelleren.
Unity voor het maken en renderen van de interactieve 3D scenes.
TouchDesigner als IO/signaal begeleider. Voor het verzamelen, ordenen, bewerken en filteren van alle aansturings- en trackingdata.
SteamVR voor benaderen tracker (HTC Tracker 3.0 op het verrijdbare scherm)
Face Cap voor het versturen van Face tracking data (Apple ARKit blendshapes in OSC waardes) via OSC.
Voor de aansturing vanuit het FoH is gekozen voor QLab. Een veelgebruikt programma voor het aansturen van (theater)shows. Met Qlab kunnen OSC (Open Sound Control) triggers over het netwerk worden gestuurd. OSC is een veelgebruikt protocol waarmee ook binnen TouchDesigner en Unity gewerkt kan worden. Het vanuit Qlab laden, starten en stoppen van scenes en het triggeren gebeurtenissen in de software op de computer op het zijtoneel werkte op deze manier goed en stabiel.
Om tijdens het opbouwen van de show snel up-and-running te kunnen zijn heb ik voor de het opstarten en instellen van de software op de computer een batch bestand gemaakt die alle daarop draaiende software in de juiste volgorde geautomatiseerd achter elkaar opstartte.
Tracking
Om de werkelijke en een virtuele wereld met elkaar te kunnen verbinden moeten deze elkaar kunnen raken en beïnvloeden. Het kunnen volgen van bewegingen/posities in de werkelijkheid (tracking) is daarin een heel krachtig middel. Maar ook een die snel een complexe, tijdrovende en kwetsbare exercitie kan worden. Ik heb in de voorstelling twee manieren van tracking gebruikt. Face tracking om het gezicht van Neptunus te kunnen animeren en positionele tracking om de tijger over het podium te kunnen laten bewegen.
Tracking van gezicht
Aan het realtime kunnen tracken van een gezicht en volgen van mimiek heb ik een eerder onderzoek gewijd. Daarin kwam naar voren dat het door Apple ontwikkelde ARKit voor iOS een zeer goed geïmplementeerde vorm van een soort FACS bevat (Facial Action Coding System, hiermee wordt bijvoorbeeld ook gewerkt bij het maken van animatiefilms). Hiermee kunnen 52 uitdrukkingen op een schaal van 0 tot 1 worden gelezen van een gezicht. En daarnaast leest het rotatie en positie van het hoofd. En het mooie is, deze krachtige software draait gewoon op een iPad of iPhone. De iPad bevat een camera, een computer waar je software op kan zetten en voor kan schrijven, en een processor met een module voor deep learning en A.I. (Neural Engine). Dit alles maakt het een extreem betaalbare optie.
Face Cap is een handige app die de waardes van deze ARKit gezichtsuitdrukkingen kan versturen via OSC. Voor het goed lezen van een gezicht is het belangrijk dat er ook goed licht op het gezicht valt. Alle ‘features’ van het gezicht moeten goed belicht zijn. In de voorstelling zat de iPad vast op een statief met een klein spotje daarboven. Dit werkte goed genoeg mits het spotje het gezicht bescheen uiteraard. Bij het uit het licht vallen van het gezicht wordt de tracking ernstig gehinderd.
Het bewerkelijkste is het maken van een 3D model met 52 shapekeys/blendshapes dat goed werkt. Het systeem leest namelijk vaak mengvormen van deze uitdrukkingen en de uitdrukkingen die je maakt in het 3D model moeten geschikt zijn om te mengen. Te excentrieke geïsoleerde uitdrukkingen werkten vaak vreemd als ze in de ‘mix’ gegooid werden. Maar na een tijd tweaken had ik een goed aan te sturen werkende avatar.
Ik liep hier wel een beetje tegen de limieten van blender aan wat betreft het modelleren van shapekeys. Ik miste de mogelijkheid om aan te bewerken vertices binnen een shape key, 'weights' toe te kennen zodat je bijvoorbeeld een ooglid kan animeren waarbij er een verloop is in de mate van bewerking. Een handige plugin voor Blender is FaceIt. Dit versnelt het proces van het maken van de 52 voor ARkit geschikte shapekeys aanzienlijk. Maar dit werkt alleen als een goed begin en alleen als je een mensachtige wilt animeren.
Op het toneel werkte het systeem boven verwachting goed. Doordat de acteur enkel voor de iPad hoefde te spreken (en te letten op het licht van het spotje) was dit een zeer haalbare en stabiele tracking techniek.
Tracking van het scherm
Om de scene met de tijger te kunnen uitvoeren moest ik de positie van het scherm kunnen tracken. Omdat ik de impact op iedereen en vooral de techniek zo klein mogelijk wilde houden wilde ik eigenlijk werken met een soort ‘inside out’ tracking. Een manier waarbij er geen andere hardware betrokken hoeft te zijn en de positie vanaf 1 punt gemeten wordt. Nu speelt deze scene in het donker en de tracking technieken die ik eerder voor ogen had, hadden toch echt licht nodig om verplaatsing exact te kunnen waarnemen. Daarom heb ik besloten met een HTC Tracker te werken. Deze vereist wel dat er Base Stations (een soort bakens) staan opgesteld die een infrarood signaal uitsturen waardoor de tracker zijn positie kan meten.
Minpunten aan dit systeem is dat de VR ruimte moet worden gekalibreerd, er rekening moet worden gehouden met lichtbronnen (fel licht verstoort het infrarood signaal), spiegelende oppervlakken (spiegelen het signaal) en interferentie. Kortom een mogelijke tijdsverslinder en kwetsbaarheid in de show.
Om het zo werkbaar en zo stabiel mogelijk te houden is gekozen om het systeem zo klein mogelijk te houden. 2 basestations links en rechts voor op het toneel. Enkel 1 tracker. Voor een snelle setup moet SteamVR daarom draaien zonder VR headset (Zie https://visualprogramming.net/blog/2018/using-htc-vive-trackers-without-headset/) En altijd een directe zichtlijn tussen tracker en Base stations.
De setup bestond uit het opstarten van SteamVR met het scherm (incl. tracker) op het midden van het podium zodat deze de beide basestations kon registreren. Het basestation dat de tracker als eerste waarneemt is de 0,0,0 coördinaat. De andere posities zijn dus relatief aan deze arbitraire positie. Aandachtspuntje bij het maken van de virtuele scenes:) Maar deze manier van setup, was betrouwbaar en zo kon de SteamVR ‘Room Setup’ worden gepasseerd.
Door deze ingrepen en rekening houdend met de mogelijke zwakheden van het infrarood signaal was dit eigenlijk een goed stabiele en relatief snel op te zetten setup geworden. En zo dus werkbaar en betrouwbaar.
Conclusie
Na uitvoering van het project kan ik met overtuiging zeggen dat het "gebruikmaken van een realtime render engine voor realtime en interactieve videobeelden, daarbij gebruikmakende van verschillende aansturings- en tracking technieken" absoluut inzetbaar is in een reizende theaterproductie. In ieder geval zoals nu is uitgevoerd.
Door me te houden aan een aantal aandachtspunten en het maken van een aantal keuzes bleef de productie haalbaar:
Relatief eenvoudige technische totaal setup.
Waar mogelijk plug&play (Vaste IP adressen voor de verschillende apparaten e.d.)
Geen onnodige essemblage en demontage van systemen (zoals mobiele videowall)
Geautomatiseerde boot en starten van software.
Een maximaal uitgeklede SteamVR setup voor gebruik positionele tracker
Enkel een iPad op statief als face tracking systeem
Qlab als aansturingsoftware vanuit techniek.
Duidelijke instructies, aandacht voor kwetsbaarheden en troubleshootguide voor de techniek.

Framerate
Ik liep bij het maken best vaak tegen problemen met framerate aan. Alles in de video 'pipeline' van render tot output was ingesteld op 50Hz. Omdat ik werkte met twee schermen (projectie & videowall), die overigens nooit tegelijk beeld vertoonden, wilde ik de beeldlogistiek in Touchdesigner doen. In de Unity engine konden de beelden worden gerenderd en via spout texturesharing gedeeld, zodat binnen Touchdesigner het beeld naar de juiste output kon worden gestuurd. Maar alleen al het delen via Spout werkte niet goed. De beelden gingen haperen en ik kreeg dat niet goed. Daarom besloot ik niet meer te werken via Spout (terwijl ik dacht dat het gewoon een verwijzing is naar waar het beeld staat in het videogeheugen, wat kan er misgaan?). 
Het werken met twee verschillende schermen kan een reden zijn voor haperingen. Maar ook met 1 scherm ging werken met Spout niet goed. Daarom besloot ik de beeldlogistiek geheel in Unity te bouwen. Maar ook dit wilde bij twee schermen niet goed werken. Misschien lag het toch aan een heel klein verschil in refreshrate timing tussen de schermen? 
De tijd ging dringen en er was geen tijd om dit uit te zoeken. Ik besloot daarom om twee instances van de Unity player te draaien. 1 fullscreen op de projector, en 1 fullscreen op de videowall. Met slimme OSC triggers die beide players ontvingen, triggerde een bepaald signaal het starten van een scene op het juiste scherm. Computerresources gingen keurig naar de player instance die aan het renderen was en de framerate was perfect.

Ik heb naast het werkbaar maken van de techniek ook ontzettend veel geleerd over het werken met de techniek, software, playback, code, modelleren, animeren, aansturing etc. Maar dat is teveel om hier op te schrijven. Neem vooral contact met me op als je een vraag hebt.
Back to Top