Gráfico de escena


Un gráfico de escena es una estructura de datos general utilizada comúnmente por aplicaciones de edición de gráficos basados en vectores y juegos de computadora modernos, que organiza la representación lógica y, a menudo, espacial de una escena gráfica. Es una colección de nodos en un gráfico o estructura de árbol . Un nodo de árbol puede tener muchos hijos pero solo un padre, con el efecto de un padre aplicado a todos sus nodos hijos; una operación realizada en un grupo propaga automáticamente su efecto a todos sus miembros. En muchos programas, asociar una matriz de transformación geométrica (ver también transformación y matriz) en cada nivel de grupo y la concatenación de dichas matrices juntas es una forma eficaz y natural de procesar dichas operaciones. Una característica común, por ejemplo, es la capacidad de agrupar formas y objetos relacionados en un objeto compuesto que luego puede manipularse tan fácilmente como un solo objeto.

En la edición de gráficos basados ​​en vectores, cada nodo hoja en un gráfico de escena representa alguna unidad atómica del documento, generalmente una forma como una elipse o una ruta de Bézier . Aunque las formas en sí mismas (particularmente las rutas) se pueden descomponer aún más en nodos como los nodos spline , es práctico pensar en el gráfico de escena como compuesto de formas en lugar de ir a un nivel más bajo de representación.

Otro concepto de nodo útil e impulsado por el usuario es la capa . Una capa actúa como una hoja transparente sobre la que se puede colocar cualquier número de formas y grupos de formas. El documento se convierte entonces en un conjunto de capas, cualquiera de las cuales puede hacerse invisible, atenuarse o bloquearse convenientemente (convertirse en solo lectura). Algunas aplicaciones colocan todas las capas en una lista lineal, mientras que otras admiten capas dentro de capas a la profundidad deseada.

Internamente, puede que no haya ninguna diferencia estructural real entre capas y grupos, ya que ambos son solo nodos de un gráfico de escena. Si se necesitan diferencias, una declaración de tipo común en C ++ sería hacer una clase de nodo genérica y luego derivar capas y grupos como subclases. Un miembro de visibilidad, por ejemplo, sería una característica de una capa, pero no necesariamente de un grupo.

Los gráficos de escena son útiles para juegos modernos que utilizan gráficos en 3D y mundos o niveles cada vez más grandes. En tales aplicaciones, los nodos en un gráfico de escena (generalmente) representan entidades u objetos en la escena.

Por ejemplo, un juego podría definir una relación lógica entre un caballero y un caballo de modo que el caballero se considere una extensión del caballo. El gráfico de escena tendría un nodo de 'caballo' con un nodo de 'caballero' adjunto.


Arquitectura de OpenSceneGraph , una API de gráficos 3D de código abierto que admite una implementación de gráficos de escena rica en funciones y ampliamente adoptada.