Gráficos de escena – LinuxFr.org

La segunda parte de mis gráficos 3D que toma la salida del gráfico de escena de VulkanSceneGraph como una excusa para hablar un poco de 3D. En la sección anterior, hablamos sobre los avances tecnológicos que permitieron el renderizado ráster 3D, tal como lo conocemos hoy, basado en OpenGL y Vulkan. hoy estamos hablando de Gráficos de escena.

Dado que una escena es la definición gráfica del mundo a representar en una pantalla, un escenario gráfico es una estructura que ordena los diversos elementos de una escena dentro de un gráfico, porque esta representación es particularmente relevante.

índice

En la práctica, existen muchas formas de crear un escenario gráfico, que se adaptarán al uso que se le dé. Diagrama de escena básico mezclador Por ejemplo no tiene nada que ver con lo que pasó en el último Call of Duty.

Un escenario gráfico a menudo comienza con un nodo raíz, al que se adjunta una jerarquía de nodos que pueden representar transiciones en el espacio (traslaciones, ciclos, etc.), cambios de estado (colores, sombreado actual, etc.) y geometría (simples). formas geométricas, grupos de triángulos) Y otros tipos de nodos más exóticos, volveremos a esto.

Así que la visualización de la escena en la pantalla es cruzando el gráfico profundamente, y aplicado a cada nodo Visite la transformación a ejecutar.

Por ejemplo, al visitar este gráfico, le diríamos a la API 3D que realice las siguientes acciones:

  • aplicación de matriz m1
  • Establecer el tema de color en rojo
  • mostrar la pelota
  • Eliminar el tema de color
  • aplicación matricial m2
  • Establecer el tema de color en verde
  • mostrar el cubo
  • Eliminar el tema de color
  • Eliminación del convertidor de metros cuadrados
  • eliminar convertir m1
  • espectáculo de aro

Ahora echemos un vistazo más de cerca a las ventajas de usar un histograma de escena

Priorizar la ingeniería

Al estructurar su escena con nodos de transformación a los que se han agregado geometrías, es mucho más fácil administrar transformaciones complejas de objetos vinculados entre sí. Tomemos, por 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. En lugar de aplicar una transformación compleja a la mano que tenga en cuenta todos los parámetros del codo y el hombro, es mucho más fácil obtener una serie de matrices de transformación para un objeto relativo a su padre: el codo está conectado al hombro y la mano es hasta el codo. Al controlar la rotación a la altura del hombro, se aplicarán transiciones integrando cada matriz y la mano seguirá el movimiento.

Eliminar formas geométricas invisibles

Puede que estés familiarizado con el dicho de que el código más rápido es el que no has ejecutado. Del mismo modo, la geometría más rápida es la que no se renderiza, por lo que es muy útil identificar muy pronto los objetos que no necesitará renderizar en pantalla. Los diagramas de escena son particularmente útiles para esto.

El enfoque general, para cada nodo, para especificar Tamaño sencillo incluido Y así son todos sus hijos. Podemos utilizar esferas o cajas alineadas en los ejes, y calcularlas con antelación. Luego visitamos el gráfico: para cada nodo hijo en la raíz, calculamos la intersección del volumen límite del nodo con tronco, la pirámide truncada que representa lo que ve la cámara. Si el volumen circunferencial está completamente fuera, el nodo (y por lo tanto todos sus hijos) puede eliminarse. Si todo el volumen circundante está dentro de un tronco, el nodo y todos sus hijos deben mostrarse. Si se extiende a ambos lados del tronco, entonces se visita a cada niño y se aplica el mismo proceso repetidamente.

Proporcionar mejora

Optimizar el renderizado de una escena ciertamente podría ser el tema de un libro completo, pero tenga en cuenta que en cada renderizado es importante reducir el número de llamadas a la tarjeta gráfica tanto como sea posible. Por lo tanto, es más eficiente precargar geometrías en los búferes de la tarjeta gráfica y es mejor cambiar estados como la posición actual de luces y sombras, etc. lo menos posible.

Entonces podemos analizar el gráfico para transformarlo y combinar qué nodos podría ser. Por ejemplo, en lugar de seleccionar el sombreado apropiado para cada geometría, se pueden agrupar las geometrías usando el mismo shader, seleccionándolo una sola vez.

Una mezcla de nodos de sombreado

De manera similar, si uno permite que un gráfico sea un gráfico acíclico en lugar de un árbol, uno puede llegar al mismo nodo a través de diferentes caminos y, por lo tanto, representar el mismo objeto con diferentes transformaciones (piense en un bosque que contiene el mismo árbol muchas veces) por ejemplo Para ahorrar espacio en los búferes de arquitectura, o incluso para permitir ciertas formas de almacenamiento en caché.

combinación de nodos de ingeniería

Y otras cosas

Enumeremos algunas otras operaciones donde el histograma de la escena es muy útil.

  • Nivel de gestión de detalle: 1 nodo lod Puede tener una serie de elementos secundarios que coincidan con el mismo objeto con más o menos detalle, y mostrar el objeto apropiado según la distancia a la cámara: ¡no es necesario usar miles de polígonos para mostrar un objeto de 2 píxeles en el horizonte!

  • Seleccionar: desde un punto en la pantalla, podemos aplicar transformaciones inversas y encontrar la lista de objetos debajo del punto, lo que permite al usuario seleccionar un objeto

Uso avanzado de gráficos.

Una escena de un motor de gráficos moderno es muy compleja y requiere muchas pasadas: el motor a menudo convierte parte de la escena en una textura mediante la aplicación de capas o sombreadores, y luego usa esa textura en el renderizado final, por ejemplo, para administrar sombras o reflejos. (piensa en algo que se refleja en el agua, por ejemplo). El renderizado final en sí mismo a veces se convierte en una textura antes de renderizarse en la pantalla para aplicar sombreado en toda la pantalla, por ejemplo, para simular una vista a través de gafas de visión nocturna o un renderizado borroso si el personaje está borracho. Mediante el uso juicioso de nodos especializados, como nodos de cámara por ejemplo, o nodos de efectos directos que gestionan automáticamente las sombras, es posible dotar al desarrollador de una serie de herramientas de alto nivel, optimizadas y listas para usar. Este es exactamente el objetivo que persigue. OpenSceneGraphY aquí terminamos esta serie.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.