El mundo de la representación 3D por ordenador parece estar entrando en una transición, una nueva época emocionante. El método que se utilizaba hasta ahora para representar figuras volumétricas, va a dejar paso a uno más eficiente, gracias a la ayuda de las redes neuronales.
El método clásico usado hasta la fecha
El método más común para representar objetos tridimensionales está basado en mallas poligonales. Básicamente, la idea es unir polígonos en 2D, comúnmente triángulos o cuadrados, en un espacio tridimensional, lo cual forma una cáscara o malla de triángulos o cuadrados. Una “sábana” poligonal.
Como explicarlo en palabras es difícil, mejor verlo en unos vídeos:
Este método se utiliza para realizar casi la totalidad del diseño gráfico 3D por ordenador. Desde las animaciones por ordenador de Pixar, o los dragones de Juego de Tronos, pasando por diseños ingenieriles de coches, aviones o plantas industriales. No sólo lo que llamamos CAD se basa en este método, el CAE, que consiste en análisis o simulación ingenieril, utiliza modelos FEM con la misma filosofía en muchos casos.
Hasta la fecha, este era el método más eficiente para representar objetos tridimensionales. Si se necesita más definición, no hay más que hacer los polígonos más pequeños. A los que os gustan los videojuegos, conoceréis perfectamente la evolución en gráficos de todo el sector. Un claro ejemplo que se suele poner es el de Tomb Raider. Más polígonos nos hacen ver una figura más representativa:
El nuevo método: Point-Cloud based
El nuevo método que se va a ir imponiendo, fagocitando al clásico poligonal, es la representación 3D basada en nubes de puntos.
En realidad, no es algo nuevo. Este método es igual de antiguo que el anterior. Lo que ocurre ahora, es que hemos encontrado solución a su principal defecto. Primero hay que explicar que las nubes de puntos sí se utilizan actualmente, pero como un paso previo a la generación de una malla poligonal. El proceso es unir los puntos para formar triángulos en el espacio:
En especial, este proceso de convertir la nube de puntos en malla poligonal, es el que se usa en el mundo del escaneo 3D, lo cual ha ayudado, sea dicho de paso, a darle una vuelta de tuerca.
Lo que se está planteando ahora es diferente. Es utilizar únicamente la nube de puntos, sin conversión posterior a malla poligonal. Si la densidad de puntos en pantalla es suficientemente grande, para el ojo humano, éste percibirá un nítido volumen espacial.
Dicha representación 3D basada en nubes de puntos funciona bien cuando el objeto a representar está a una “distancia” fija. Se colocan los puntos de tal manera que, con la densidad adecuada, su aspecto visual es bueno. Entran algoritmos de renderizado que pueden ser muy complejos, pero ese es otro punto.
El problema de este método es que si nos acercamos, si hacemos zoom sobre dicho objeto virtual 3D, los puntos comienzan a separarse y la representación ya no funciona. Es (o era) un método mucho peor que el poligonal para cualquier aplicación práctica.
Las redes neuronales lo cambian todo
Ahora se ha encontrado un nuevo enfoque que hace que la representación de nubes de puntos funcione de verdad. Gracias a la integración de redes neuronales en el motor gráfico, hacer zoom-in o zoom-out, no es un problema. Las redes neuronales pueden rellenar los huecos de puntos espaciales cuando nos acercamos, de modo que la resolución o el detalle del modelo 3D se va actualizando según las condiciones en pantalla. La integración de estas redes en el núcleo del programa, hacen que el uso computacional sea el más eficiente para una correcta visualización.
Dicho de otro modo. Se pueden representar objetos tridimensionales generados por ordenador, con menos recursos de CPU/GPU.
Las nubes de puntos tienen mucho más sentido para vídeos con figuras volumétricas, que las mallas 3D. En el momento en que hay movimiento, que se deben visualizar objetos en distintas perspectivas y a diferentes distancias, encontrar el equilibrio visual-computacional es más sencillo con nubes de puntos alimentadas con redes neuronales que con mallas poligonales clásicas.
Cuando todo esto se combine con otros desarrollos de diseño 3D como los analizados aquí, entraremos en una nueva y maravillosa era en el diseño.
La importancia de la representación 3D en los próximos años
Una de las habilidades técnicas más interesantes para muchos trabajos futuros es el diseño gráfico 3D por ordenador. Estamos pasando a un mundo que se va a virtualizar en un abrir y cerrar de ojos. El mundo real, va a ser cada vez más, representado en 3D. Existe escasez de diseñadores en el mundo, y aunque se están haciendo desarrollos con el objetivo de evitar una dependencia de ellos, como vemos en el siguiente vídeo, sin duda el diseño por ordenador es una habilidad muy útil en los tiempos actuales.
Nuestras gafas o móviles serán capaces de transformar su campo visual en una representación gráfica. Proyectos como Google Tango, que destripados en este artículo, van en esta línea.
Lo interesante es que el proyecto Tango usaba mallas poligonales, y ahora con el nuevo proyecto de Google ARcore, han abandonado ese desarrollo por las nubes de puntos. Apple, con su ARkit, ha decidido seguir la misma ruta.
Tanto en Google como en Apple se han dado cuenta que para gestionar las imágenes de video que capturen los dispositivos de realidad aumentada, las mallas poligonales no son eficientes. Esta decisión seguramente condicione a otras compañías, como Microsoft, que ya hace poco nos daba pistas de algo similar, al decidir integrar un procesador de IA directamente en las Hololens.
Sectores de los videojuegos, cine o ingeniería, también son conscientes de toda esta transición promovida por una cada vez más desarrollada Inteligencia Artificial.
Ahora está de moda hablar de las “redes neuronales”, útiles para hacer un renderizado o una tortilla francesa. Eso sí, no preguntes cómo funcionan y cómo se aplican, que nadie sabe responder.
No, este sistema que comentas, ¿voxels con “redes neuronales”?, no es más eficiente que el actual de “triángulos”. Necesitas un número exageradamente grande de vértices para representar una cara plana, mientras que con triángulos sólo necesitas 4 vértices y dos triángulos. ¿Necesitas más detalle? Pues usa más triángulos. ¿Más suavidad? Pues usa tessellation o subdivisión. De esta manera siempre vas a usar menos vértices que el hardware necesite transformar, y menos memoria para almacenarlos.
No quiere decir que el sistema de los tríangulos sea perfecto, pero desde luego es más rápido y gasta menos memoria que los voxels “neurolónales”.