stringtranslate.com

Jerarquía de volumen delimitador

Un ejemplo de una jerarquía de volumen delimitador que utiliza rectángulos como volúmenes delimitadores

Una jerarquía de volumen delimitador ( BVH ) es una estructura de árbol sobre un conjunto de objetos geométricos . Todos los objetos geométricos, que forman los nodos de hoja del árbol, están envueltos en volúmenes delimitadores . Estos nodos se agrupan luego como conjuntos pequeños y se encierran dentro de volúmenes delimitadores más grandes. Estos, a su vez, también se agrupan y encierran dentro de otros volúmenes delimitadores más grandes de manera recursiva, lo que finalmente da como resultado una estructura de árbol con un solo volumen delimitador en la parte superior del árbol. Las jerarquías de volumen delimitador se utilizan para admitir varias operaciones en conjuntos de objetos geométricos de manera eficiente, como en la detección de colisiones y el trazado de rayos .

Aunque envolver objetos en volúmenes delimitadores y realizar pruebas de colisión sobre ellos antes de probar la geometría del objeto en sí simplifica las pruebas y puede dar como resultado mejoras significativas en el rendimiento, se sigue realizando la misma cantidad de pruebas por pares entre volúmenes delimitadores. Al organizar los volúmenes delimitadores en una jerarquía de volúmenes delimitadores, la complejidad temporal (la cantidad de pruebas realizadas) se puede reducir a logarítmica en la cantidad de objetos. Con una jerarquía de este tipo en su lugar, durante las pruebas de colisión, no es necesario examinar los volúmenes secundarios si sus volúmenes primarios no se intersecan (por ejemplo, si los volúmenes delimitadores de dos autos chocadores no se intersecan, no sería necesario verificar la colisión de los volúmenes delimitadores de los propios autos chocadores).

Problemas de diseño de BVH

La elección del volumen delimitador está determinada por un equilibrio entre dos objetivos. Por un lado, nos gustaría utilizar volúmenes delimitadores que tengan una forma muy simple. Por lo tanto, solo necesitamos unos pocos bytes para almacenarlos, y las pruebas de intersección y los cálculos de distancia son simples y rápidos. Por otro lado, nos gustaría tener volúmenes delimitadores que se ajusten muy bien a los objetos de datos correspondientes. Uno de los volúmenes delimitadores más utilizados es un cuadro delimitador mínimo alineado con el eje . El cuadro delimitador mínimo alineado con el eje para un conjunto dado de objetos de datos es fácil de calcular, solo necesita unos pocos bytes de almacenamiento y las pruebas de intersección robustas son fáciles de implementar y extremadamente rápidas.

Hay varias propiedades deseadas para un BVH que deben tenerse en cuenta al diseñar uno para una aplicación específica: [1]

En términos de la estructura del árbol binario, se debe decidir qué grado (número de hijos) y altura se utilizarán en el árbol que representa el árbol binario. Un árbol de grado bajo tendrá una altura mayor, lo que aumenta el tiempo de recorrido de raíz a hoja. Por otro lado, se debe dedicar menos trabajo en cada nodo visitado para verificar si sus hijos se superponen. Lo opuesto se aplica a un árbol de grado alto: aunque el árbol tendrá una altura menor, se dedica más trabajo en cada nodo. En la práctica, los árboles binarios (grado = 2) son, con diferencia, los más comunes. Una de las principales razones es que los árboles binarios son más fáciles de construir. [2]

Construcción

Hay tres categorías principales de métodos de construcción de árboles: de arriba hacia abajo, de abajo hacia arriba y de inserción.

Los métodos descendentes proceden dividiendo el conjunto de entrada en dos (o más) subconjuntos, limitándolos en el volumen delimitador elegido y luego continúan dividiendo (y delimitando) recursivamente hasta que cada subconjunto consista en un solo primitivo (se alcanzan los nodos de hoja). Los métodos descendentes son fáciles de implementar, rápidos de construir y, por lejos, los más populares, pero no dan como resultado los mejores árboles posibles en general.

Los métodos ascendentes comienzan con el conjunto de entrada como las hojas del árbol y luego agrupan dos (o más) de ellas para formar un nuevo nodo (interno), y proceden de la misma manera hasta que todo se haya agrupado bajo un solo nodo (la raíz del árbol). Los métodos ascendentes son más difíciles de implementar, pero es probable que produzcan mejores árboles en general. Algunos estudios recientes [3] indican que en el espacio de baja dimensión, la velocidad de construcción se puede mejorar en gran medida (lo que coincide o supera a los enfoques descendentes) al ordenar los objetos utilizando una curva que llena el espacio y aplicar una agrupación aproximada basada en este orden secuencial.

Tanto los métodos de arriba hacia abajo como los de abajo hacia arriba se consideran métodos fuera de línea , ya que ambos requieren que todos los primitivos estén disponibles antes de que comience la construcción. Los métodos de inserción construyen el árbol insertando un objeto a la vez, comenzando desde un árbol vacío. La ubicación de inserción debe elegirse de manera que haga que el árbol crezca lo menos posible de acuerdo con una métrica de costo. Los métodos de inserción se consideran métodos en línea, ya que no requieren que todos los primitivos estén disponibles antes de que comience la construcción y, por lo tanto, permiten que se realicen actualizaciones en tiempo de ejecución.

Uso

Trazado de rayos

Los BVH se utilizan a menudo en el trazado de rayos para eliminar candidatos potenciales de intersección dentro de una escena omitiendo objetos geométricos ubicados en volúmenes delimitadores que no son intersectados por el rayo actual. [4] Además, como optimización de rendimiento común, cuando solo la intersección más cercana del rayo es de interés, como el algoritmo de recorrido de trazado de rayos está descendiendo nodos y varios nodos secundarios están intersectando el rayo, el algoritmo de recorrido considerará primero el volumen más cercano y, si encuentra una intersección allí, que es definitivamente más cercana que cualquier intersección posible en el segundo (u otro) volumen (es decir, los volúmenes no se superponen), puede ignorar de manera segura el segundo volumen. Se pueden emplear optimizaciones similares durante el recorrido BVH al descender a volúmenes secundarios del segundo volumen, para restringir aún más el espacio de búsqueda y, por lo tanto, reducir el tiempo de recorrido.

Además, se desarrollaron muchos métodos especializados para BVH, especialmente aquellos basados ​​en AABB (cuadros delimitadores alineados con el eje), como construcción paralela, recorrido acelerado SIMD , buena heurística de división (SAH: la heurística de área de superficie se usa a menudo en el trazado de rayos), árboles anchos (los árboles 4-arios y 16-arios brindan algunos beneficios de rendimiento, tanto en el rendimiento de construcción como de consulta para escenas prácticas) y actualización rápida de la estructura (en aplicaciones en tiempo real, los objetos pueden moverse o deformarse espacialmente de manera relativamente lenta o estar quietos, y el mismo BVH se puede actualizar para que siga siendo válido sin hacer una reconstrucción completa desde cero).

Aceleración BVH habilitada por hardware para trazado de rayos

El BVH puede acelerar significativamente las aplicaciones de trazado de rayos al reducir la cantidad de cálculos de intersección de rayos y superficies. La implementación de hardware de operaciones BVH, como el recorrido, puede acelerar aún más el trazado de rayos. Actualmente, el trazado de rayos en tiempo real está disponible en múltiples plataformas. La implementación de hardware de BVH es una de las innovaciones clave que lo hacen posible.

Núcleos Nvidia RT

En 2018, Nvidia presentó los núcleos RT con su arquitectura de GPU Turing como parte de la plataforma RTX. Los núcleos RT son unidades de hardware especializadas diseñadas para acelerar las pruebas de intersección de rayos y triángulos y de recorrido de BVH. [5] La combinación de estas características clave permite el trazado de rayos en tiempo real que se puede utilizar para videojuegos. [6] así como para aplicaciones de diseño.

ADN de cadena ramificada de AMD 2/3

La arquitectura RDNA (Radeon DNA) de AMD , presentada en 2019, ha incorporado trazado de rayos acelerado por hardware desde su segunda iteración, RDNA 2. La arquitectura utiliza unidades de hardware dedicadas llamadas Ray Accelerators para realizar pruebas de intersección de rayos-cuadros y rayos-triángulos, que son cruciales para atravesar jerarquías de volumen delimitador (BVH). [7] En RDNA 2 y 3, el sombreador es responsable de atravesar el BVH, mientras que los Ray Accelerators manejan las pruebas de intersección de los nodos de caja y triángulo. [8]

Gestión de gráficos de escena

Los BVH también admiten naturalmente la inserción y eliminación de objetos sin una reconstrucción completa, pero el BVH resultante suele tener un peor rendimiento de consulta en comparación con la reconstrucción completa. Para resolver estos problemas (así como el hecho de que la actualización rápida de la estructura no es óptima), el nuevo BVH podría construirse de forma asincrónica en paralelo o sincrónica, después de detectar un cambio suficiente (la superposición de hojas es grande, la cantidad de inserciones y eliminaciones superó el umbral y otras heurísticas más refinadas).

Los BVH también se pueden combinar con métodos de gráficos de escena e instancias de geometría para reducir el uso de memoria, mejorar la actualización de la estructura y el rendimiento de reconstrucción completa, así como para guiar mejor la división de objetos o primitivas.

Detección de colisiones

Los BVH se utilizan a menudo para acelerar el cálculo de detección de colisiones . En el contexto de la simulación de telas, los BVH se utilizan para calcular la colisión entre una tela y ella misma, así como con otros objetos. [9]

Cálculo de distancia entre conjuntos de objetos

Otro caso de uso poderoso para BVH es el cálculo de distancias por pares. Un enfoque ingenuo para encontrar la distancia mínima entre dos conjuntos de objetos calcularía la distancia entre todas las combinaciones por pares. Un BVH nos permite podar de manera eficiente muchas de las comparaciones sin necesidad de calcular una distancia potencialmente elaborada entre todos los objetos. Aquí se analiza un pseudocódigo para calcular la distancia por pares entre dos conjuntos de objetos y enfoques para construir BVH, muy adecuados para el cálculo de distancias [10].

Véase también

Referencias

  1. ^ Ericson, Christer (2005). "§6.1 Cuestiones de diseño de jerarquías". Detección de colisiones en tiempo real . Serie de Morgan Kaufmann sobre tecnología 3D interactiva. Morgan Kaufmann. págs. 236–7. ISBN 1-55860-732-3.
  2. ^ Ericson 2005, pág. 238
  3. ^ Gu, Yan; He, Yong; Fatahalian, Kayvon; Blelloch, Guy (2013). "Construcción eficiente de BVH mediante agrupamiento aglomerativo aproximado" (PDF) . HPG '13: Actas de la 5.ª Conferencia de gráficos de alto rendimiento . ACM. págs. 81–88. CiteSeerX 10.1.1.991.3441 . doi :10.1145/2492045.2492054. ISBN .  9781450321358.S2CID2585433  .​
  4. ^ Günther, J.; Popov, S.; Seidel, H.-P.; Slusallek, P. (2007). "Trazado de rayos en tiempo real en GPU con recorrido de paquetes basado en BVH". Simposio IEEE de 2007 sobre trazado de rayos interactivo . IEEE. págs. 113–8. CiteSeerX 10.1.1.137.6692 . doi :10.1109/RT.2007.4342598. ISBN.  978-1-4244-1629-5. Número de identificación del sujeto  2840180.
  5. ^ "Arquitectura de GPU Turing de NVIDIA" (PDF) . NVIDIA . Consultado el 20 de octubre de 2024 .
  6. ^ "Análisis profundo de la arquitectura de GPU NVIDIA Turing: preludio a GeForce RTX". AnandTech . Consultado el 20 de octubre de 2024 .
  7. ^ "Trazado de rayos de hardware RDNA 2". Interjuego de luz . Consultado el 20 de octubre de 2024 .
  8. ^ "Raytracing en RDNA 2/3 de AMD y Turing y Pascal de Nvidia". Chips and Cheese . 2023-03-22 . Consultado el 2024-10-20 .
  9. ^ Bridson, Robert; Fedkiw, Ronald; Anderson, John (25 de junio de 1997). "Tratamiento robusto de colisiones, contacto y fricción para animación de telas". ACM Trans. Graph . 21 (3). Berlín: Association for Computing Machinery: 594–603.
  10. ^ Ytterlid, Robin; Shellshear, Evan (27 de enero de 2015). "Estrategias de división BVH para consultas de distancia rápida". Journal of Computer Graphics Techniques . 4 (1): 1–25. ISSN  2331-7418 . Consultado el 13 de octubre de 2024 .

Enlaces externos