De lo real a lo virtual desde un celular: Fotogrametría básica

by | May 7, 2018

NOTA: Para disfrutar mejor de este artículo, es recomendable conocer sobre fundamentos de fotografía y modelado 3D.

Se utilizarán Maya y PhotoScan como herramientas en esta práctica, además de la cámara de 13 megapixeles de un smartphone.

Para los que no conocen el término, la fotogrametría es una técnica de medición por medio de fotografías para crear una reconstrucción virtual. Originalmente esta técnica se utilizaba para hacer mapas con naves no tripuladas que sacaban fotografías de áreas extensas para finalmente, unir todas las fotos en un mapa. Con el tiempo, esta técnica fue adaptada para crear otro tipo de productos, como reconstrucciones tridimensionales de sitios de excavación para fines arqueológicos o para obtener reconstrucciones más fieles a actores en alguna película con VFX, con ayuda de cuartos con un rig lleno de cámaras fotográficas para capturar de manera coordinada y al mismo tiempo, el mismo objeto con la misma iluminación, entre muchas otras aplicaciones.

Los mundos construidos siempre causan una especial fascinación, especialmente por sus historias contadas de manera implícita. Los objetos virtuales no son la excepción. Una de las razones de peso para recurrir a una técnica como la de fotogrametría para reconstruir objetos es el grado de detalle y realismo que es difícil de reproducir de la nada. Es importante que haya particularidades en un objeto virtual como huellas de uso por suciedad o desgaste y estos efectos serán diferentes dependiendo del material. Las estatuas de bronce expuestas a cielo abierto son víctimas de la herrumbre, dándoles un aspecto azulado en las zonas donde escurre agua de lluvia sobre ellas, mientras que en interiores, si durante el paso de los años han sido tocadas de manera periódica por personas que regularmente tienen grasa en las manos, entonces la superficie se verá más clara y brillante.

Ejemplos de diferentes tipos de daño a estatuas de bronce.
Ya establecimos entonces, que para reconstruir un objeto en fotogrametría hay que ser muy observador; sin embargo, hace falta otra característica en el participante: conocer fundamentos de fotografía y modelado 3D.

Así como en diversas áreas de estudio, existe fotografía de paisaje, retrato, científica, astronómica, artística, entre otras. Bajo esta misma lógica, existe la fotografía para fotogrametría. Iremos por partes, al enlistar lo que se requiere para una sesión de esta técnica de reconstrucción virtual.

En fotografía, es necesario conocer a fondo la cámara que se va a utilizar, además del equipo de iluminación, o en su defecto, las condiciones ambientales que existirán. Cada una de sus partes nos ayudará a obtener mayor control sobre todos los aspectos de la toma, independientemente de las condiciones de iluminación. Para efectos prácticos, tomaremos el caso de un ejemplo concreto: Iremos a tomar fotografías de un tronco en un parque.

 

¿Qué es lo que necesitaremos para esta sesión?

Luz: Trabajaremos con un objeto en la naturaleza y estamos con poco presupuesto. Lo que nos ayudará para esta práctica es un cielo nublado de tarde. En fotogrametría debe eliminarse toda sombra lo más posible para obtener un objeto con colores planos. Una iluminación muy contrastada no nos serviría. Las nubes en el día son un difusor natural de luz y así podemos obtener mejores resultados.
Los días nublados son idóneos para una sesión de fotogrametría.
Cámara: Idealmente, los mejores resultados para fotogrametría se obtendrían con una cámara réflex digital o DLSR, sin embargo, es posible realizarlo con otro tipo de cámara, y en este caso, haremos esta práctica con una cámara de celular ZTE Blade V8 que cuenta con 13 megapixeles de resolución máxima. 13 megapixeles es un buen punto de partida para la resolución de las fotografías, pero reiteramos que los mejores resultados se obtienen con una cámara realmente diseñada para obtener una imagen de alta calidad. Este modelo de celular permite utilizar el “modo experto” para realizar la toma en modo manual, modificando parámetros como enfoque, velocidad de obturador (el tiempo que queda abierto el obturador para dejar pasar luz al sensor), ISO (sensibilidad del sensor), Exposición, Balance de blancos (Obtención de un blanco u otros tonos lo más cercanos a como los percibe el ojo humano, independientemente de la iluminación en la toma).
Objeto: Como ya se ha mencionado, nuestro protagonista será un tronco de un árbol cortado de bosque. Podría parecer una decisión arbitraria, pero hay una razón para esta elección: no todas las cosas son buenas candidatas para reproducir con fotogrametría. Las superficies no opacas como metal pulido que reflejan y/o cosas que sean transparentes no nos serán de utilidad, pues casi con seguridad tendremos resultados deficientes al procesar las imágenes. Sobre la forma del objeto, idealmente usaríamos un objeto con superficie uniforme sin muchos detalles finos que sobresalgan demasiado (como es el caso de pasto o aglomeraciones muy densas de plantas y hojas); tampoco son sujetos ideales los animales o humanos, pues estos tienden a moverse aunque sea unos milímetros por quietos que se queden, así que para esos casos es necesario usar un rig con muchas cámaras como mencionamos antes. Pensemos que las fotografías que tomemos las tendremos que “mascarear”, y si son muchas, será mucho más trabajo el que realizaremos. Los objetos ideales son rocas desnudas o con musgo, zonas de suelo lodoso que no tengan demasiada humedad para que no muestren especularidad, estatuas, excavaciones, edificios.

Equipo de cómputo: La máquina usada para esta práctica es ya un poco antigua, pero nos es útil para lo indispensable. Es una HP All-in-One, sin embargo, al procesar las imágenes es de mucha ayuda tener una buena tarjeta de video y suficiente memoria. Una PC dedicada a gaming puede ser ideal en este caso.

Software: Existen varias aplicaciones móviles y de escritorio que nos pueden ayudar con esta técnica, sin embargo, en este caso usaremos Agisoft Photoscan. Es de un precio accesible para licencia de estudiante y los resultados pueden ser de alta calidad. Si no contamos con mayores recursos, podemos descargar la versión demo desde la página oficial del sitio. Algunas funciones estarán bloqueadas hasta adquirir la licencia, y sólo podremos llegar hasta el paso de exportación de geometría en Sketchfab.

¿Qué pasos seguiremos?

1. Sesión fotográfica:

Mientras más fotografías tomemos, más datos tendremos para hacer una mejor representación del elemento.

Tip: Es una buena práctica el tener una tarjeta de balance de blancos y tomar una fotografía al inicio de la sesión con una tarjeta de gris frente al objeto, para que al momento de corregir las tonalidades de color desde Photoshop, nos facilitemos las cosas.

Comparación entre dos fotos; una con y otra sin corrección en balance de blancos usando tarjetas de ayuda para el balance. Podemos ver que el resultado es mucho más atractivo al aplicar la correción. 
Lo ideal es comenzar desde un lado del objeto y procurar tomar fotos desde tres ángulos;desde un punto muy bajo, uno intermedio, y uno cenital. Una vez teniendo esos ángulos básicos desde ese lado, continuar dando un paso hacia la izquierda o derecha y tomar los tres ángulos desde ese nuevo punto de vista. Es importante que entre una foto y la siguiente exista al menos 80% de detalles en común; de otra manera, el software no podrá recrear de manera exitosa el modelo, pues necesita puntos básicos de rastreo inmóviles entre toda la secuencia de fotografías.
En esta ocasión, hemos elegido un tronco en un parque. Hay suficiente espacio entre el tronco y nosotros para capturar el objeto completo y bien encuadrado.

Lo rodearemos en un círculo completo, tomando 10 puntos clave (desde cada punto, tomaremos los tres ángulos que mencionamos anteriormente).

En estas imágenes podemos ver en qué ángulos aproximados se recomienda tomar la foto para tener suficientes datos en la reconstrucción. Si el objeto tiene varias cavidades en distintos ángulos (especialmente las zonas inferiores y más cercanas al suelo), estas tomas son esenciales. Cuando PhotoScan no tiene datos de algún área, en la geometría reconstruida habrá huecos y lo importante es evitar ese error.

Procuraremos cubrir en una media esfera las fotografías que necesitamos para el tronco. En total, si hacemos 3 fotos por lado, y tenemos 10 lados, tendremos 30 fotografías. Es un buen número considerando la complejidad limitada y tamaño reducido de este objeto.

2. Procesamiento en PhotoScan de todas las fotografías

Es importante no olvidar que Agisoft cuenta con documentación oficial en la cual nos podemos apoyar para realizar la reconstrucción. Dejaremos el enlace a su manual en PDF para poder revisar a detalle las preferencias que deben tomarse en cuenta previamente: http://www.agisoft.com/pdf/PS_1.1%20-Tutorial%20(BL)%20-%203D-model.pdf

Añadir fotos al programa será bastante simple: Desde el menú Workflow, elegimos la opción Add Photos y cargará la ventana para elegir la secuencia deseada.

3. Mascarear zonas más importantes de la captura

Al seleccionar una foto de la secuencia, veremos que existe la opción de hacer una máscara sobre lo que debe ignorarse para la reconstrucción del modelo. En este ejemplo, estamos seleccionando con un color más oscuro lo que no figura como parte importante en el modelo a reconstruir. No es prioritario en este caso mascarear todas las fotos, pero es de ayuda.

Tenemos aquí nuestra galería de fotos o cámaras en PhotoScan. Si alguna de las fotos no nos es útil porque haya salido mal o haya salido repetida, la eliminamos.
Estas son las herramientas con las que contaremos al momento de hacer nuestras máscaras.

4). Alinear fotos

En esta fase, nuevamente en el menú Workflow, seleccionamos la opción Align Photos veremos una nube de puntos muy dispersa, en donde se habrán marcado los puntos importantes de la captura, para poder definir el área central del modelo. Al seleccionar alguna de las fotos, veremos uno de los cuadros azules iluminado de rojo, representando la posición de esa fotografía.

5. Crear nube densa de puntos

En el menú Workflow, seleccionamos Build Dense Cloud. Dependiendo de la capacidad de nuestro equipo, especialmente en memoria y el modelo de tarjeta de video, podemos seleccionar el grado de calidad.

El proceso tardará unos minutos, pero finalmente veremos el resultado en pantalla, y podremos revisar si hubo algún error con las fotos. De ser así, tendríamos que reiniciar la captura en es sitio.

Aquí podemos ver el resultado de la nube densa de puntos. Podemos rotar alrededor del objeto para revisarlo a detalle.

6. Crear geometría

Es el penúltimo paso antes de exportar el modelo. En Workflow, seleccionaremos Build Mesh e igualmente, como en el caso anterior, veremos que podemos indicar cuál es el grado de complejidad que deseamos lograr para nuestra malla. Para este caso, calidad media es suficiente. Este proceso también tomará unos minutos.

7. Crear textura

En este caso, aunque no tenemos mapa de UVs, este mapa se asignará de manera automática y podemos elegir la resolución, además de si la textura se repartirá en uno o más mapas.

8. Exportar modelo

Desde File, elegimos Export model y se exportará nuestro archivo como .OBJ; en el parámetro de la textura, podremos elegir desde varios tipos de formato de imagen. Como .TIFF, .PNG, .JPG. Si estamos en la versión de prueba del software, la única opción para exportarlo será la de exportar a la plataforma de Sketchfab.

9. Procesar en Maya – Orientación:

Es probable que debamos corregir su punto de origen en los ejes de X, Y y Z, además de su orientación y debamos rotar la geometría para que corresponda con el punto 0 del espacio y para esto es necesario utilizar Maya (3ds Max o Cinema 4D también podrían ser una buena opción). Una vez corregidos estos aspectos, borramos la historia y congelamos transformaciones.

10. Retopología-Versión low o medium poly

Considerando que el lector de este artículo sea un usuario con nivel intermedio en modelado, no explicaremos paso a paso cómo importar la geometría de PhotoScan para hacer una retopología sobre ésta. Lo importante es cubrir el área del tronco lo más cercana a la geometría original con quads, para poder pre calcular los mapas de diffuse y normal sobre ésta.

Nuestra versión low poly será bastante básica, como para renderizado en tiempo real.

Después del modelado, procedemos a hacer nuestro UV map, procurando tener el menor número de islas posible.

11. Pre-calcular mapas de textura (Color y Normal)

En la sección de Rendering, en el menú Lighting and Shading, seleccionamos Transfer Maps, donde estableceremos los parámetros básicos: La geometría de origen, la geometría destino, los mapas a calcular (en este caso, diffuse y normal maps únicamente), el formato de estos mapas y su ubicación en directorio, además de su resolución.

Podemos ver la geometría de alta resolución obtenida de PhotoScan y la de baja resolución que preparamos.

Una vez obtenidos nuestros mapas, podemos crear un material nuevo para nuestra geometría low poly y asignarle el mapa de diffuse y normal.

Comparación entre la geometría obtenida con PhotoScan y la geometría limpia hecha en Maya con y sin wireframe. Podemos apreciar que la geometría de baja resolución es mucho más óptima y puede ser utilizada en alguna aplicación para tiempo real.

Después de este ejercicio, podemos editar nuestro diffuse para ajustar los colores y acabados de la textura en programas como Substance Painter, Zbrush o Mudbox.

En conclusión, hemos comprobado que es posible obtener resultados favorables para una reconstrucción con fotogrametría si utilizamos un celular de gama media con una cámara con modo manual y suficientes megapíxeles, y aunque no sustituirá el trabajo de fotografía e iluminación profesional con una cámara DSRL, es una buena manera para iniciarnos en esta útil tecnología.

Si este artículo ha sido de su agrado e interés, esperen la segunda parte, en que utilizaremos varios modelos realizados con esta técnica para un nivel demo en Unity.

Agradecemos su atención en este breve documento. Para mayores datos a nivel general sobre prácticas útiles en fotogrametría, adjuntamos una presentación para consulta.

Brenda Esquivel Flores

Brenda Esquivel Flores

ha trabajado en Slang studio como junior artist en colaboraciones en videojuegos; Elevator games como 3D artist para el juego para iPad "Celleste"; Ollin VFX como 3D artist para películas como 5 de mayo: La batalla, 2 Guns, HER, El más buscado, entre otras; en el Departamento de Visualización y Realidad Virtual de la UNAM creando modelos y diseño de interfaces para simuladores. Actualmente labora en Pharmagraphix3D&Pharmaconsult.

Twitter - Vimeo - Sketchfab