Verbeteringen in animatie: camerapaden zijn nu vloeiender dan ooit!
Bij Mapcreator werken we altijd aan updates en verbeteringen van onze tool. Toen we eind 2022 de animatiefunctie lanceerden, waren we ontzettend trots! Maar zelfs de trotsste makers zien altijd ruimte voor verbetering. En nu is het zover! Hoewel je animaties al in een paar klikken kon maken, zaten er soms kleine haperingen of schokjes in de overgang tussen keyframes. Zeg maar dag tegen die onrust — de camerapaden hebben nu een flinke upgrade gekregen en we laten je graag zien wat dat voor onze gebruikers betekent!
Hieronder zie je een aantal echte voor-en-na-voorbeelden van onze animaties. Bij elk voorbeeld leggen we kort uit wat er precies is verbeterd.
Voorbeeld 1:
In deze animatie zie je een zoom naar Denver, Colorado in de Verenigde Staten via 3 tussenliggende keyframes. Zoals je in de voor- en na-video hieronder ziet, is de nieuwe versie vloeiender — zowel in het camerapad als in de snelheidsveranderingen.
Voorbeeld 2:
Deze animatie bestaat uit een vlucht tussen drie locaties in Rotterdam, Nederland, met wisselende zoomniveaus, rotaties en tilt. In de oude video maakt de camera rond het tweede keyframe een onnatuurlijke beweging. Dankzij onze nieuwste verbeteringen zie je dat dit nu weer zijdezacht verloopt.
Voorbeeld 3:
Zoals je in dit voorbeeld ziet, kunnen gebruikers de camera nu eenvoudig een parabolische fly-over laten maken door simpelweg 3 keyframes te plaatsen. Deze animatie neemt kijkers mee van Rotterdam, naar een uitgezoomd beeld van Nederland en vervolgens ingezoomd naar Eindhoven. De oude versie genereert twee rechte bewegingen met een stop ertussen, in plaats van een vloeiende, paraboolachtige curve.
Hoe kreeg ons team dit voor elkaar?
Op het eerste gezicht lijkt het berekenen van een vloeiend camerapad misschien een heel lastig probleem. Een camera kan over de wereld pannen en in- en uitzoomen; daarnaast kan hij ook roteren en tilten om vanuit verschillende richtingen naar de kaart te kijken. Al die veranderingen moeten vloeiend en naadloos verlopen, op basis van niets meer dan een reeks keyframes die door de gebruiker is ingesteld.
Wat een developer kan doen bij een complexe taak als deze, is het probleem opdelen in een aantal eenvoudigere stappen. In dit geval is dat gelukkig heel goed te doen. Om een camerapositie volledig te definiëren, hebben we eigenlijk maar vijf getallen nodig:
1. Breedtegraad en lengtegraad bepalen waar op aarde de camera zich bevindt;
2. Zoom bepaalt hoe dicht de camera bij de grond is;
3. De hoeken van rotatie en tilt bepalen de kijkrichting van de camera.
Je ziet deze vijf waarden in de topbar van de Mapcreator-tool; ze veranderen zelfs live terwijl je de kaart verplaatst.
Het blijkt dat we voor vloeiende camerabewegingen alleen maar elk van deze parameters apart hoeven te animeren (oftewel: interpoleren). Dat maakt het een stuk eenvoudiger. Het interpoleren van één enkel getal is een bekend wiskundig vraagstuk, met allerlei oplossingen voor verschillende toepassingen. Ben je nieuwsgierig, bekijk dan deze pagina met voorbeelden van verschillende soorten interpolaties op dezelfde set punten. Na wat experimenteren kozen we dit algoritme als de beste interpolatie voor onze toepassing. Het is een variant op het bekendere cubic spline-algoritme, dat beter voorspelbare curves oplevert dan de oorspronkelijke versie.
Maar daarmee zijn we er nog niet als je echt een goed resultaat wilt: er ligt nog een ander probleem op de loer. Is het je ooit opgevallen dat de grond heel langzaam lijkt te bewegen als je uit het raam van een vliegtuig kijkt, terwijl je in werkelijkheid enorm snel vliegt? Dat komt simpelweg doordat de grond heel ver weg is. Als je met dezelfde snelheid vlak boven de grond zou vliegen, zou alles zo snel voorbijschieten dat je niets meer zou kunnen onderscheiden. Helaas heeft onze camera last van precies hetzelfde effect: als we de zoom heel snel omhoog en omlaag laten gaan, krijg je heel abrupte en onnatuurlijke veranderingen in de ogenschijnlijke snelheid, ook al blijft die technisch gezien constant.
Om dat op te lossen, bedachten we slimme wiskunde om de snelheid van de camera aan te passen terwijl hij in- en uitzoomt. Hoe lager de camera komt, hoe langzamer hij moet bewegen — en andersom. We zijn zelfs nog een stap verder gegaan en hebben deze correcties volledig automatisch en onzichtbaar voor de gebruiker gemaakt. Waarschijnlijk merk je er nooit iets van: het werkt gewoon, en de camera beweegt precies zoals je intuïtief verwacht.
Nu hoefden we alles alleen nog maar samen te brengen, en daar is het resultaat: een vloeiende en natuurlijk ogende camerabeweging die automatisch wordt berekend op basis van een eenvoudige set keyframes.
Probeer het zelf!
Wat je moet doen om dit uit te proberen? Open gewoon de animatiefunctie! Sinds de nieuwste update hebben al je toekomstige kaartanimaties, én oudere projecten die je opnieuw opent, veel vloeiendere overgangen. We kunnen niet wachten om te zien wat je gaat maken en hoe map-nificent jouw kaartanimaties worden!