Ciencia y Tecnología

Gráfico de escena – LinuxFr.org

Segunda parte de mi tríptico que explica un poco sobre 3D bajo la apariencia de la salida VulkanSceneGraph del gráfico de escena. En la sección anterior, discutimos el salto tecnológico que hizo posible el renderizado ráster 3D que conocemos hoy, basado en OpenGL y Vulkan. Hablemos de gráficos de escena hoy.

Teniendo en cuenta que una escena es la definición gráfica del mundo representado en la pantalla, un gráfico de escena es una estructura que superpone los diversos elementos de una escena dentro de un gráfico. Esto se debe a que esta representación es particularmente relevante.

Visión general

En la práctica, hay muchas formas de construir un escenario gráfico, adaptado a su uso. Por ejemplo, el gráfico de escena subyacente de Blender no tiene nada que ver con las últimas novedades de Call of Duty.

Un gráfico de escena a menudo comienza en el nodo raíz. Adjunto al nodo raíz hay una jerarquía de nodos que pueden representar transformaciones en el espacio (traslación, rotación, etc.), cambios de estado (color, sombreado actual, etc.) y geometría (formas geométricas simples). , racimos triangulares) y otros tipos de nudos más exóticos, volvemos a esto.

Por lo tanto, representar una escena en la pantalla significa recorrer el gráfico en detalle y aplicar las transformaciones que se realizan a medida que se visita cada nodo.

Por ejemplo, acceda a este gráfico y dígale a la API 3D que realice las siguientes acciones:

  • aplicar matriz m1
  • establecer el atributo de color en rojo
  • mostrar la esfera
  • eliminar atributo de color
  • aplicar la matriz m2
  • establecer el atributo de color en verde
  • mostrar un cubo
  • eliminar atributo de color
  • eliminar la conversión de m2
  • eliminar conversión m1
  • Mostrar un toroide

Echemos un vistazo más de cerca a los beneficios de usar un gráfico de escena.

Priorización de geometría

La creación de su escena con nodos de transformación con geometría añadida facilita mucho la gestión de transformaciones complejas de objetos interrelacionados. Tomando como ejemplo el brazo robótico, la posición de la mano depende de la posición del codo, que a su vez depende de la posición del hombro. Es mucho más fácil crear un conjunto de matrices de transformación para un objeto relativo a su padre que aplicar una transformación compleja a la mano que tenga en cuenta todos los parámetros del codo y el hombro. Los codos están conectados a los hombros, las manos hasta los codos. Al controlar la rotación al nivel del hombro, cada matriz se combina para aplicar una transformación y la mano sigue el movimiento.

Eliminación de formas invisibles

Es posible que esté familiarizado con el adagio de que el código más rápido es el código que nunca se ejecuta. Del mismo modo, la geometría más rápida es la que no ves, por lo que es muy útil para determinar muy pronto qué objetos no quieres ver en la pantalla. Los gráficos de escena son especialmente útiles para esto.

Un enfoque común es determinar para cada nodo un volumen simple que lo contenga junto con todos sus hijos. Puede usar esferas o cajas colocadas en el eje y precalcularlas. Luego acceda al gráfico. Para cada nodo secundario de la raíz, calcule la intersección del volumen límite del nodo con el tronco (la pirámide truncada que representa lo que la cámara puede ver). Un nodo (y todos sus hijos por extensión) se puede eliminar si el volumen límite está completamente fuera. Si el volumen límite está completamente dentro del tronco, el nodo y todos sus hijos son visibles. Si se expande el frustum, se visita a cada hijo y se aplica la misma operación recursivamente.

Optimización de renderizado

Optimizar el renderizado de su escena ciertamente puede ser el tema de un libro completo, pero debe tenerse en cuenta que para cada renderizado es importante hacer la menor cantidad posible de llamadas a la tarjeta gráfica. . Por lo tanto, es más eficiente cargar la geometría en el búfer de la tarjeta gráfica con anticipación y es más eficiente cambiar el estado lo menos posible, como las posiciones de las luces y los sombreadores actuales.

Así puedes analizar el gráfico y transformarlo para combinar posibles nodos. Por ejemplo, en lugar de seleccionar el sombreador adecuado para cada parte de la geometría, puede agrupar la geometría con el mismo sombreador y seleccionarlo solo una vez.

Combinación de nodos de sombreado

De manera similar, permitir que el grafo sea un grafo acíclico en lugar de un árbol permite que el mismo objeto sea representado por diferentes transformaciones, ya que se puede llegar al mismo nodo a través de diferentes caminos (un bosque que contiene el mismo árbol muchas veces). Por ejemplo, puede ahorrar espacio en los búferes de geometría o incluso permitir ciertas formas de almacenamiento en caché.

Combinación de nodos de geometría

muchos otros

Cubriremos algunas operaciones en las que el gráfico de escena es muy útil.

  • Gestión del nivel de detalle: los nodos LOD pueden tener un conjunto de elementos secundarios que corresponden más o menos al mismo objeto, lo que permite que se muestre el objeto apropiado según la distancia a la cámara. No tiene que usar miles de polígonos para mostrar sus objetos. 2 píxeles por encima del horizonte.

  • Selección: desde un punto en la pantalla, puede aplicar una transformación inversa y encontrar una lista de objetos debajo del punto. Esto permite al usuario seleccionar objetos.

Uso avanzado del scenegraph

Las escenas en los motores gráficos modernos son muy complejas y requieren muchas pasadas. Los motores a menudo renderizan partes de la escena en una textura mediante la aplicación de capas o sombreadores, y utilizan esta textura en el renderizado final para gestionar las sombras, por ejemplo. O reflejo (piense en un objeto reflejado en el agua, por ejemplo). El renderizado final en sí puede convertirse en una textura antes de mostrarse en la pantalla para aplicar sombreadores en la pantalla. Por ejemplo, para emular una vista a través de gafas de visión nocturna o una pantalla borrosa cuando un personaje está intoxicado. Por ejemplo, el uso juicioso de nodos especializados, como nodos de cámara y nodos de efectos que gestionan automáticamente las sombras, puede proporcionar a los desarrolladores un conjunto optimizado y listo para usar de herramientas de alto nivel. Este es exactamente el objetivo que persigue OpenSceneGraph y termina aquí esta serie.

.

About the author

w-admin

Leave a Comment