Tecnología de renderizado de gráficos 3D

Cómo utilizar un plano 2D para mostrar gráficos 3D

gráficos 2D

Con dos puntos en un plano, conociendo sus coordenadas XY, puedes conectarlos y dibujar una línea.

Una línea se puede controlar controlando las coordenadas XY de los puntos A y B.

En imágenes 3D, las coordenadas de los puntos tienen un sistema de coordenadas adicional del eje Z.

Pero es imposible tener ejes de coordenadas tridimensionales XYZ en coordenadas de pantalla 2D.

Por lo tanto, se requiere un algoritmo gráfico para "aplanar" las coordenadas 3D y mostrarlas en la pantalla 2D, lo que se denomina proyección 3D.

Después de convertir puntos 3D en puntos 2D, utilice el método anterior de vincular puntos 2D para conectar estos puntos, lo que se denomina renderizado de estructura alámbrica .

Inspiración para la proyección: dos métodos de proyección

artículo recomendado:

zhuanlan.zhihu.com/p/473031788

En términos generales, se trata de mover un gráfico 3D al sistema de coordenadas 2D, y el centro corresponde al origen del sistema de coordenadas, y luego se pueden obtener las coordenadas 2D del 3D.

Si usa luz para encontrar un objeto 3D y usa una superficie plana para mostrar la proyección, cuando se gira el objeto 3D, la proyección se verá como un objeto 3D, aunque la superficie de proyección sea una superficie plana.

Las computadoras también hacen esto para convertir 3D en 2D. En primer lugar, la pantalla es un plano de proyección 2D y, según el algoritmo de proyección, el 3D se puede convertir en coordenadas 2D.

Proyección ortográfica

Los lados del cubo son paralelos entre sí en la proyección, se puede decir que las matemáticas se utilizan para convertir 3D en un sistema de coordenadas 2D.

La proyección ortográfica es un tipo de proyección paralela, similar a utilizar un haz de luz paralelo para proyectar la imagen de un objeto verticalmente sobre el suelo.

proyección en perspectiva

La proyección en perspectiva puede producir efectos casi grandes y muy pequeños, similares a la forma en que los humanos observan el mundo.

En el mundo real 3D, los segmentos de línea paralelos convergerán a un punto en la distancia.

Por qué se utilizan los triángulos para dibujar formas complejas

En gráficos 3D, llamamos a los triángulos "polígonos".

Una colección de polígonos se llama "cuadrícula".

Cuanto más densa sea la malla, más suave será la superficie y más detalles.

Primero, hablemos de por qué se usan triángulos en lugar de cuadrados.

En un espacio, tres puntos definen un plano.

Si se dan 3 puntos 3D, se puede dibujar un plano. Pero no es necesariamente el caso con cuatro puntos.

Si son dos puntos, no basta con definir un plano, sino solo un segmento de recta; si son cuatro puntos, es posible definir más de un solo plano, por lo que 3 es un número perfecto.

Algoritmo de gráficos rellenos

Representación de línea de barrido

Las representaciones de estructura alámbrica son geniales, pero las imágenes en 3D necesitan relleno

paso:
  1. Primero coloque una capa de red de píxeles.

  1. El algoritmo de línea de escaneo primero leerá los tres puntos del polígono, encontrará los valores Y máximo y mínimo y luego solo funcionará entre estos dos puntos.

  1. Luego, el algoritmo funciona de arriba a abajo, una fila a la vez, calculando los dos puntos en los que cada fila intersecta el polígono. El algoritmo de línea de escaneo completará los píxeles entre dos puntos de intersección. Debido a que es un triángulo, si cruza un lado, debe cruzar el otro lado.

Antialiasing

Este tipo de triángulo es feo porque los bordes están llenos de bordes dentados.

Un método para reducir el alias se llama suavizado.

Antialiasing: en lugar de pintar cada píxel de la misma manera, puedes ajustar el color juzgando cuánto corta el polígono el píxel.

Si el píxel llena el color directamente dentro del polígono; si el polígono atraviesa el píxel, el color será más claro.

Algoritmo de representación de oclusión

Hay muchos polígonos en una escena 3D, pero sólo algunos de ellos son visibles porque otros están oscurecidos.

Algoritmo de clasificación (algoritmo del pintor)

La forma más sencilla de afrontarlo.

Organizar de lejos a cerca y renderizar de lejos a cerca. Esto se llama algoritmo del pintor, porque el pintor también dibuja el fondo primero y luego las cosas más cercanas
.

paso
  1. El primer paso es ordenar de lejos a cerca (la distancia entre los tres triángulos A amarillo, B azul y C verde)

  1. Después de realizar el pedido, utilice el algoritmo de línea de escaneo para llenar varios polígonos, uno a la vez. (El orden es de lejos a cerca)

buffer de profundidad

Este algoritmo tiene la misma idea que el algoritmo del pintor, pero el método es diferente.

Y no es necesario ordenar el algoritmo del búfer de profundidad, por lo que será más rápido

El algoritmo de almacenamiento en búfer Z registra la distancia entre cada píxel de la escena y la cámara y almacena una matriz digital en la memoria.

paso
  1. Primero, la distancia de cada píxel se inicializa a "infinito" y luego el almacenamiento en búfer Z comienza a procesar desde el primer polígono de la lista, que es A.

Tiene la misma lógica que el algoritmo de línea de escaneo, pero en lugar de llenar los píxeles con color, compara la distancia del polígono con la distancia en el pulido Z. Siempre registra el valor más bajo.

  1. Una vez que el búfer Z esté completo, se utilizará con una versión mejorada y avanzada del algoritmo de "línea de escaneo", que no solo puede detectar intersecciones de líneas sino también saber si un determinado píxel es visible en la escena final . Si no es visible, el algoritmo de línea de exploración omitirá esa parte

Pero habrá una pregunta, si la distancia es la misma, ¿cuál se dibuja arriba?

Los polígonos se mueven en la memoria y el orden de acceso cambia constantemente, por lo que a menudo es impredecible en cuál se gasta.

Una optimización para juegos 3D: selección de backface

Un triángulo tiene dos lados, adelante y atrás.

Sólo se puede ver el lado exterior de la cabeza del personaje del juego o el suelo, por lo que para ahorrar tiempo de procesamiento, se ignora el lado posterior del polígono, lo que reduce el número de caras generales del polígono.

Pero también hay un error: si miras el modelo desde fuera, la cabeza y el suelo desaparecerán.

sombreado de escena 3D

En una escena 3D, la superficie de un objeto debería tener cambios de luz y oscuridad.

Esta vez utilicé una tetera para el experimento, que es diferente al ejemplo anterior. Esta vez lo que hay que considerar es la dirección en la que miran los polígonos: no son paralelos a la pantalla, sino en direcciones diferentes. La dirección hacia la que mira se llama "normal a la superficie".

Utilice una pequeña flecha perpendicular a la superficie para mostrar esta dirección.

Agregue una fuente de luz. Debido a que diferentes polígonos miran a la fuente de luz en diferentes ángulos, cuanto más se superponga la dirección de la flecha con la dirección iluminada por la fuente de luz, más brillante será el polígono.

Texturas

La textura en los gráficos se refiere a la apariencia, no a la sensación.

Las texturas también tienen múltiples algoritmos.

Mapeado de texturas

El uso más simple

Cuando usamos el algoritmo de línea de escaneo para rellenar el color antes, podíamos mirar la imagen de textura en la memoria y decidir qué color usar al llenar el área de píxeles.

Para hacer esto, necesita corresponder las coordenadas del polígono y las coordenadas de textura.

  1. Correspondencia entre coordenadas de polígono y coordenadas de textura.
  2. Al decidir qué color elegir para rellenar el píxel actual, el algoritmo de textura consulta la textura, toma el color promedio del área correspondiente y lo rellena en el polígono.

GPU: procesador de gráficos

Podemos fabricar hardware especializado para esta operación específica para acelerar

En segundo lugar, podemos dividir la escena 3D en varias partes pequeñas y renderizarlas en paralelo en lugar de secuencialmente.

La CPU no fue diseñada para esto, por lo que las operaciones gráficas no son rápidas, por lo que los ingenieros informáticos crearon un procesador especial para gráficos, llamado GPU "Unidad de procesamiento de gráficos".

La GPU está en la tarjeta gráfica, rodeada de RAM dedicada donde están todas las mallas y texturas, permitiendo que los múltiples núcleos de la GPU accedan a ella a alta velocidad.

Link de referencia

www.bilibili.com/video/av213…

Enlace original: Tecnología de representación de gráficos 3D-Nuggets (juejin.cn)

Supongo que te gusta

Origin blog.csdn.net/m0_65909361/article/details/132989033
Recomendado
Clasificación