← CC2018

Orbit Camera

Semestre 02, 2026

Objetivo

  • Distinguir los dos tipos de cámara y ubicar dónde encaja la cámara orbital.
  • Describir una cámara con tres vectores, eye, center y up, en lugar de ángulos sueltos.
  • Construir la base de la cámara a partir de esos vectores usando producto cruz.
  • Entender el cambio de base como el paso de coordenadas de mundo a coordenadas de cámara.
  • Mover la cámara con ángulos de Euler y controlar sus límites con clamping.
  • Convertir coordenadas esféricas a cartesianas para obtener la posición final.

Tipos de cámara

La diferencia entre ambos está en dónde se coloca el observador respecto al personaje.

Free cam

Cámara en primera persona, donde el observador y el personaje ocupan el mismo punto.

Tercera persona

La cámara sigue al personaje principal desde afuera, manteniéndolo siempre a la vista.

Google Earth funciona como free cam, porque el usuario mueve libremente el punto desde el que mira.
El raycaster del maze también es free cam, porque la cámara es la posición del jugador.

Lakitu

Tercera persona

Lakitu, el personaje que carga la cámara en Super Mario 64, es la representación literal de esta idea.

La cámara orbital es la forma más común de implementar una cámara en tercera persona.
También es la que usan casi todos los editores 3D.
Lakitu cargando la cámara que sigue a Mario

La cámara orbital

Definición

Rota alrededor de un punto objetivo manteniendo una distancia fija, que llamamos radio.

Su movimiento está restringido a la superficie de una esfera alrededor del objetivo.
Puede subir, bajar y girar, pero nunca se acerca ni se aleja a menos que cambiemos el radio.
La analogía directa es la órbita de la Tierra alrededor del Sol.

La ventaja de la restricción

Idea clave

Esa restricción es justamente lo que la hace útil. El objetivo nunca se sale de cuadro, porque la cámara está construida para no perderlo de vista.

Eye, center y up

Una cámara se describe con tres valores, y los tres son vectores.

Eye: la posición de la cámara en el mundo.
Center: el punto objetivo, es decir lo que la cámara está mirando. En un juego en tercera persona, es el personaje.
Up: el vector que indica hacia dónde queda el arriba de la cámara.

Vectores en lugar de ángulos

Por qué vectores

Es mucho más manejable que la contraparte, que sería describir la cámara con ángulos sueltos. Con vectores podemos aplicar operaciones entre ellos mismos para calcular los valores que nos interesan.

Sobre el up

No es el arriba definitivo de la cámara, sino una referencia que le dice al sistema qué dirección considerar como vertical. A partir de esa pista se calcula el arriba real, que sí es perpendicular a la dirección de visión.

Proyecciones

Definición

El proceso mediante el cual convertimos una escena 3D en una imagen 2D. Para lograrlo vamos a usar cambios de base, que es cambiar el sistema de coordenadas en el que viven nuestros vectores.

Todo se hace en función de la perspectiva de la cámara, porque lo que se dibuja no es la escena en abstracto, sino la escena vista desde un punto concreto.

Un cambio de base no mueve nada

El mismo vector expresado en dos bases distintas
Idea clave

El vector morado no cambió. Lo único que cambió es el espacio en el que lo estamos describiendo.

Sus componentes son distintas porque los ejes contra los que se miden son otros.

Coordenadas relativas a la cámara

El objetivo es determinar los valores de la nueva base.
Esas nuevas coordenadas deben ser relativas a la posición de la cámara.
Una vez que un punto está en el espacio de la cámara, proyectarlo a la pantalla es directo.
Las nuevas coordenadas son relativas a la posición de la cámara

Los ejes de la cámara

El plan

Vamos a calcular los tres ejes que forman la nueva base. Los tres salen de eye, center y up, y los tres se normalizan.

Eje Z

Es el valor más fácil de calcular. Se obtiene restando center menos eye, que es el vector que va de la cámara hacia el objetivo, también llamado forward.

$$ \text{forward} = \text{normalize}(\text{center} - \text{eye}) $$
Sobre el signo

En la convención de cámara que usamos, el eje Z de la base apunta hacia atrás, en sentido contrario a la dirección de visión, así que la cámara mira hacia el Z negativo.

Eje X

Right

Es el eje que apunta a la derecha de la cámara, y sale del producto cruz entre el forward y el vector up.

El producto cruz devuelve un vector perpendicular a los dos operandos.
El orden importa, porque invertir los operandos invierte el sentido del vector.
La regla de la mano derecha determina la dirección del producto cruz

Eje Y

Es el arriba real de la cámara, y se obtiene con otro producto cruz, esta vez entre el eje X y el forward.

Para qué sirve este paso

Es el que corrige el up que dimos como referencia. Aunque el up original no fuera exactamente perpendicular a la dirección de visión, el resultado de este producto cruz sí lo es, así que la base queda ortogonal.

Resumen de la base

$$ \text{forward} = \text{normalize}(\text{center} - \text{eye}) $$ $$ \text{right} = \text{normalize}(\text{cross}(\text{forward}, \text{up})) $$ $$ \text{up}_{real} = \text{cross}(\text{right}, \text{forward}) $$
Resultado

Con los tres ejes calculados y normalizados tenemos una base ortonormal, que es todo lo que hace falta para expresar cualquier punto del mundo en coordenadas de cámara.

Movimiento de la cámara

Ángulos de Euler

Describen la orientación de un objeto en un espacio 3D mediante rotaciones sobre los tres ejes. Siempre se manejan en radianes.

El movimiento viene desde la cámara y no desde los objetos de la escena.
La cámara se desplaza alrededor del objetivo

Las tres rotaciones

Yaw: la rotación sobre el eje Y, el eje vertical.
Pitch: la rotación sobre el eje X, el que apunta a la derecha de la cámara.
Roll: la rotación sobre el eje Z, el que apunta en la dirección de visión.

Yaw

Vista top-down

Si imaginamos la escena desde arriba, el movimiento se ve claramente como una órbita alrededor del objetivo.

El desplazamiento ocurre en los ejes X y Z, mientras que la altura se mantiene constante.
El radio es la magnitud del vector que va del center al eye, y es lo que la cámara orbita.
Vista top-down del yaw, donde el movimiento se ve como una órbita

El ángulo del yaw

El ángulo se puede representar como el arcotangente de Z sobre X, tomando los componentes del vector radio.

$$ \theta = \arctan\left(\frac{radio_z}{radio_x}\right) $$
En la práctica

Se usa la versión de dos argumentos, con el componente Z y el componente X del radio. Esa versión es la que sirve, porque resuelve el signo correcto en los cuatro cuadrantes.

Pitch

El pitch convierte la órbita plana en una esfera
De círculo a esfera

Con el yaw solo teníamos una órbita plana. Al agregar el pitch esa órbita se convierte en una esfera completa, porque ahora la cámara también puede subir y bajar.

Es el movimiento de mirar hacia arriba y hacia abajo.

El ángulo del pitch

El cateto adyacente aquí no es todo el eje X, sino la proyección del radio sobre el plano horizontal.

$$ \varphi = \arcsin\left(\frac{radio_y}{\lVert radio \rVert}\right) $$
El componente Y del radio dice qué tan arriba está la cámara, y dividirlo entre la magnitud lo convierte en un ángulo.

Roll

Definición

Rotación sobre el eje Z, el eje que apunta en la dirección de visión. Es el movimiento de inclinar la cabeza hacia un hombro.

En este curso no lo vamos a volver a mencionar.
Una cámara orbital no lo necesita, porque el vector up mantiene el horizonte nivelado.
Las tres rotaciones sobre los ejes de la cámara

Clamping

El problema

Como es posible pasarse de los valores válidos al acumular rotaciones, hace falta limitar los ángulos, y cada uno se limita de forma distinta.

El yaw es cíclico

Girar 360 grados deja la cámara exactamente donde empezó.
Si sumamos 20 grados a 350 grados obtenemos 370 grados, que no es un valor válido.
Se aplica un módulo para traer el ángulo de vuelta al rango.

El pitch no es cíclico

Límite habitual

Casi ningún juego permite girar 360 grados en la vertical, porque la cámara terminaría de cabeza y el vector up se invertiría. Lo normal es limitarlo a 90 grados hacia arriba y menos 90 grados hacia abajo.

Esos extremos ni siquiera se tocan del todo, porque justo ahí el forward queda paralelo al up y el producto cruz colapsa.

De esféricas a cartesianas

Hasta este momento describimos la cámara con un radio y dos ángulos. Para colocarla en el mundo hay que convertir esa descripción a coordenadas cartesianas.

$$ x = r \cos(\varphi) \cos(\theta) $$ $$ y = r \sin(\varphi) $$ $$ z = r \cos(\varphi) \sin(\theta) $$

Qué es cada valor

\(r\) es el radio, es decir la distancia entre la cámara y el objetivo.
\(\theta\) es el yaw.
\(\varphi\) es el pitch.
Ojo con el resultado

Esas tres fórmulas dan un desplazamiento respecto al origen, no una posición absoluta. Para obtener la posición final de la cámara hay que sumarlo al punto objetivo.

Por qué nunca se pierde el objetivo

Idea clave

La posición de la cámara se calcula siempre a partir del center, así que el objetivo queda en el eje de la órbita por construcción.

Cambio de base

En gráficas por computadora trabajamos con dos sistemas de coordenadas al mismo tiempo.

Coordenadas de mundo

Posiciones y direcciones absolutas dentro de la escena.

Coordenadas de cámara

Posiciones y direcciones relativas a la cámara.

Los ejes de la cámara son los que conectan ambos sistemas.

Los ejes como puente

Right: apunta a la derecha de la cámara.
Up: apunta hacia arriba desde la cámara.
Forward: apunta en la dirección de visión.

De cámara a mundo

Un vector expresado en coordenadas de cámara se pasa a coordenadas de mundo como una combinación lineal de los ejes de la cámara.

$$ \mathbf{v}_{world} = v_x \cdot \mathbf{right} + v_y \cdot \mathbf{up} + v_z \cdot \mathbf{forward} $$
Cada componente dice cuánto avanzar a lo largo de cada eje, y sumando los tres desplazamientos se obtiene el vector en el mundo.

De mundo a cámara

La operación inversa

Se hace proyectando el vector sobre cada eje con producto punto. Como la base es ortonormal, esa proyección es todo lo que hace falta y no hay que invertir ninguna matriz.