- Video creatie
Om een mooie interatieve projectie te maken hebben we meerdere video files nodig. Je kan deze video files maken met veel verschillende open en gesloten software of met bestaand beeldmateriaal. Je kan bijvoorbeeld aan de slag gaan met 3D animatie software zoals Blender of misschien werk je liever met 2D animatie software? Voor Team Scheire zijn we gegaan voor een game engine als animatie software: Unity.
Voorbeelden van andere software die je kan gebruiken:
-
Open Source
-
Closed Source
- Adobe After Effects (2D software)
- Unity (Game engine)
- Adobe Premiere Pro (video software)
Welke software je gebruikt maakt niet uit, maar verifieer of de software de onderstaande technische vereisten kan ondersteunen.
Voor elk thema hebben we 6 video bestanden nodig:
- plafond/achtergrond.mov
- plafond/interactie.mov
- plafond/voorgrond.mov
- muren/achtergrond.mov
- muren/interactie.mov
- muren/voorgrond.mov
- De voorgrond en interactie videos bevatten een transparantie/alpha kanaal
- Het transparantie kanaal is nodig om meerdere videos op elkaar leggen, meer hierover later in Compositing
- De video moet loopen
- Eerste en laatste frame zijn hetzelfde, opdat een gebruiker niet merkt dat er een einde is aan de video
- De video is 2048x1024 pixels
- Lagere of hogere resoluties zijn mogelijk maar dit bleek een goede balans tussen beeldkwaliteit en hoe zwaar de video files waren.
- ❗Als de video een afwijkend resolutie heeft zorg er dan wel voor dat de beeldverhouding 2:1 blijft
- Bij voorkeur is de framerate 30 afbeeldingen per seconde(fps)
- Lagere of hogere framerates zijn mogelijk maar dit was wederom een goede balans tussen beeldkwaliteit en hoe zwaar de video files waren
Je video mag dus afwijken van framerate, resolutie of beeldverhouding maar zorg er wel voor dat alle videos dezelfde framerate, resolutie en beeldverhouding zijn. Mixen van videos met andere afmetingen werkt niet.
Alle 6 van deze bestanden moeten van het .mov
formaat zijn en daarbovenop moeten ze in het hap formaat geëncodeerd worden. Het voordeel van het hap
formaat is dat het efficiënt kan afgespeeld worden, hierdoor heeft de projectie hardware lagere performantie vereisten. Het formaat kan ook goed om met transparantie in de video files wat we nodig hebben voor de interactie
en voorgrond
video files.
Je kan bijna eender welk videoformaat of afbeeldingen sequentie eenvoudig omzetten naar hap zie: Converteren naar hap formaat.
De drie videos gaan in lagen over elkaar getoond worden door de projectie software, dit proces van samenvoegen heet compositing. Let dus op dat je video files rekening houden met de mogelijkheden en beperkingen van compositing.
In de afbeelding zie je goed hoe de drie lagen over elkaar gelegd worden om het uiteindelijk resultaat te bekomen. Let op de (voorgrond) visjes die bovenop de kist (interactie laag) zwemmen.
De achtergrond video is de basislaag voor de projectie, zorg er dus voor dat deze volledig gevuld is. Elk geanimeerd object dat nooit voor de interactie laag komt kan in deze laag gestoken worden.
De interactie laag is de tussenlaag waar het kind of de arts controle over zal hebben. Deze laag zit bovenop de achtergrond. Zorg er dus voor dat je transparantie gebruikt.
De voorgrond laag komt bovenop de interactie laag en geeft meer diepte aan de projectie door nog animatie bovenop de interactie laag mogelijk te maken.
Deze tutorial gaat enkel over de basis van Unity heb je interesse om er meer over te leren kan je de officiële cursussen volgen (Engelstalig): https://learn.unity.com/
Om te starten download je de Unity Hub: https://unity3d.com/get-unity/download
Dit is een launcher om verschillende Unity installaties te beheren.
Na installatie van de hub installeer je de laatste LTS release van Unity. Dit zijn stabielere versies met lange ondersteuning in de voorbeelden hieronder is dat 2019.4.
❗Latere versies kunnen mogelijk afwijken van deze handleiding.
Je kan een startproject vinden in de folder unity_base_project
. Je kan ook je eigen project aanmaken maar dit startproject staat al vooraf ingesteld met de nodige dependencies (specifieke benodigdheden) en configuraties.
Voeg het project eerst toe aan de Unity Hub met de Add
knop. Open daarna het project door op het project in de lijst te klikken.
In de folder Scenes vind je 3 Scenes:
- Background
- Interaction
- Foreground
Elke scene gaan we uitrenderen als een aparte video. Dit maakt het makkelijker om ze te onderscheiden.
Je kan ook kijken naar de scene in Scenes/Validation/VideoTestScene
deze scene is opgezet om je finale .mov files uit te testen en te valideren binnenin Unity.
Omdat Unity een game engine is, kan je een animatie maken via code maar ook via een timeline zoals andere animatiesoftware. In deze handleiding beperken we ons tot het gebruiken van een timeline, voor meer info over hoe je met code animeert zie: https://learn.unity.com/
Vooraleer we beginnen, moeten we ervoor zorgen dat de resolutie correct staat.
- Open de game window (zie afbeelding)
- Klik op de resolutie knop:
Free Aspect
- Hier kies je voor 2048x1024, als deze preset nog niet bestaat kan je het zelf aanmaken door op het plus icoontje te klikken.
- Plaats je object in de scene door het vanuit je project folder in de scene te slepen
- Open de timeline window
- Je kan deze timeline overal plaatsen door de titel van de window te slepen naar een andere locatie
- Zorg ervoor dat je object geselecteerd is, daarna kan je in de timeline window op create klikken om de animatie director aan te maken.
- Unity gaat vragen waar je deze wil opslaan, dit mag eender waar in het project maar zorg ervoor dat de naam overeenkomt met de naam van je scene om het overzichtelijk te houden.
- Open het menu van je nieuwe animatie director door het aan te klikken in de Project window. Zorg ervoor dat de Frame rate op 30 staat ipv van 60.
- Start de opnamesessie door op de rode knop te drukken in de timeline
- Je kan nu het object bewegen met:
- Door stapsgewijs het object te verplaatsen of roteren en de timeline in tijd verder te slepen kan je je animatie opbouwen.
- Je kan meerdere objecten animeren door ze vanuit de
Hierarchy
Window in je timeline te slepen en ze alsanimation track
toe te voegen.
Als je klaar bent met je animatie, is het tijd om het uit te renderen: We gaan van onze animatie een video maken door het eerst uit te renderen als afzonderlijke afbeeldingen.
- Open de Unity
recorder
window
- Alles staat al vooraf correct ingesteld, je kan dus gewoon op
Start recording
drukken.
- Afhankelijk van hoe zwaar je animatie is, kan dit proces even duren. Als je animatie uitgespeeld is, kan je drukken op
Stop recording
.
Je kan nu je volledige animatie terug vinden in de recordings
folder. Je zal zien dat hier nu een hele hoop .png
afbeeldingen staan. Deze png's nemen ook het transparantie kanaal mee maar moeten nu nog omgezet worden naar een .mov
, zie Converteren naar hap formaat.
Een rijk gevulde scene met veel mooie modellen maken van de projectie een mooi spektakel.
Je kan deze modellen zelf maken met software (zoals Blender) maar je kan ook online mooie modellen vinden op:
Er zijn nog vele andere model bibliotheken let wel op sommige zijn betalend of hebben een limiterende licentie en mag je mogelijk niet gebruiken. Als de licentie CreativeCommons is kan je het vrij gebruiken.
Voorbeeld Sketchfab CreativeCommons:
Om te converteren kan je gebruik maken van ffmpeg.
Je kan ffmpeg installeren door het te downloaden via: ffmpeg.org/download.html en manueel te extracten en aan je opdrachtprompt path toe te voegen.
Een eenvoudigere manier is via een package manager.
- Installeer chocolatey
- Open een admin powershell venster
- Plak
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
in het venster en druk op enter
- Open een admin powershell venster
- Je kan nu
choco install ffmpeg -y
in hetzelfde venster plakken en op enter drukken - Ziezo je hebt nu ffmpeg geïnstalleerd, als je nu
ffmpeg -version
plakt en op enter drukt krijg je de versie van ffmpeg te zien.
- Installeer brew
- Open een terminal venster
- Plak
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
in het venster en druk op enter
- Je kan nu
brew install ffmpeg
in hetzelfde venster plakken en op enter drukken - Ziezo je hebt nu ffmpeg geïnstalleerd, als je nu
ffmpeg -version
plakt en op enter drukt krijg je de versie van ffmpeg te zien.
Voor achtergrond lagen kan je bijna alles gebruiken van video materiaal omdat transparantie niet nodig is hier.
Open een nieuwe terminal of opdrachtprompt in de locatie van je video file. Je kan het commando cd
gebruiken om te navigeren, meer info navigeren in de opdrachtprompt.
Je kan bijna eender welke video omzetten via:
ffmpeg -i mijnVideo.mp4 -c:v hap mijnVideo.mov
Heb je een video die alsnog transparantie bevat?
Gebruik dan: ffmpeg -i mijnVideoBron.mov -c:v hap -format hap_alpha mijnVideoOutput.mov
ℹ️ Tip: Sommige online footage zijn gemaakt met green screens. Dergelijke video met een effen achtergrond kan je via chroma keying in video software alsnog omzetten naar een transparantie laag geschikt voor de interactie of voorgrond lagen.
Heb je zelf een afbeeldingen sequentie uitgerendered met Unity of andere software? Je kan dan deze afbeeldingen in éen enkele stap samenvoegen en converteren naar een video van het juiste formaat.
Open een nieuwe terminal of opdrachtprompt in de locatie van je afbeeldingen sequentie. Je kan het commando cd
gebruiken om te navigeren, meer info navigeren in de opdrachtprompt.
- Met transparantie:
ffmpeg -r 30 -s 2048x1024 -i image_%04d.png -vcodec hap -format hap_alpha -pix_fmt rgba mijnVideo.mov
- Zonder transparantie:
ffmpeg -r 30 -s 2048x1024 -i image_%04d.png -vcodec hap -format hap -pix_fmt rgb mijnVideo.mov
Afhankelijk van de gebruikte software kan de naamgeving verschillen van de gemaakte afbeeldingen. Bij Unity is elk afbeelding genummerd met een prefix: 0001, 0002, 0003, ...
Zijn je afbeeldingen zonder prefix gebruikt dan image_%d.png
in het commando.