Przerywniki filmowe z kamerą bez moda: klatki kluczowe, interpolacja i sztuczki z trybem widza
Vanilla porusza kamerą tylko w jeden sposób — funkcją teleportacji wywoływaną co tick — a rejestr osi czasu buduje wokół tego nastrój. Do czego nadaje się każde z nich i jakie wygładzanie odbiera temu mechaniczny wygląd.
W vanilla nie istnieje żaden obiekt kamery, więc przerywnik filmowy to iluzja zbudowana z teleportacji, z osią czasu zmieniającą świat wokół niej.
Metoda 1: teleportacja gracza co tick
Stary, uniwersalny sposób. Przełącz gracza w tryb widza, a potem prowadź go po ścieżce:
gamemode spectator @s
tp @s 100.0 70.0 200.0 -90.0 10.0
jedno tp na tick z łańcucha funkcji. Działa na każdej wersji i nie wymaga niczego specjalnego. Wszystkie problemy dotyczą płynności:
- 20 klatek kluczowych na sekundę. Dziesięciosekundowe ujęcie to 200 linii
tp. - Liniowe kroki wyglądają mechanicznie. Prawdziwe ruchy kamery przyspieszają i zwalniają.
- Obrót zawija się źle. Przejście od yaw 170 do -170 to obrót o 20 stopni, ale naiwna interpolacja zakręci 340 stopni w złą stronę. Znormalizuj różnicę kątów do zakresu -180…180 przed wykonaniem kroku.
Generowanie tych linii to właśnie zadanie narzędzia do klatek kluczowych — umieszczasz kilka pozycji, a ono wypisuje funkcję na każdy tick z zastosowanym wygładzaniem.
Wygładzanie
Różnica między amatorskim a przyjemnym w odbiorze efektem tkwi w krzywej interpolacji. Między dwiema klatkami kluczowymi, przy t od 0 do 1:
linear t
ease-in-out t < 0.5 ? 2t² : 1 − 2(1−t)²
smoothstep t² × (3 − 2t)
smoothstep to bezpieczny domyślny wybór. Stosuj go jednocześnie do pozycji i obrotu, inaczej kamera dotrze na miejsce, zanim skończy skręcać.
Metoda 2: osie czasu, do wszystkiego oprócz kamery
Nowsze wersje dodały rejestr timeline i kusi, by odczytać go jako ścieżkę kamery:
data/<namespace>/timeline/intro.json
To nie jest ścieżka kamery. Oś czasu działa względem zegara świata i tworzy klatki kluczowe dla atrybutów otoczenia — koloru nieba i mgły, dźwięków otoczenia i muzyki, światła — z natywną interpolacją. Nie potrafi poruszyć graczem, więc sama kamera to nadal metoda 1. Oś czasu świetnie radzi sobie natomiast z nastrojem przerywnika: przygasza niebo, przesuwa mgłę i podmienia muzykę w rytm teleportacji, bez osobnej komendy na każdy tick.
Koszt jest taki, że istnieje tylko w nowszych wersjach, więc mapa celująca w starszych klientów musi udawać nastrój za pomocą /time i /weather.
Utrzymanie gracza w miejscu
Ścieżka teleportacji walczy z dwiema rzeczami:
- Wejściem gracza. Tryb widza pozwala graczowi odlecieć w trakcie ujęcia. Teleportacja co tick to nadpisuje — i to jeden z powodów, dla których metoda siłowa wciąż się trzyma.
- Wczytywaniem chunków. Kamera lecąca w niewczytane miejsce pokazuje pustkę. Wykonaj
/forceloadna ścieżce przed ujęciem i usuń ją po.
Ukrywanie HUD
Tryb widza i F1 załatwiają większość roboty. Dla czystego kadru paczka zasobów, która wygasza sprite'y HUD, usuwa celownik i pasek szybkiego dostępu, bez naciskania czegokolwiek przez gracza — zobacz poradnik o HUD.
Rozmieść klatki kluczowe na ścieżce i wyeksportuj funkcję na każdy tick, a potem zbuduj oś czasu ustawiającą scenę wokół niej, korzystając z Kreatorów przerywników i osi czasu.