Cenas cinematográficas sem mods: keyframes, interpolação e truques de espectador
Duas maneiras de mover uma câmera no vanilla — uma função de teletransporte por tick, ou o registro de linha do tempo. Para que cada uma serve e o suavização que impede que pareça robótico.
Não existe um objeto de câmera no vanilla, então uma cena cinematográfica é uma de duas ilusões.
Método 1: teletransportar o Jogador a cada tick
A maneira antiga e universal. Coloque o Jogador no modo espectador e, em seguida, mova-o ao longo de um caminho:
gamemode spectator @s
tp @s 100.0 70.0 200.0 -90.0 10.0
um tp por tick de uma cadeia de funções. Funciona em todas as versões e não precisa de nada especial. Os problemas são todos sobre suavidade:
- 20 keyframes por segundo. Uma tomada de dez segundos são 200 linhas
tp. - Passos lineares parecem mecânicos. Movimentos de câmera reais suavizam a entrada e a saída.
- A rotação se comporta mal. Ir de guinada 170 para -170 é uma virada de 20 graus, mas a
interpolação ingênua gira 340 graus na direção errada. Normalize a diferença de ângulo para o intervalo -180…180 antes de dar o passo.
Gerar essas linhas é para isso que serve uma ferramenta de keyframe — você posiciona algumas posições e ela emite a função por tick com suavização aplicada.
Suavização (Easing)
A diferença entre amador e assistível é a curva de interpolação. Entre dois keyframes, com t de 0 a 1:
linear t
ease-in-out t < 0.5 ? 2t² : 1 − 2(1−t)²
smoothstep t² × (3 − 2t)
smoothstep é o padrão seguro. Aplique-o à posição e rotação juntas ou a câmera chegará antes de terminar de girar.
Método 2: o registro de linha do tempo (timeline registry)
Versões mais recentes adicionam um formato de linha do tempo que descreve toda a tomada como dados, em vez de centenas de teletransportes:
data/<namespace>/timeline/intro.json
Keyframes com tempos e modos de interpolação, reproduzidos com um único comando. Vantagens:
- Muito menor. Seis keyframes em vez de duzentos teletransportes.
- A interpolação é nativa, então não há matemática de suavização manual.
- Independente da taxa de quadros — não gagueja como um teletransporte por tick em um
servidor carregado.
O custo é que ele só existe em versões recentes, então um Mapa que visa clientes mais antigos ainda precisa do método 1.
Mantendo o Jogador no lugar
Ambos os métodos lutam contra duas coisas:
- Entrada do Jogador. O modo espectador permite que o Jogador voe para longe no meio da tomada. O
teletransporte a cada tick o anula, o que é uma das razões pelas quais o método de força bruta persiste.
- Carregamento de chunks. Uma câmera voando para algum lugar descarregado mostra o vazio.
/forceloado caminho
antes da tomada e remova-o depois.
Escondendo o HUD
/gamerule doImmediateRespawn, modo espectador e F1 levam você na maior parte do caminho. Para um quadro limpo, um pacote de recursos que apaga os sprites do HUD remove a mira e a barra de atalhos sem que o Jogador pressione nada — veja o guia do HUD.
Coloque keyframes em um caminho e exporte uma função por tick ou um JSON de linha do tempo com as Ferramentas Cinematográficas e de Linha do Tempo de Data Pack.