1 of 17

CC3501�Grafos de Escena

Network of above, Kandinsky (1927)

2 of 17

Esta imagen del juego Metal Gear Solid 3 nos muestra una escena llena de flores, pasto, árboles, hojas y pétalos cayendo.

¿Cómo se puede renderizar una escena así de compleja en tiempo real?

¿Cómo se manipula lo que sucede en esta escena?

3 of 17

¿Cuántos modelos 3D necesitamos para renderizar un tablero de ajedrez con todas sus piezas?

4 of 17

Geometry Instancing

Una escena 3D puede tener múltiples objetos.

A veces esos objetos son distintas instancias de un modelo existente.

5 of 17

La idea de repetir los mismos objetos en la pantalla no es propia de 3D. Antes con gráficos 2D ya se hacía.

6 of 17

Grafo de Escena

El grafo de escena es la estructura de datos que nos permite:

  • Describir la escena de una manera generalizable.
  • Administrar las instancias de nuestros modelos 3D.

Y, como consecuencia de lo anterior:

  • Componer transformaciones.
  • Separar la escena a graficar del código que la grafica.*

*: importante en otras áreas. Por ej., ciencia de datos.

7 of 17

Motivación 👀

Cuando hablamos de organización no solamente nos referimos a tener los objetos en una lista.

También queremos hacernos cargo de las dependencias entre ellos:

Objetos contenidos dentro de otros

Objetos cuya posición depende de otros

Antes hablamos de composición de transformaciones. Pero, en una escena con miles de objetos, ¿cómo asegurarnos que trabajamos sin equivocarnos en el orden de las transformaciones?

8 of 17

Un esquema de las distintas transformaciones que debemos considerar.

9 of 17

Estructura: DAG

Directed Acyclic Graph (red dirigida acíclica)

Esta estructura tiene nodos y aristas.

Los nodos son elementos, es decir, un objeto 3D o un conjunto de objetos 3D.

Las aristas, arcos o conexiones son relaciones.

¿Cómo implementar esta estructura de datos?

Cada arista tiene una matriz de transformación asociada. A medida que recorremos el árbol desde la raíz, las matrices se van multiplicando.

10 of 17

Traslación

Traslación y Rotación

Rotación

11 of 17

El orden en que se recorre la red es importante. Para componer matrices, el mejor es pre-order. ¿Cómo implementar la multiplicación de matrices?

12 of 17

Otro ejemplo: el Señor Caja.

13 of 17

¿Es cada caja un objeto diferente? Notamos que en realidad pueden ser todas la misma caja pero con una transformación distinta.

14 of 17

Estos esqueletos son la base de las animaciones en la actualidad. La técnica se llama skinning.

15 of 17

Ahora podemos retomar el concepto de instanciamiento (instancing). Un objeto en el grafo es un puntero o referencia a otro objeto (¡que puede ser un grafo!)

16 of 17

Grafo de escena de un auto hipotético.

17 of 17

Demo