Red de conocimiento informático - Material del sitio web - Tecnología de renderizado de volumen basada en CUDA---Ray-Casting

Tecnología de renderizado de volumen basada en CUDA---Ray-Casting

"Renderizado" se refiere a todo el proceso de generación de valores de color de píxeles a partir de una representación 3D de una escena.

En el modelado tradicional, los objetos 3D se representan mediante superficies, como datos de malla. La transmisión de luz se estima mediante modelos simples de Pon o algoritmos BRDF complejos, utilizando propiedades de la superficie como color, rugosidad, reflectancia, etc., basándose únicamente en puntos de la superficie. Estos métodos a menudo carecen de la capacidad de interactuar con la luz de la atmósfera o del interior del objeto.

A la representación de superficies corresponde la tecnología de representación de volúmenes, que surgió originalmente para la visualización científica. Tomografía computarizada, resonancia magnética, mecánica de fluidos, etc. Con el desarrollo de una tecnología eficiente de representación de volúmenes, los datos de volumen se han vuelto cada vez más importantes en las artes visuales y los juegos de computadora. Para objetos borrosos como nubes, niebla, fuego, etc. Implementa algunos efectos especiales de alta calidad. Normalmente se utiliza junto con el renderizado de superficies.

Basado en el modelo óptico de emisión-absorción, la propagación de la luz se calcula integrando los efectos de interacción de la luz a lo largo del rayo de observación. Para cada píxel:

Generalmente, los datos obtenidos del dispositivo son matrices tridimensionales discretas, pero es más apropiado identificar cada vóxel con una muestra puntual infinitesimal obtenida a partir de una señal tridimensional continua. Por lo general, se utiliza el filtrado vecino más cercano o el filtrado lineal en lugar del filtro de sincronización ideal. En cuda, puede utilizar objetos de textura 3D o datos de volumen de almacenamiento de referencia de textura 3D:

AABB, cuadro delimitador alineado con el eje, el cuadro delimitador alineado con el eje, como sugiere el nombre, es cada lado del cuadro delimitador (en el espacio 2D) o cada cara (en el espacio 3D) está alineada con el eje (en el espacio 2D) o con la cara (en el espacio 3D). AABB no tiene direccionalidad. Cuando el objeto gira, es necesario volver a calcular su cuadro delimitador correspondiente. La ventaja es que el cálculo es simple, pero el error causado también es relativamente obvio. Otros métodos de detección de colisiones incluyen: Sphere, OBB, K-DOP, etc. El proceso de solución del algoritmo SlabMethod para la intersección de la luz y AABB se explica con gran detalle en el artículo /p/128533024. Gracias a YivanLee por compartir. Ejemplo de implementación del algoritmo AABB de representación de volumen cuda:

La luz atraviesa el objeto desde la fuente de luz y entra en el punto de vista. El modelo de absorción y emisión significa que la luz emitida por una fuente de luz pasa a través de un objeto y es absorbida por el objeto. Después de atravesar el objeto, la luz entra en el campo de visión y forma el color final.

De atrás hacia adelante significa que la luz viaja desde la fuente de luz o la parte posterior del objeto hasta el punto de vista o el frente del objeto. Cuando la luz pasa a través del objeto, se absorbe continuamente. Lo contrario de atrás hacia adelante es de adelante hacia atrás. En comparación con el proceso de atrás hacia adelante, la ventaja de adelante hacia atrás es que cuando el valor alfa acumulado alcanza 1,0 o un valor lo suficientemente cercano, el proceso del rayo puede finalizar antes.

Cada píxel de la superficie de imagen es un valor de color formado por una luz que atraviesa el objeto. Para cada rayo, utilice el algoritmo AABB para calcular la intersección del rayo y el objeto. Cada rayo sólo calcula la luz que atraviesa el objeto, evitando así cálculos redundantes e inútiles. El marco básico para usar Cuda para describir el algoritmo RayMarch es el siguiente:

Consulte el ejemplo de representación de volumen de Cuda y use Qt como biblioteca de interfaz de visualización. El efecto de ejecución es:

Referencia. materiales

/p/128533024

/posts/2018/09/17/volume-raycasting.html