Cameratussenscènes zonder mod: keyframes, interpolatie en toeschouwerstrucs
Twee manieren om een camera te bewegen in vanilla — een tikkende teleporteerfunctie of het tijdlijnregister. Waar elk goed voor is, en de vloeiendmaking die voorkomt dat het er mechanisch uitziet.
Er is geen camera-object in vanilla, dus een tussenscène is een van twee illusies.
Methode 1: teleporteer de speler elke tick
De oude, universele manier. Zet de speler in toeschouwer en verplaats deze dan langs een pad:
gamemode spectator @s
tp @s 100.0 70.0 200.0 -90.0 10.0
één tp per tick from a function chain. It works on every version and needs nothing special. The problems are all about smoothness:
- 20 keyframes per seconde. Een opname van tien seconden is 200
tplines. - Lineaire stappen zien er mechanisch uit. Echte camerabewegingen hebben een geleidelijke in- en uitloop.
- Rotatie wikkelt slecht af. Gaan van yaw 170 naar -170 is een draai van 20 graden, maar naïeve
interpolatie draait 340 graden de verkeerde kant op. Normaliseer het hoekverschil naar het bereik -180…180 vóór het stappen.
Het genereren van die regels is waar een keyframe-tool voor dient — je plaatst een handvol posities en het genereert de per-tick-functie met toegepaste easing.
Easing
Het verschil tussen amateuristisch en kijkbaar is de interpolatiecurve. Tussen twee keyframes, met t from 0 to 1:
linear t
ease-in-out t < 0.5 ? 2t² : 1 − 2(1−t)²
smoothstep t² × (3 − 2t)
smoothstep is the safe default. Apply it to position and rotation together or the camera arrives before it finishes turning.
Methode 2: het tijdlijnregister
Nieuwere versies voegen een tijdlijnformaat toe dat de hele opname als data beschrijft in plaats van als honderden teleportaties:
data/<namespace>/timeline/intro.json
Keyframes met tijden en interpolatiemodi, afgespeeld met één enkel commando. Voordelen:
- Veel kleiner. Zes keyframes in plaats van tweehonderd teleportaties.
- Interpolatie is native, dus geen handmatige easing-wiskunde.
- Framerate-onafhankelijk — het hapert niet zoals een per-tick-teleportatie doet op een
belaste server.
Het nadeel is dat het alleen bestaat in recente versies, dus een map gericht op oudere clients heeft nog steeds methode 1 nodig.
De speler op zijn plek houden
Beide methoden strijden tegen twee dingen:
- Spelerinvoer. Toeschouwer laat de speler halverwege de opname wegvliegen. Elke tick opnieuw teleporteren
overschrijft dit, wat een reden is waarom de brute-force-methode blijft bestaan.
- Chunk-laden. Een camera die ergens vliegt wat niet geladen is, toont leegte.
/forceloadthe path
vóór de opname en verwijder het erna.
De HUD verbergen
/gamerule doImmediateRespawn, spectator mode and F1 get you most of the way. For a clean frame, a resource pack that blanks the HUD sprites removes the crosshair and hotbar without the player pressing anything — see the HUD guide.
Plaats keyframes op een pad en exporteer een per-tick-functie of een tijdlijn-JSON met de Cutscene- & tijdlijnbouwers.