3D Gaussian Splatting
Los métodos Radiance Field han revolucionado recientemente la síntesis de visualización de escenas capturadas con múltiples fotos o vídeos. Sin embargo, lograr una visualización de alta calidad aún requiere de redes neuronales cuyo entrenamiento y renderizado son costosos y lentos.
Aquí es donde aparece 3D Gaussian Splatting, un método que promete renderizar una escena en 3D en tiempo real. ¡Te contamos todos los detalles!
¿Qué es 3D Gaussian Splatting?
Gaussian Splatting es una técnica de renderizado creada en los 90’s en el ámbito científico, pero su reciente aplicación a la visualización de escenas en tiempo real presentada el pasado mes de agosto en el SIGGRAPH de 2023, la ha vuelto a poner de moda.
La dispersión gaussiana o Gaussian Splatting es una técnica de rasterización para la reconstrucción y renderizado 3D en tiempo real a partir de algunas imágenes tomadas desde múltiples puntos de vista.
El espacio 3D se define como un conjunto de gaussianos y los parámetros de cada gaussiano se calculan mediante aprendizaje automático. Esto significa:
- Tener datos que describan la escena.
- Dibuja los datos en la pantalla.
Por tanto, es análogo a la rasterización de triángulos en los gráficos por computador, que se utiliza para dibujar muchos triángulos en la pantalla. Sin embargo, el lugar de dibujar triángulos, son gaussianos. Por ello, se describe mediante los siguientes parámetros:
- Posición: dónde está ubicado (XYZ)
- Covarianza: cómo se estira/escala (matriz 3×3)
- Color: RGB
- Alfa: su transparencia (α)
Aquí tienes un ejemplo:
¿Cómo funciona 3D Gaussian Splatting?
3D Gaussian Splatting representa una escena 3D como millones de partículas (gaussianos); y cada gaussiano 3D viene con una posición/orientación/escala, así como una opacidad y un color.
Para renderizar estas partículas, se convierten en espacio 2D y luego se organizan para una renderización eficaz. Los pasos a seguir son:
- Estructura a partir del movimiento: comenzamos utilizando el método “Structure from Motion (SfM) para crear una nube de puntos a partir de un conjunto de imágenes. Esto puede realizarse utilizando COLMAP.
- Convertir a gaussianos: cada punto se convierte en gaussiano, lo que hace que ya sea posible para la rasterización. Sin embargo, a partir de los datos de SfM solo se pueden inferir la posición y el color.
- Entrenamiento: para que una representación produzca resultados de alta calidad, debemos entrenarla. Para ello, se utiliza Stochastic Gradient Descent, similar a una red neuronal.
- Se rasterizan los gaussianos en una imagen usando rasterización gaussiana diferenciable.
- Calcula la pérdida en función de la diferencia entre la imagen rasterizada y la imagen real del terreno.
- Ajustar los parámetros gaussianos según la pérdida.
- Aplicar densificación automatizada.
- Rasterización gaussiana diferenciable: aquí se deben proyectar cada gaussiano en 2D desde la perspectiva de la cámara, ordenarlos por profundidad y, para cada pixel, repetir cada gaussiano de adelante hacia atrás, combinándolos.
Fotometría vs. NERF
La fotometría es una técnica para generar polígonos 3D a partir de imágenes de múltiples puntos de vista. Aunque es muy útil para escanear objetos, no puede representar escenas sin contornos como el cielo, o detalles finos en escenas distantes. Además, no es posible generar polígonos 3D con precisión en algunos casos como reflejos o elementos transparentes.
Para dar solución a estas limitaciones, ha surgido NeRF o Neural Radiance Field. También es un método para renderizar una escena 3D a partir de imágenes tomadas desde distintos puntos de vista, pero que utiliza la IA para renderizar con precisión escenas abiertas y superficies con reflejos o translucidas. La única desventaja se requiere un hardware muy potente para poder renderizar en tiempo real una escena.
3D Gaussian Splatting es otro enfoque para resolver el mismo problema pero que no necesita tanta capacidad de compute para renderizar una escena en tiempo real. Esto ocurre porque, aunque requiera de aprendizaje automático para entrenar los parámetros gaussianos, la renderización no requiere de ningún procesamiento pesado y se puede hacer en tiempo real.
Cómo lo estamos haciendo en Plain Concepts
En Plain Concepts estamos trabajando en la integración de la tecnología 3D Gaussian splatting en nuestro motor 3D Evergine. Aunque es una tecnología novel en la que se está realizando continuos avances, desde Plain Concepts creemos que está lista para ser usada en proyectos reales y estamos convencidos que empezaremos a verla implementada en nuestros próximos proyectos.
El futuro de los gráficos
Aún hay algunas incógnitas alrededor del Gaussian Splatting, especialmente sobre la posibilidad de poder animarlos o la de poder evitar la aparición de algunos artefactos visuales o la gestión de colisiones que ahora mismo se resuelven teniendo un modelo geométrico asociado.
Pero como comentábamos antes es muy posible que veamos el 3D Gaussian Splatting completamente implementado en un entorno de producción.
También la IA incorporada va a ser un factor clave en la investigación del espacio 3D. Pero lo que está claro es que esta nueva técnica va a crear escenas fotorrealistas de alta calidad, rasterización rápida y en tiempo real, así como ser relativamente rápido de entrenar.
Si quieres saber más sobre las últimas tendencias en innovación, ¡no te pierdas nuestro artículo sobre Tendencias Tecnológicas 2024!