MC Toolkit

Guías / Comandos y datos

Cámaras cinematográficas sin mods: keyframes, interpolación y trucos de espectador

El vanilla mueve una cámara de una sola forma —una función de teletransporte por tick— y el registro de líneas de tiempo marca el ambiente a su alrededor. Para qué sirve cada uno, y el suavizado que evita que se vea robótico.

En vanilla no existe un objeto cámara, así que una cinemática es una ilusión construida a base de teletransportes, con una línea de tiempo que cambia el mundo a su alrededor.

Método 1: teletransportar al jugador cada tick

La forma clásica y universal. Pon al jugador en espectador y muévelo a lo largo de una ruta:

gamemode spectator @s
tp @s 100.0 70.0 200.0 -90.0 10.0

un tp por tick desde una cadena de funciones. Funciona en todas las versiones y no necesita nada especial. Los problemas son todos de suavidad:

  • 20 keyframes por segundo. Un plano de diez segundos son 200 líneas de tp.
  • Los pasos lineales se ven mecánicos. Los movimientos de cámara reales aceleran y desaceleran.
  • La rotación se desborda mal. Pasar de un yaw de 170 a -170 es un giro de 20 grados, pero la interpolación ingenua gira 340 grados en la dirección equivocada. Normaliza la diferencia de ángulo al rango -180…180 antes de avanzar.

Generar esas líneas es precisamente para lo que sirve una herramienta de keyframes: colocas unas cuantas posiciones y te escupe la función por tick con la easing aplicada.

Easing

La diferencia entre algo amateur y algo que se deja ver es la curva de interpolación. Entre dos keyframes, con t de 0 a 1:

linear      t
ease-in-out t < 0.5 ? 2t²  :  1 − 2(1−t)²
smoothstep  t² × (3 − 2t)

smoothstep es el valor por defecto seguro. Aplícalo a la posición y a la rotación a la vez, o la cámara llegará antes de terminar de girar.

Método 2: líneas de tiempo, para todo menos la cámara

Las versiones recientes añadieron un registro timeline, y es tentador leerlo como una pista de cámara:

data/<namespace>/timeline/intro.json

No lo es. Una línea de tiempo corre contra un reloj del mundo y hace keyframes sobre atributos del entorno —color del cielo y de la niebla, sonido ambiente y música, luz— con interpolación nativa. No puede mover a un jugador, así que la cámara en sí sigue siendo el método 1. Lo que una línea de tiempo hace bien es el ambiente de una cinemática: fundir el cielo, desplazar la niebla y cambiar la música al ritmo de los teletransportes, sin un comando por tick para cada cosa.

El coste es que solo existe en versiones recientes, así que un mapa dirigido a clientes antiguos tiene que falsear el ambiente con /time y /weather.

Mantener al jugador en su sitio

La ruta de teletransporte pelea contra dos cosas:

  • La entrada del jugador. El espectador deja que el jugador se aleje volando a mitad de plano. Reteletransportarlo cada tick lo anula, y esa es una de las razones por las que el método bruto sigue existiendo.
  • La carga de chunks. Una cámara que vuela hacia una zona sin cargar muestra vacío. Usa /forceload en la ruta antes del plano y quítalo después.

Ocultar el HUD

El modo espectador y F1 te llevan casi hasta el final. Para un fotograma limpio, un paquete de recursos que deje en blanco los sprites del HUD elimina la mira y la barra rápida sin que el jugador pulse nada: consulta la guía del HUD.

Coloca keyframes sobre una ruta y exporta la función por tick, y construye la línea de tiempo que ambienta la escena a su alrededor, con los Cutscene & Timeline Builders.

Constructores de escenas y líneas de tiempo →

Más guías

Ver todas →