Todas las entradas de: carlos

Proyecto ARTcade

Una de las cosas más enriquecedoras del trabajo por proyectos es, además de que sean interdisciplinares, que sean interetapas. De ese modo, no solo se crean sinergias entre los contenidos de diferentes disciplinas educativas, sino que también se estrechan los lazos de colaboración entre alumnado de diversas etapas y edades.

Al hacer las cosas de este modo, el proyecto se estructura en varias fases y, en cada una de ellas, participa el alumnado de una etapa diferente. Cada fase termina con un producto terminado que se pasa al siguiente grupo de alumnos, que interviene para obtener un nuevo producto que, de nuevo, pasará a l siguiente grupo de alumnos. Cada grupo aporta al producto un desarrollo de acuerdo al perfil académico (o profesional, en el caso de Formación Profesional) que estén cursando. De este modo el proceso se puede alargar, pero el producto final tiene un grado de elaboración mucho más complejo e interesante.

En la entrada de hoy, voy a compartir un proyecto en el que he colaborado recientemente en el que han trabajado de manera interdisciplinar e interetapa alumnado de la ESO, Bachillerato y Formación Profesional. Se trata de la elaboración de una máquina recreativa estilo «Arcade» 100% artesana.

Pero, empecemos por el principio, ¿qué es esto de una máquina arcade?

Las (míticas) máquinas recreativas

El término «arcade» tiene su origen en la palabra inglesa, que se refiere a una galería o pasaje cubierto con arcos, a menudo lleno de tiendas y lugares de entretenimiento. Como un centro comercial. A lo largo del tiempo, estas galerías se convirtieron en lugares populares donde la gente podía encontrar todo tipo de actividades de ocio y entretenimiento, incluyendo las primeras máquinas recreativas.

En el contexto de los videojuegos, «arcade» comenzó a asociarse con estas máquinas de videojuegos a las que se podía jugar introduciendo monedas. Debido a esta asociación, el término «arcade» empezó a utilizarse para referirse a las máquinas de videojuegos en sí mismas, y eventualmente, a los lugares dedicados exclusivamente a estas máquinas.

Aunque esta última acepción no se adoptaría en España, siendo más habitual el uso del término «Salón recreativo» para referirse a esos negocios que proliferaron a principios de los 90 y en los que se podrían encontrar muchos de estos «arcades», al nada despreciable precio de 25 pesetas por partida (unos 20 céntimos al cambio). Estos locales fueron lugares de iniciación al mundo de los videojuegos antes de que las consolas domésticas y los ordenadores personales les robasen el protagonismo en lo que al consumo de videojuegos se refiere.

A nivel técnico, estas máquinas recreativas solían estar formadas por una pantalla de tubo, mando de palanca y botonera (para dos, cuatro, o incluso más jugadores) y una placa base que incluía un juego precargado en una memoria de solo lectura (ROM). Todo ello iba encastrado dentro de una cabina decorada con la temática del videojuego. Algunas de esas cabinas eran verdaderas obras de arte.

Pero no me quiero enrollar mucho más con esto. Si te interesa el mundillo de los arcades vintage originales, no puedes dejar de visitar el Museo Arcade Vintage de IBI.

El Museo Arcade de Ibi te permite viajar al pasado

Emulando un mundo

No, la cosa no va de reconstruir una máquina arcade vintage auténtica, como hacen en Ibi (eso sería genial también), sino que el enfoque es algo diferente.

En los últimos años se ha puesto muy de moda la construcción de recreaciones de estas máquinas que, utilizando componentes económicos (Raspberry Pi) o reciclados, y distribuciones preparadas para la emulación, pueden hacer las delicias de los nostálgicos a un precio asequible. De hecho, hay quien se dedica a esto profesionalmente.

En este caso, no se construye la placa del juego original, sino una placa genérica que ejecuta un sistema operativo con unos programas capaces de emular la circuitería de las máquinas arcade. Esos programas se llaman emuladores y los podemos encontrar para, prácticamente, cualquier máquina clásica.

Estos emuladores permiten reproducir (emular) los juegos de etas máquinas en ordenadores modernos de una manera bastante fidedigna.

Además, existen en la actualidad distribuciones GNU/Linux que ya llevan preinstalados todos los emuladores imaginables y que, además, incorporan una interfaz gráfica amigable para navegar con un joystick a través de todos los sistemas.

Es en este contexto donde arranca nuestro proyecto, pues lo que se pretende es construir una máquina recreativa completamente funcional de forma artesanal con el alumnado.

ART de ARTesano

El primer paso, por tanto, era construir el mueble en el que se iban a ubicar los elementos. En este caso, participa el Departamento de Tecnología que, con el alumnado de 4ªESO, trabaja en el corte y encolado de las diferentes piezas.

En este caso, cabe diferenciar entre os tipos más habituales de muebles:

  • Cabina Clásica (Upright Cabinet): Estas son las máquinas arcade más tradicionales y reconocibles. Suelen tener una altura de alrededor de 1.70 a 2 metros y una base de aproximadamente 60-80 cm de ancho y 60-80 cm de profundidad.
  • Mini Arcade: Son versiones más pequeñas y compactas de las cabinas clásicas. Su altura puede variar, pero típicamente son menos de un metro de alto.
  • Bartop Arcade: Diseñadas para colocarse sobre una mesa o una barra. También existe la versión de pared, menos profunda.

Para la primera versión, se optó por el bartop, al ser más ligero y compacto (el espacio que ocupan las cosas suele ser crítico en los centros educativos).

Por tanto, en esta fase lo que se necesitaba era lo siguiente:

  • Planos de un bartop (obtenidos de internet)
  • Planchas de madera (se hizo con madera conglomerada que se tenía)
  • Un monitor LED viejo (el único requisito era que se encendiese solo al recibir electricidad, para no tener que dar acceso al botón)
  • Unos altavoces (se tenían en el almacén de tecnología)
  • Y se adquirieron dos juegos de palanca y botones de arcade.

Con esto, el alumnado se puso manos a la obra y en un par de semanas, ya tenía terminada su parte: un mueble de bartop de madera conglomerada con pantalla, altavoces y mandos.

Construyendo el mueble alderredor de la pantalla

Pese a que existen diseños descargables de internet para máquinas de corte láser, la preparación y ensamblado de las piezas se hizo de manera artesanal, cortando, midiendo, clavando y encolando. De ese modo, se han puesto en valor las diferentes destrezas necesarias para construir un mueble con una finalidad específica, de acuerdo a unos requisitos marcados por las piezas que en él se han de encajar.

Ya tenemos el primer producto intermedio terminado. Pasemos a la siguiente fase.

Producto intermedio #1
Detalle de la botonera

ART de ARTístico

Además de los propios juegos, una de las cosas que más admiración genera en el mundillo retro son los diseños de las cabina. Y ese era el siguiente paso. En este caso, el proyecto pasa a manos del profesorado del Departamento de Artes del centro, y a la asignatura optativa de Dibujo Artístico de 1º de Bachillerato.

En este caso, pese a estar la opción del diseño vectorial y posterior impresión digital de vinilos, que es el método más habitual en la personalización de réplicas de recreativas, y que entraba en el currículum de la asignatura, se optó por el dibujo libre, pues se pensó que sería una experiencia mucho más enriquecedora si se trata de trasladar de forma manual a una superficie determinada un diseño previo.

Una vez involucrados en el proyecto, se le propone al alumnado que elabore diferentes diseños para decorar los dos lados del bartop. Se les pide un diseño que tenga que ver con la temática (videjuegos antiguos) i en el que aparezca el nombre del centro. El resultado es abrumador, por cantidad y calidad pero, lamentablemente, solo se pueden hacer dos, por lo que el alumnado vota sus candidatos y son los que pasan a la fase de producción.

Así que todo el grupo se pone manos a la obra para trasladar los diseños seleccionados a los laterales del mueble.

Un lienzo excepcional
Pixel art

El resultado, es una obra de arte en formato de sobremesa.

Y con este nuevo producto intermedio finalizado, pasamos a la siguiente fase.

Producto intermedio #2

ART como en libeRTAd

Bueno vale, es un poco rebuscado, pero creo que también es interesante subrayar el componente de software libre que sustenta el proyecto. Os cuento:

Cuando el proyecto llega al Departamento de Informática, es el alumnado de 2º de FP Básica de Informática el que aplica los conocimientos adquiridos a lo largo del título para darle vida a la máquina. Y siguiendo con el símil, como si de un monstruo de Frankenstein se tratase, seleccionan piezas de desguace de ordenadores antiguos y/o estropeados para construir un ordenador dentro de la cabina.

Para ello, reciclan:

  • Una placa base
  • Un procesador
  • Un módulo de memoria RAM
  • Un disco duro
  • Una fuente de alimentación

Uno de los requisitos del proyecto era que al darle el botón de encendido se pusiera todo en marcha, que no fuese necesario ir encendiendo cada parte por separado (pantalla, altavoces, ordenador), Así que, como la pantalla ya está preparada para que se encienda sola, lo que se hace es alimentar los altavoces a través de los USB de la placa base y se configura la placa base, desde el menú de la BIOS, para que se encienda automáticamente cuando la fuente de alimentación se conecte.

Detalle de las conexiones

Así que pantalla y fuente de alimentación (encendida) se enchufan a una regleta con botón en el interior de la caja. Al encender la regleta, se pone en marcha todo automáticamente.

El siguiente paso es instalar un sistema operativo y aquí es donde entra el software libre (al menos parcialmente, ya que muchos emuladores no lo son), pues se instala una distribución de GNU/Linux orientada a la emulación llamada Batocera. Esta distribución contiene lo básico para poner en marcha un sistema de emulación con todos los emuladores imaginables.

El alumnado conecta las palancas y botones a los USB y los configura para que sean utilizables desde los diferentes emuladores.

Producto intermedio #3

Con esto, ya tenemos una máquina recreativa, elaborada de forma artística y artesanal y completamente funcional gracias al software libre.

¿La probamos?

El problema con los juegos

El paso final es cargar juegos en Batocera y probarlos. El problema es que prácticamente todos los juegos de máquinas recreativas o consolas antiguas están sujetos a restricciones de propiedad intelectual y copyright, y claro, no se pueden utilizar alegremente sin el permiso de sus creadores o de las compañías que, en la actualidad, posean esos derechos.

Por suerte, en la web de MAME (Multi Arcade Machine Emulator), un conocido emulador de máquinas recreativas clásicas, nos permiten descargar algunos juegos para los que los autores sí han dado permiso para su uso de forma no comercial. ¡Menos mal!

Tras echar un vistazo al listado, comprobamos que aunque ninguno es especialmente conocido, sirven para la prueba. Se elige un llamado Roby Roto, sobre un minero que ha de rescatar a sus compañeros atrapados. Es una especie de PacMan mezclado con el Boulder Dash.

Así que, para hacer la puesta de largo, durante la jornada de puertas abiertas del centro, se prepara el juego en la máquina (Batocera tiene una opción para forzar el arranque automático de un juego determinado) y se elabora un cartel explicativo del juego, para acompañar a la máquina:

Puede que no podamos jugar a juegos clásiscos como Pac-man, Space Invadres o Pang!, pero existen una gran cantidad de juegos que todavía hoy los entusiastas siguen sacando para los diferentes sistemas clásicos, algunos de ellos ya están incluidos en la instalación de Batocera, otros más se pueden encontrar en este enlace o en este otro.

Pero, ¿y si el alumnado del centro también elaborase los juegos?

ART como en scRATch

De nuevo, el título de la sección pillado con pinzas, pero me sirve para ilustrar este último giro del proyecto que permite cerrar completamente el círculo. Porque al fin y al cabo, SCRATCH es un entorno de iniciación a la programación que está presente en el currículum de la optativa de Tecnologia y digitalización de 2º de la ESO. ¿Y que acaban haciendo el alumnado de 2º de la ESO con SCRATH? Pues, efectivamente, un juego.

Así que si consiguiésemos que esos juegos pudiesen ser ejecutados por nuestra recreativa, tendríamos un potente elemento motivador para fomentar la creatividad y el ingenio a la hora de diseñar un juego con SCRATCH por parte del alumnado. Al fin y al cabo, sus compañeros y compañeras lo van a poder jugar en una máquina recreativa.

Y aquí es donde, de nuevo en el dominio del Departamento de Informática, el proyecto llega a manos del alumnado de 1º del Grado Medio de Sistemas Microinformáticos y Redes, para hacer las configuraciones necesarias para que esto sea posible.

Lo cierto es que Batocera no tiene emulación de SCRATCH, pero con unos pocos conocimientos de GNU/Linux (como los que tiene el alumnado de SMR), se puede conseguir ejecutar los juegos elaborados por el alumnado en esta plataforma como si de un juego más se tratase, y de manera offline.

Para ello, lo primero que hay que hacer es entender un poco la estructura de directorios de Batocera. En el sistema operativo se dedica una carpeta para contener los juegos (roms) de cada máquina emulada. Por ejemplo, la rom de Robby Roto de MAME, se guardaria en la ruta /userdata/roms/mame. Al hacerlo, el sistema detectará la rom de Robby Roto y la listará en el menú de MAME para que la podamos lanzar.

Además de todas las carpetas para todos los sistemas, existe una carpeta llamada ports en la que se almacenan aquellos juegos que no sean emulados, sino que sean nativos del propio sistema GNU/Linux. Así, además de emular, Batocera permite ejecutar juegos de Linux.

El contenido de esta carpeta ports no es la rom de un juego, sino el script de arranque del mismo (un archivo con extensión .sh que contiene las instrucciones que pondríamos en un terminal Linux para ejecutar el juego). Por tanto, en el menú ports de Batocera, aparecerá una entrada por cada archivo .sh que pongamos en la carpeta /userdata/roms/ports y al seleccionarlo, se ejecutarán los contenidos de dicho fichero.

Hasta ahora seguimos sin tener un método nativo para ejecutar un juego SCRATCH. Los juegos SCRATCH, normalmente, se juegan en línea y se puede acceder a ellos desde el repositorio online de la plataforma. Además, existe una herramienta para poder editar y jugar a los juegos de forma offline, pero, lamentablemente no está disponible para Linux. Parece que estamos en un callejón sin salida.

Internet al rescate

De nuevo, Internet al rescate. Buscando un poco podemos localizar una página que permite descargar los juegos SCRATCH en formato HTML, como si fuera una página web completamente autocontenida, lo que nos permite ejecutarlos en cualquier navegador, incluso de manera offline. Se trata del TurboWarp packager:

https://packager.turbowarp.org/

Basta con poner la URL del juego o proyecto SCRATCH a descargar en el formulario y seguir los pasos.

En el paso siguiente, seleccionamos algunas opciones y personalizar el comportamiento que tendrá el juego al ejecutarlo desde el archivo descargado. Como se quiere ejecutar como si de un juego de recreativa se tratase, recomiendo marcar las siguientes opciones:

  • Empezar proyecto automáticamente en vez de mostrar una bandera verde grande
  • Sin puntero del ratón
  • Soporte para mandos/controles USB o Bluetooth

Ni que decir tiene que, puesto que el modo de juego será con palanca de mando y botones, será necesario que el alumnado diseñe juegos que usen esta interfaz, en lugar de ratón u otros controles que no no estarán disponibles en nuestra recreativa.

Seleccionamos como modo de exportación HTML y pulsamos empacar.

Con esto ya tenemos el juego en cuestión en un archivo autocontenido que podemos ejecutar en cualquier navegador, incluso de manera offline. Ahora solo nos falta que ese navegador esté disponible en Batocera y que se pueda lanzar como si se tratase de un juego más.

Instalando software de Linux en Batocera

Aunque en principio , no hay ningún navegador web instalado en Batocera (normal, no tiene mucho sentido en un entorno para emular videojuegos), hay forma de hacerlo. En concreto, se puede instalar fácilmente el Firefox. Para ello, usaremos el instalador de paquetes Flatpak que hay disponible en el navegador de archivos (se accede con F1 desde el menú principal). En la sección Applications, seleccionamos Flatpak config.

El instalador de flatpak nos permite instalar aplicaciones nativas de Linux

Flatpak es un sistema para la distribución de aplicaciones que permite la instalación y gestión de software de manera independiente a la distro de Linux usada. Los paquetes Flatpak incluyen todas las dependencias necesarias para su ejecución, lo que evita problemas y los hace independientes del resto de aplicaciones del sistema, aunque a costa de ocupar más espacio en disco.

Evidentemente en este punto de la instalación, necesitamos dos cosas:

  • Que la máquina tenga conectado un teclado y un ratón (a la hora de constuirla, es conveniente dejar un par de puertos USB accesible para estas gestiones)
  • Que la máquina esté conectada a Internet (sólo para instalar Firefox)

Desde la aplicacion Flatpak config, buscamos e instalamos Firefox.

Firefox instalado

Una vez instalado, Firefox aparecerá como un juego más en la sección Ports.

Con la ayuda de un USB copiamos el archivo descargado de Turbo Warp (archivo HTML) a la carpeta /userdata/roms/ports. para simplificar, hemos renombrado el archivo a scratch.html.

Todo preparado para lanzar nuestro juego desde el navegador integrado.

Se recomienda encarecidamente diseñar el chasis para que tenga un acceso sencillo para enchufar y desenchufar USB

Pero si hacemos la prueba de abrir el navegador y tratar de seleccionar la página html local, descubriremos que una tarea tan aparentemente sencilla, esconde una dificultad: al instalar Firefox desde Flatpak éste no tiene acceso, por motivos de seguridad, a los archivos locales.

Las aplicaciones Flatpak se ejecutan en un entorno aislado (sandbox), lo que mejora la seguridad, pero este aislamiento limita el acceso de la aplicación al sistema operativo y a otros archivos.

No pasa nada, esto tiene solución, pero hay que explorar algunas opciones un poco más avanzadas.

Para empezar, vamos a permitir al paquete Flatpak del Firefox acceder al sistema de archivos local. Para ello, entraremos al terminal desde la aplicación xterm:

Batocera, por supuesto, tiene CLI

Y escribimos lo siguiente:

flatpak override org.mozilla.firefox --filesystem=host

Con este comando, configuramos el paquete para acceder a ficheros locales, con lo que ya podríamos abrir el archivo HTML que hemos copiado.

Pinceladas finales

Los detalles son importantes. Y el hecho de que la máquina ejecute automáticamente el juego de Scratch de forma automática al encender puede conseguir un efecto más realista.

Para ello, crearemos un archivo .sh en la carpeta /userdata/roms/ports con un comando que lance el Firefox directamente con nuestro juego scratch y en modo kiosko (pantalla completa, sin barra de navegación y que, por tanto, no se pueda cambiar de página). El contenido del archivo será un lanzador como este:

#!/bin/bash
flatpak run org.mozilla.firefox /userdata/roms/ports/scratch.html --kiosk

Ahora ya podemos abrir directamente nuestro juego desde el menú Ports de la interfaz de navegación entre los emuladores de Batocera:

Recuerda que para que detecte nuevos juegos hay que seleccionar la opción desde el menú principal (GAME SETTINGS > UPDATE GAME LIST)

Pero si lanzamos el juego, detectaremos que no funciona con el joystick y los botones, sino con el teclado. Para poder usar los mandos de la recreativa, tendremos que hacer una configuración específica para el juego. Dejando el botón de selección apretado sobre el juego, aparece el menú contextual.

Esta opción es la que buscamos

La opción «EDIT PAADTOKEY PROFILE» nos permite mepear el joystick y la botonera de nuestro arcade a las teclas del teclado y botones del ratón que queramos.

Simplemente, hay que seleccionar a qué tecla o botón del ratón corresponde cada botón de nuestra máquina

También puede ser interesante mapear el movimiento del ratón a la seunda palanca, por si hay que apretar algún botón con el ratón.

Por si acaso, la palanca de la derecha moverá el ratón

Le damos a salvar y ya lo tendríamos. Batocera crea un fichero de configuración, por lo que no es necesario hacer esta configuración más veces.

Eso sí, te recomiendo que siempre que copies un juego SCRATCH lo renombres a scratch.html y sobrescribas el anterior, de ese modo no tendrás que repetir esta configuración cada vez.

Cuando ya esté todo funcionando correctamente, seleccionamos desde el menú contextual del juego (dejar presionado el botón de selección sobre el juego) y en ADVANCED GAME OPTIONS activamos la última opción:

Que es esta

Conclusiones

Al final del camino se ha construido máquina recreativa completamente funcional en un chasis único, construido artesanalmente, artísticamente decorado y técnicamente configurado por el alumnado del centro. Además, cabe la posibilidad de que los juegos disponibles también sean elaborados por el mismo alumnado, cerrando así completamente el círculo.

El proceso ha sido largo y complejo, ya que ha involucrado a alumnado de diversas etapas y a profesorado de diversos departamentos didácticos o familias profesionales. Pero ahí está la magia de los proyectos interdisciplinares y, como podéis ver, los resultados pueden ser espectaculares.

La principal dificultad ha radicado en la temporalización, ya que cuesta cuadrar la realización del proyecto con el momento adecuado de los contenidos en todos los grupos. Esto ha dado pie a que la construcción se haya dilatado durante todo un curso académico. Por tanto, la máquina se presentó «en sociedad» en la jornada de puertas abiertas del centro del curso siguiente. La investigación sobre la ejecución de SCRATCH se realizó a finales del curso siguiente.

Con todo, el alumnado ha podido desarrollar competencias técnicas y artísticas mientras participaba en esta iniciativa, de una manera emocionante y motivadora. Y ahora el centro dispone de una máquina recreativa para jugar a juegos de producción propia o de dominio público. Y es que lo retro nunca pasa de moda. Y ahora quizá lo tengamos que celebrar con una visita extraescolar al Museo del Arcade de Ibi.

Producto finalizado

Escaneando gigantes

El escaneado de objetos mediante la técnica de la fotogrametría ha sido un tema sobre el que han tratado varias entradas de este blog. También se ha presentado con anterioridad un proceso para convertir un vídeo de unos pocos segundos a un conjunto de imágenes superpuestas, ideal para procesar mediante esta técnica esculturas al aire libre o, incluso, piezas arquitectónicas.

Sin embargo, hasta ahora, los escaneados a partir de vídeo se habían hecho con vídeos de pocos minutos, generalmente con un solo barrido del objeto, que daban como resultados objetos con pocos detalles o, en el caso de objetos de grandes dimensiones, zonas poco definidos, debido a la dificultad de acceso a las zonas más elevadas.

En este punto, se me presentó la oportunidad de realizar el escaneado del Baró de Patraix, un «gegant» de unos 4m de altura, creado or los artistas falleros Ceballos y Sanabria, con la colaboración del modisto Francis Montesinos para la Asociación Vecinal de Patraix y que forma parte de la tradición festiva de dicho barrio valenciano.

Gegant i geganta expuestos en el Complejo Deportivo Patraix

Escaneando un objeto de grandes dimensiones

El objetivo del escaneado era obtener un versión digital del mismo para que se pudiesen hacer réplicas a diversa escala, por lo que debía de tener el suficiente nivel de detalle para que las impresiones quedasen bien.

Dadas las grandes dimensiones del objeto, la opción del vídeo envolvente parecía la más adecuada, eso sí, con un vídeo más extenso que los que había hecho hasta el momento, que fuese capaz de capturar todos los detalles, especialmente del traje y las manos.

Así, llegados a este punto, cabían dos posibilidades para realizar el vídeo:

  • Hacer girar al gigante (alguien dentro dando vueltas sobre sí mismo) y usar una escalera para hacer llegar la cámara a las partes más elevadas de la figura.
  • Dejar el gigante fijo y girar a su alrededor haciendo el vídeo.

Puesto que lo que más costaba era sacar al gigante de su ubicación permanente (si os interesa, lo podéis visitar con total libertad en el Complejo Deportivo Patraix), se optó por hacer el escaneado de las dos maneras. De ese modo, sacamos al gigante a la calle, para aprovechar la iluminación natural, sin sol directo y procedimos a la realización del escaneado por los dos métodos.

Veamos los resultados obtenidos con cada una de las dos técnicas.

Escaneado girando el objeto

Este método es más similar al utilizado en objetos pequeños, en el que se pone el objeto sobre una peana, la cámara en un trípode y se va fotografiando a medida que se gira la peana. Cuando se da una vuelta entera, se cambia el ángulo de la cámara y se vuelve a empezar.

En este caso, no había peana, sino una persona dentro del gigante que iba dando vueltas sobre sí mismo mientras yo, con el móvil iba capturando el vídeo, subiendo y bajando por una escalera cada vez que se completaba una vuelta.

Performance callejero

El resultado fue un vídeo de 3 minutos del que se obtuvieron 860 imágenes JPG.

El procesado de dichas imágenes se alargo durante más de 3 días y, pese a que las fotos eran bastante buenas, el resultado fue poco satisfactorio ya que la reconstrucción del modelo 3D dejó algunas zonas mal definidas, como la frente o las mejillas.

Estas imperfecciones se pueden corregir con un poco de paciencia siguiendo las técnicas explicadas en esta otra entrada, pero resultaba algo frustrante que, después de más de 3 días procesando, se hubiese obtenido un modelo con tantas imperfecciones.

Hay que decir que, en este caso, la iluminación juega en nuestra contra ya que al girar el modelo, la luz incide de forma diferente en cada posición y eso confunde mucho al programa que procesa las imágenes. Por eso, como veremos, el resultado con el siguiente sistema, es mucho más satisfactorio.

Escaneado girando la cámara alrededor del objeto

En esta otra variante, el registro del vídeo se hace dejando el objeto fijo y moviendo la cámara alrededor, de forma envolvente. De este modo, las condiciones de iluminación no cambian y lo único que hay que procurar es no hacer sombra sobre el objeto. Como he comentado, el gigante estaba en una calle sin sol directo y, por tanto, eso no era un problema.

Lo que sí era un problema era llegar con el móvil a las partes más elevadas (la cabeza) para registrar correctamente todas las partes de la figura. En este caso, como era la cámara la que daba vueltas al objeto, la opción de la escalera ya no era viable. Hacía falta algo que permitiese estirar el brazo por encima de los dos metros y medio, algo que además, tuviese una sujeción adecuada para evitar que el teléfono movil pudiese caerse. Vaya, que hacía falta un palo selfie.

Así pues, con la ayuda del palo selfie, hice el vídeo alrededor del gigante, con una duración de 2’45min y del que se han obtenido 828 imágenes JPG. El procesado de las imágenes duró en este caso poco más de 8h y, como se puede apreciar a continación, con unos resultados mucho más interesantes:

He de decir que, pese a todo, me hubiese hecho falta un palo selfie más largo, ya que el que tenía no llegaba correctamente a la parte superior de la cabeza. Si os fijáis, al modelo se le ha generado un tupé un poco más exagerado que el del original.

Respecto a la duración del proceso, he de reconocer que, en el primer caso, cometí el error de configurar el programa en alta calidad, lo que dilató el proceso y no mejoró precisamente el acabado. En el segundo caso, se utilizaron las opciones por defecto del programa, reduciendo significativamente el tiempo y también mejorando el resultado (las imágenes eran mejores, al mantenerse fija la iluminación y reflejos).

Imprimiendo

Una vez obtenido el modelo en 3D, había que pasar a la siguiente fase, la de la impresión. Para ello, preparé varias variantes del modelo, cortándolo más arriba o más abajo, siguiendo las instrucciones comentadas en esta otra entrada. Mi preocupación principal era la impresión de las manos y, en particular, de los dedos, al ser la parte más delicada del modelo.

Efectivamente, las primeras pruebas acabaron con un gigante con los dedos mutilados:

Impresión con PLA multicolor. Unas 12h de impresión.

Las extremidades, al sobresalir, necesitan de unos soportes para que se puedan imprimir correctamente, pero al intentar quitar los soportes, estos quedan ligeramente pegados a la pieza y las partes más sensibles acaban yéndose con el soporte. Este era el caso de los dedos meñiques.

Para tratar de reducir esa problemática, hice dos modificaciones en las opciones de la generación del laminador:

  • Cambiar la estructura de soporte a la tipo «Árbol». Esto genera soportes menos aparatosos, haciendo más fácil su eliminación.
  • Cambiar «Colocación de soporte» a «Tocando a la placa», para que solo generase soportes sobre la placa y no sobre la misma figura.
Opciones avanzadas de configuración de soporte

Tras volver a imprimir con estos ajustes, aunque el soporte se pudo eliminar con más facilidad, los dedos meñiques siguieron siendo víctimas del proceso, ya que seguía habiendo partes que era difícil eliminar sin romper el dedo.

Impresión con soporte en árbol en PLA azul. Unas 8h.

Hay que decir que, en este caso, la fragilidad de los dedos tenía que ver con las dimensiones de la impresión. Al trabajar con una impresora doméstica pequeña, la pieza no se podía hacer muy grande y, por tanto, los detalles quedaban más pequeños. Quizá en una impresión más grande, los dedos tendrían mayor solidez y no se hiubiesen roto con tanta facilidad.

Decidí abordar el problema de otra manera: cambiar la posición de impresión de la figura para evitar que se tuviesen que hacer soportes en las manos. Para ello tumbé la figura unos 80º, de modo que las manos y los dedos quedasen siempre por encima de la capa anterior. En este caso, todos los soportes irían a la espalda de la figura, que al ser sólida no supondría ningún problema al «romper» los soportes.

El resultado, en este caso, sí que fue el esperado:

Impresión en PLA azul de la pieza tumbada. Unas 12h de impresión.

Como se puede apreciar en la siguiente imagen, una vez quitados los soportes, están todos los dedos en su sitio:

1,2, 3, 4 y… 5!

Para completar, realicé una impresión del modelo sin las manos, de hombros para arriba, para poder apreciar los detalles de la cara:

De nuevo, utilicé el soporte en árbol. Unas 6h de impresión.

Este es el resultado:

Conclusiones

El escaneado de piezas grandes usando la técnica del vídeo da unos resultados más que aceptables, sin embargo, es fundamental tener en cuenta aspectos como la buena iluminación del objeto, evitando los reflejos y la luz directa, así como los cambios que pudiesen derivarse de mover el modelo. Es mejor que se mueva la cámara alrededor del objeto a escanear.

Otro aspecto muy importante es poder capturar suficientemente bien los detalles desde todos los ángulos, para evitar que el programa de procesado tenga que inventarse partes. Quizá, para objetos muy grandes, sería interesante valorar el uso de un dron para obtener un vídeo desde todos los ángulos (y con mucho cuidado de que el dron no haga sombra sobre el modelo).

También se ha observado que, como ya sospechaba, aumentar los parámetros de calidad del software que realiza el análisis de las imágenes no suele mejorar el resultado (o incluso lo empeora, al tener que generar mucho más vértices en la malla) y lo que si provoca son tiempos de procesado mucho más largos.

Respecto a la impresión, la eliminación de soportes siempre es muy delicada en piezas complejas y esta no ha sido una excepción. En estos casos, la mejor es opción es tratar de evitar los soportes o ponerlos en zonas más resistentes.

Con todo, los objetivos del proyecto se han cumplido pues se tiene un modelo 3D del que se pueden extraer fácilmente réplicas. Para ello, solo han hecho falta un smartphone, un palo selfie y un ordenador. Una vez más, la técnica de la fotogrametria se muestra como una eficiente y económica técnica para escanear objetos en 3D.

Varias réplicas a partir del modelo generado.

Cómo trocear diseños 3D

Diseñando para imprimir en 3D, en más de una ocasión me he encontrado en la situación en la que el diseño es más grande que la base de impresión. Cuando esto pasa, lo primero que uno piensa es disminuir el tamaño del objeto con el laminador hasta que quepa en la base de impresión, no obstante esto no siempre es posible. Por ejemplo, cuando el diseño incorpora etiquetas en braille, donde las dimensiones se han de mantener.

En el anterior párrafo he enlazado un proyecto que realicé ya hace unos años, en el que diseñamos las líneas de metro de la ciudad de Valencia. El problema que encontramos es que hay líneas de metro con más de 30 paradas y, claro, el diseño no cabía en ninguna impresora. En ese caso, recurrimos a un programa muy sencillo que nos permitía trocear las líneas, previamente diseñadas, en varios tramos para poder imprimirlos y, posteriormente, pegarlos de nuevo con cola de contacto.

Netfabb Basic

Este programa es NetFabb Basic, un programa originalmente gratuito que fue absorvido por Autodesk que, finalmente, lo hizo desaparecer. No obstante, gracias a la comunidad podemos seguir accediendo de forma legal y gratuita a antiguas copias de este programa para Windows (también funciona en GNU/Linux con Wine).

Para descargarlo, hay que acceder al siguiente repositorio:

https://github.com/3DprintFIT/netfabb-basic-download

Pasos para trocear con Netfabb Basic

Vamos paso a paso:

Ejecutamos la aplicación. En el mensaje que nos sale, marcamos la casilla de verificación, esperamos la cuenta atrás y pulsamos Later:

Cargamos el STL a trocear con Open > File

En la sección «Cut», movemos el eje X (puede ser el eje Y o Z, depende de como se haya importado la figura) hasta que la línea de color se ponga en la zona donde queremos hacer el corte (hacer el corte siempre entre dos estaciones)

Pulsamos «Execute Cut». Si nos pregunta el eje, le indicaremos el mismo que hemos usado para definir el punto de corte.

Ahora, quita la opción «Triangulate Cuts» y le damos al botón «Cut»

El resultado de la operación, nos da una advertencia. Vamos a corregirla.

Seleccionamos una de las partes y pulsamos el botón «Repair»

Pulsamos el botón «Automatic repair» (1), después «Execute» (2) y «Apply Repair» (3). En la pregunta que nos hace al darle a Apply repair respondemos «Remove old parts»

Repetimos el proceso de reparado para el otro trozo.

Ahora, guardamos cada uno de los trozos en un STL. LE damos al botón derecho sobre el trozo, seleccionamos Export y luego STL.

Ahora, ya podemos importar los STL generados en Cura o nuestro laminador favorito y encajarlos sin problema en la base de impresión.

Eso sí, cuando la impresión termine, tendremos que volver a juntar las partes usando cola de contacto.

Creando réplicas táctiles de piezas de museo con escaneado e impresión 3D

La fotogrametria se ha convertido en una alternativa muy interesante y eficiente para realizar escaneados en 3D de una manera muy sencilla, a partir de imágenes o vídeos, que se pueden tomar directamente con el teléfono móvil y que se pueden procesar en cualquier equipo, incluso si son poco potentes. Esto, en combinación con una impresora 3D, abre la puerta a una gran diversidad de proyectos de aplicación que, llevados al aula, pueden proporcionar resultados espectaculares.

No es la primera vez que hablo de esto en blog, pero esta ocasión, voy a compartir los resultados de un proyecto educativo llevado a cabo en el aula durante el último año y que ha supuesto la implementación en el aula del proyecto Erasmus+ AMUSING.

Arte táctil

El objetivo de este proyecto es utilizar las técnicas de escaneado e impresión 3D en el aula para poder generar réplicas de piezas de museo, para que las personas con discapacidad visual puedan acceder de forma táctil a ellas. De este modo, el alumnado no solo adquiere destrezas en las técnicas para conseguirlo, sino que aprende sobre la propia pieza tratada, al tiempo que empatiza con las personas con discapacidad visual y, lo que no es menos importante, genera un recurso que ayuda a mejorar su integración. Todos ganan en una actividad donde el enfoque ApS es evidente.

A la hora de plantear como se podía llevar este proyecto al aula, era importante que el alumnado tuviese una interés académico respecto a la pieza que iba a procesar. No se trataba simplemente de replicar una pieza, sino que tendría que hacer un análisis formal de la misma para ser capaz de explicarlo táctilmente a la persona que va acceder a dicho recurso.

En efecto, al igual que pasa con el sentido de la vista, por muy entrenado que esté el sentido del tacto, no todo se puede apreciar a la primera y hace falta que alguien te explique mientras exploras para captar los matices. Cualquiera que haya hecho una visita guiada a un museo, se hará una idea de lo que hablo. Y si la visita ha sido a un museo táctil, más aún.

Imagen
Explicando un altorelieve en el museo táctil de Atenas. Después nos intercambiamos los papeles.

Por ello, la decisión de implicar al departamento de Artes del centro parecía evidente: además, la propuesta les resultó muy interesante, pues en el bachillerato artístico tienen una asignatura de volumen donde la fotogrametria encaja muy bien. Y así es como entró en escena el alumnado de 1º de bachillerato de Artes.

Taller de fotogrametría

Una cosa que llama la atención al realizar un taller de fotogrametría con alumnado del bachillerato artístico es que, a diferencia de en otras ocasiones el que se había realizado el taller esta vez, la técnica pasaba a un segundo plano (era un medio) mientras que la pieza y sus características cobraban mayor protagonismo.

Así, tras una breve explicación sobre los principios de la fotogrametria y sobre el proceso para la toma de imágenes, la sesión práctica arrancó con un gran entusiasmo, con muchas piezas artísticas del departamento – y también aportadas por el alumnado- sobre las peanas, que, foto a foto, fueron reduciendo el espacio libre en las memorias de los teléfonos móviles de los y las participantes.

Un poco de teoría

Y mucha práctica

Los resultados fueron impresionantes. En un par de horas se escanearon varios objetos, de algunos de ellos se obtuvieron modelos tan espectaculares como el que se enlaza a continuación:

Torso by Carlos M on Sketchfab

La impresión de dichos diseños también resultó muy llamativa:

Ejemplos de réplicas impresas a partir de las fotos tomadas en el taller

La realización de esta actividad fue recogida en una noticia en el suplemento Aula del diario Levante EMV.

El resultado del taller constataba la viabilidad del proyecto en su conjunto; era posible generar réplicas de piezas artísticas con esta tecnología. Ahora sólo faltaba aplicar el mismo proceso a piezas artísticas de los fondos de un museo. Pero para eso, habría que esperar al curso siguiente.

Tarde en el museo

Entre una cosa y otra, el curso ya había pasado y el alumnado que realizó el taller estaba ya en 2º de Bachillerato. Por ello, era importante reanudar el proyecto cuanto antes para que no coincidiese con los meses previos a la PAU, cuando están de exámenes y completamente centrados en el examen de acceso universitario.

El siguiente paso era contactar con un museo para organizar la actividad. Afortunadamente, el Ayuntamiento de Valencia también participaba en el proyecto Erasmus+ AMUSING, por lo que lo más inmediato era tratar de coordinar la actividad con alguno de sus museos.

Entre ellos, La Casa Museu Benlliure resultaba especialmente interesante, ya que el alumnado que iba a hacer la actividad tenía, precisamente, a ese autor como uno de los que estaban preparando para las PAU.

Así que, se estableció contacto con la dirección del museo para plantear la colaboración y realizar una visita previa, junto a su director, para seleccionar las posibles piezas que se podrían escanear. Principalmente esculturas de Mariano Benlliure o de su colección. En paralelo, se realizó una instancia oficial al Ayuntamiento para solicitar acceso a las fuentes del museo.

En este punto, cabe aclarar que no todas las piezas eran susceptibles de ser escaneadas debido a aspectos relacionados con los derechos de autor y propiedad intelectual. Es por ello, que se optó por escanear piezas que no tuviesen ese problema. Lamentablemente, muy pocas de ellas eran de Mariano Benlliure. No obstante, era una selección muy interesante, pues combinaba esculturas de diferentes estilos, épocas y materiales.

Otro criterio que se siguió para elegir las piezas fue el de que fuesen fáciles de escanear; cuerpos cerrados, sin detalles muy pequeños y de materiales mate.

Con los permisos concedidos y las piezas ya preseleccionadas, se organizó una visita con el alumnado al museo. Primero se hizo una visita guiada a la exposición permanente. Después, los alumnos fueron a una sala especial donde estaban preparadas las piezas que se habían seleccionado y montaron todo el equipamiento (que se llevó desde el centro en un práctico carrito de la compra) para fotografiar las piezas.

Además de las fotos del alumnado, se hicieron algunos vídeos envolventes de algunos objetos disponibles en el jardín del museo, para su posterior procesado.

La magia de la fotogrametría

De nuevo en el instituto, el alumnado procesó las imágenes con el software de fotogrametría, tal y como habían aprendido en el curso anterior.

Como actividad alternativa, se planteó un taller sobre fotogrametria con Google Colab con el alumnado del ciclo formativo de grado medio de informática, utilizando algunos de los sets de fotos capturados en el museo. Este tipo de proyectos siempre resultan mucho más enriquecedores cuando se integran a diferentes grupos y etapas, especialmente cuando cada grupo realiza un tarea específica diferente.

Uno detrás de otro, todas las esculturas fotografiadas fueron procesadas con el software de fotogrametría y se obtuvieron los modelos en 3D. De todas las piezas procesadas, solo de una no se pudo obtener el modelo correspondiente, lo que da una idea de la efectividad de la técnica. También se procesaron los vídeos. Los resultados, de nuevo, fueron espectaculares:

AMUSING Casa Museu Benlliure by Carlos M on Sketchfab

A continuación, al igual que se había hecho anteriormente, se fueron imprimiendo con la impresora 3D las piezas escaneadas. Este proceso se prolongó durante varias semanas.

Imagen
Exposición de replicas

Hay que decir que, al realizar la impresión salieron a la luz algunos defectos en el reconocimiento del escaneado 3D que no se aprecian en el modelo gracias a la textura. Esto ocurre, principalmente en las piezas de materiales más brillantes (como, por ejemplo, una que era de madera pulida). Por otro lado, las piezas que mejor salieron fueron las que eran de materiales más mate (especialmente los de barro o arcilla).

Explicación táctil

El proyecto no terminaba en la generación de la réplica. Como he explicado anteriormente, para acceder a una pieza artística mediante el sentido del tacto, no basta con tocar la pieza; necesitas que alguien guíe y explique la información que proporcionan los dedos. Es por ello, que el paso final requería de ese análisis de la pieza y del diseño de esa exploración.

Para ello, se solicitó a La Casa Museu Benlliure una relación con información sobre las piezas escaneadas, obteniendo un listado con datos sobre la autoría, técnica y el año de creación. Con esta información como punto de partida, el alumnado realizó una tarea de investigación y documentación, que plasmaron en un guion de exploración táctil.

Es entonces cuando llega el momento del paso final, en el que hay que probar los recursos generados. Para ello, se contactó con Isabel, para hablarle del proyecto y proponerle colaborar. Isabel es una persona ciega que también se dedica al apasionante mundo de la docencia y que ya había colaborado previamente en el proyecto de implementación del PRIN3D. Ella accedió a hacer esta visita virtual al Museu Benlliure desde las aulas del IES, guiada por el alumnado de bachillerato.

El alumnado había preparado por grupos los guiones de explicación, hablando de la autoría, el contexto, la técnica, el estilo, describiendo la pieza e, incluso, usando piezas del material original de la obra para trasladar la sensación táctil del original (rugosidad, calidez…).

Una vez estuvieron preparados los guiones, se organizó una sesión en la que Isabel vendría al aula y los diferentes grupos le guiarían a través de sus piezas. Ella, además, proporcionaría su feedback sobre la pieza y sobre los diferentes aspectos de la exploración. De nuevo, aprovecho estas líneas para reiterar mi agradecimiento por su disposición y comentarios.

La sesión supuso una gran experiencia para todas las partes y un magnífico final para un proyecto en el que se había trabajado de forma intermitente, durante dos cursos académicos. Más de un año. Se dice pronto.

La experiencia fue recogida por el suplemento Aula del Levante-EMV.

Conclusiones

El proyecto AMUSING, como en su dia fue el PRINT3D, ha supuesto un marco de trabajo ideal para plantear actividades con enfoque ApS que permitan desarrollar las competencias técnicas del alumnado en el uso de las nuevas tecnologías, en campos de aplicación que permiten la integración de personas con discapacidad visual, empatizando así con su realidad social. Además de todo esto, el hecho de trabajar con piezas de la Casa Museo de uno de los autores que están trabajando en el aula, genera un punto de motivación adicional para el alumnado participante.

Así, nos encontramos ante un proyecto multidimensional, en el que todas las partes implicadas hemos obtenido un enriquecimiento, técnico, cultural y personal significativo. Un ejemplo de más de lo potente que puede ser el enfoque de Aprendizaje Servicio en el aula.

No obstante, hay que mencionar también algunos aspectos susceptibles de mejora, principalmente relacionados con las limitaciones del escaneado y la impresión 3D. Respecto a lo primero, hay que remarcar que las piezas que han salido bien han sido aquellas que no tenían una volumetría compleja y cuyo material era mate (principalmente las piezas de barro, yeso o similar). El resto de piezas presentaban algunos defectos no presentes en el original, provocados por brillos o reflejos capturados por la cámara y que el software de fotogrametría no ha sabido interpretar. Esto es podría solucionar realizando un proceso de postproceso sobre el modelo 3D, que requeriría una mayor dedicación en la formación del alumnado en el uso de software específico.

Por otro lado, la impresión 3D, de nuevo, supone una limitación importante. Las impresoras con las que trabajamos en el aula están muy limitadas en lo que refiere al tamaño que permiten imprimir. Por ello, prácticamente ninguna pieza ha podido ser impresa a tamaño real. Esto se podría solucionar troceando la pieza (de nuevo, más formación en el uso de software específico) e imprimiendo por partes. Sin embargo, esta solución no ha dado buenos resultados en el proyecto, ya que el punto de unión de las diferentes partes se detecta en la exploración táctil y genera «ruido» en la percepción de la obra.

También, y como siempre, los atascos y fallos de la impresora han generados periodos muy largos de impresión. Cada pieza tardaba varios días en imprimirse y si algo fallaba había que volver a empezar desde el principio, desperdiciando mucho tiempo (y PLA). Además de eso, en ocasiones, el PLA defectuoso creaba rugosidades en la pieza que afectaban a la exploración táctil. Esto último se podría solucionar haciendo un tratamiento de la pieza con alguna resina específica.

Con todo, como se ha explicado con anterioridad, el proyecto ha resultado muy satisfactorio y lo cierto es que con unos recursos muy al alcance de todos y muy pocos conocimientos técnicos, es posible conseguir unos resultados increíbles. Estamos hablando de llevar cualquier pieza de museo a cualquier aula del mundo. Y eso no es cualquier cosa.

Creando un digital signage con software libre

Cada vez es más frecuente encontrar con un sistema de digital signage (letreros digitales) en las salas de espera de diferentes espacios públicos, en los que en una pantalla se va mostrando en bucle avisos, vídeos y otra información corporativa (y sí, a veces también publicidad). Aunque esta pantalla ha de disputar la atención a las pantallas de los teléfonos móviles, lo cierto es que sigue logrando captar la mirada de las personas que pasan frente a ellas, lo que los convierte en una herramienta muy interesante para promocionar información interna de una organización.

Es por ello que, en el centro educativo en el que trabajo, se decidió instalar cerca del mostrador de atención de secretaria una pantalla con información del centro. Esta ubicación, además de ser donde esperan las personas para ser atendidas, es una zona de paso del personal y alumnado del centro, con lo que la información mostrada está al alcance de toda la comunidad educativa.

Son muchas las empresas que ofrecen soluciones integrales de digital signage, y también soluciones escalables en las que se puede acceder a un sistema básico y, después, mediante un pago o suscripción, ampliar las prestaciones.

Sin embargo, estas soluciones tienen un importante inconveniente: en todas, de una forma u otra, la información a mostrar en la pantalla ha de ser almacenada en un servidor externo, lo que supone un problema desde el punto de vista de la protección de datos.

Así que, en lugar de usar esas soluciones, se ha tenido que plantear otras aproximaciones que, como veremos, en última instancia han requerido del uso software Libre para encontrar una solución adaptable y económica (gratis).

Pero empecemos por el principio: tras adquirir la SMART TV y montarla en la pared de la zona descrita anteriormente ¿Cómo implementamos el digital signage? Veamos como ha evolucionado la solución.

Primeras soluciones

La primera solución, partía de una premisa muy simple: las SMART TV actuales pueden reproducir vídeos desde un USB enchufado a los conectores traseros (cuidado, algunas teles de última generación ya no llevan reproductor de vídeo por cuestión del licencias). Por tanto, se copian los vídeos a mostrar en un USB, se conecta a la TV, se le da a reproducir en bucle y listo.

El problema es que cada vez que se ha de añadir un nuevo vídeo, hay que ir a la TV a cambiar el USB, lo que puede ser un poco incómodo, sobretodo si la TV está en alto y hay que usar una escalera. Además, es necesario convertir todos los avisos y mensajes en vídeos, por lo que hay que tener a mano un editor de vídeo para ir generando los carteles, lo que hace bastante ineficiente el sistema, sobretodo si los mensajes se actualizan con frecuencia.

Para solucionar el problema del cambio de USB, se creó un servidor DLNA con software libre (miniDLNA) en un ordenador conectado a la red del centro y se compartió el acceso a la carpeta de los contenidos. De ese modo, se podían actualizar los vídeos sin necesidad de coger la escalera. Así, la SMART TV detectaba el servidor DLNA con los vídeos y podía reproducirlos remotamente. Sin embargo, la reproducción en bucle de vídeos por DLNA que tenía este modelo de SMART TV en particular no funcionaba correctamente y había que estar reiniciándolo un par de veces al día, lo que también resultaba incómodo.

WordPress, como no

Llegados a este punto y tras descartar multitud de aplicaciones de digital signage por usar servidores externos para los contenidos, descubrí Foyer, un plugin de WordPress que convierte un blog en un sistema de digital signage.

Foyer: Solucion de digital signage libre y gratuita

Para los que no lo conozcáis, WordPress es un sistema de gestión de contenidos web de código abierto. En origen es una herramienta para crear blogs, pero su versatilidad es tal que, hoy en día, gracias a los plugins, puede utilizarse casi para cualquier tipo de aplicación web.

Así que lo único que hacía falta era una instalación de WordPress para implementar esta solución. Se hizo la instalación en un servidor de la red local y en ella instalé el plugin. Una vez terminado el proceso, tan solo hay que acceder a la URL del blog para acceder a los contenidos de la pantalla, que irán alternándose en bucle con una animación. Básicamente se está haciendo lo mismo que otras soluciones, pero usando un servidor local, sin salir de la red del centro.

Ejemplo de un digital signage creado con Foyer.

Para ver Foyer en funcionamiento en vivo y en directo, basta con acceder a este enlace.

El uso de Foyer es sencillo: una vez instalado y activado en WordPress, aparece un nuevo menú desde el que podemos gestionar tres elementos:

  • Slides: Aquí se crean las diferentes diapositivas que se pueden mostrar. Las diapositivas pueden tener texto y una imagen o vídeo de fondo (el vídeo, incluso puede ser directamente un enlace a Youtube). Además, se pueden crear diapositivas que sean imágenes o documentos PDF.
  • Channels: Aquí se crean secuencias de diapositivas. Se pueden seleccionar entre las diapositivas creadas en la anterior sección y ponen en un orden concreto. Se pueden crear tantas secuencias como se quiera y se les da un nombre.
  • Displays: Podemos crear diferentes pantallas. Cada una tendrá su configuración y una URL específica. A cada display le podemos asignar un canal diferente.
Un ejemplo de canal de diapositivas en Foyer. Las 11 diapositivas se reproducen en bucle en la pantalla.

En mi caso, me basta con un un único display y un canal con 11 diapositivas, que combinan imágenes y vídeos y se van cambiando con frecuencia.

Para terminar de poner en funcionamiento la solución, solo bastaba con hacer que la SMART TV reprodujese la URL del display de Foyer en el navegador. Pero no podía ser tan fácil.

Problemas con el navegador

El problema vino al reproducir la web que genera Foyer en la SMART TV. En primer lugar, la SMART TV no incluía navegador Web y fue necesario instalar uno. Aunque se trata de un SMART TV basado en Android, las aplicaciones a instalar están limitadas por el fabricante y para poder instalar el Firefox se tuvo que realizar una instalación manual mediante un apk.

Pero al poner la URL en el nevagador, la sorpresa fue que las diapositivas con vídeo no se reproducían: se ponía la pantalla en gris y, a los pocos segundos, saltaba a la siguiente diapositiva. Al parecer, era un problema de potencia.

El plugin lo que hace es cargar todos los contenidos de todas las diapositivas en una página de navegador y oculta todo menos la diapositiva que se muestra en cada momento. Esto hace que el navegador requiera muchos recursos para cargar todas las diapositivas en la página y, aunque solo se esté mostrando una. Esto hace que no haya suficiente memoria para reproducir los vídeos.

Cuando se reducía el número de diapositivas, la cosa mejoraba un poco. Pero, aparecía otro problema ya que por motivos de seguridad algunos navegadores bloquean la reproducción automática de vídeos. A diferencia de los navegadores de escritorio, los navegadores para SMART TV están muy limitados en lo que a posibilidades de configuración se refiere y no se podía suavizar esta restricción cambiando alguna opción. Por tanto, con el navegador de la SMART TV sólo se podían reproducir diapositivas con imágenes y texto.

Se pensó también en conectar una Raspberry Pi 4 a la SMART TV con un sistema operativo mínimo que solo mostrase el navegador a pantalla completa, pero aunque mejora las cosas, tampoco soluciona el problema completamente, como se puede leer en el foro de soporte del plugin. Según ese mensaje, con una Raspberry 4 adecuadamente configurada se puede conseguir reproducir principalmente diapositivas de imágenes y una o dos diapositivas con vídeo.

En este punto he de decir que antes de probar Foyer, hice algunas pruebas con otras soluciones (de las que no son completamente gratuitas) y el resultado con Raspberry Pi no fue mucho mejor.

Y de vuelta al ordenador

Por tanto, hacía falta reproducir la web de Foyer con un equipo más potente. Esto se solucionó con un ordenador-de-toda-la-vida (TM). Incluso puede ser el mismo que tiene el servidor (si está cerca de la SMART TV). Así que sacamos un cable HDMI de la TV hasta la ubicación del ordenador, y preparamos el equipo con un sistema operativo que consuma pocos recursos (en nuestro caso un XUBUNTU configurado con el inicio de sesión automático), en el que hemos añadido el siguiente comando para que se ejecute al arrancar el sistema:

firefox --kiosk http://ip.del.servidor/foyertv

Lo que hace ese comando es abrir el navegador Firefox a pantalla completa con la ruta indicada (en este caso, la URL donde se visualiza el Foyer).

Con esta configuración, bastará con encender el ordenador para, a los pocos minutos, tener nuestro digital signage funcionando en la SMART TV. La potencia de un ordenador antiguo (de unos 12 años de antigüedad) con una distro de GNU/Linux y un navegador web de escritorio es suficiente y permite reproducir sin problemas unas 11 diapositivas, 5 de ellas con vídeo.

Nuestro digital signage en pleno funcionamiento

Un pequeño detalle: si queremos ocultar el puntero del ratón, podemos instalar el programa uncuttler y ejecutarlo también al arranque del sistema. De ese modo, a no ser que se mueva el ratón, el cursor aparecerá oculto.

Conclusiones

A modo de resumen, paso a listar los elementos utilizados para montar una solución de digital signage funcional, versátil y gratuita:

  • Una TV (no hace falta que sea SMART TV)
  • Un ordenador conectado a la red (contiene el servidor Web con el WordPress y el plugin Foyer)
  • Otro ordenador (reproduce la URL de Foyer en modo kiosko, podría ser el mismo que antes)
  • Un cable HDMI o VGA (si no queremos tener problemas con pérdida de señal, que no sea de más de 5m)

Y con eso, podremos gestionar nuestras diapositivas accediendo al panel de administración del WordPress desde cualquier ordenador conectado a la misma red.

Las ventajas de este sistema son, además de que es gratuito y de código abierto, es que todos los contenidos se mantienen en local, por lo que no tendremos problemas con la protección de datos.

Como inconveniente, decir que visualmente no es tan llamativo como otras soluciones comerciales ni tiene plugins que permitan vincular el sistema con otros servicios que se puedan incluir en la pantalla (como hora, noticias, climatología…).

Sin embargo, no deja de ser una solución de código abierto, por lo que, con los conocimientos adecuados, todo lo que se nos ocurra, puede ser implementado.

Etiquetas braille en Tinkercad

El uso de la impresión 3D para generar elementos accesibles para las personas con discapacidad visual ha sido un tema habitual en este blog en los últimos años. Se han hecho tutoriales de herramientas, se han compartido recursos y objetos de aprendizaje, pero también, se han presentado algunas implementaciones en el aula de proyectos basados en ApS para mejorar la inclusión en el entorno escolar.

Uno de los denominadores comunes de estas implementaciones era el uso de Tinkercad como herramienta de diseño, gracias a su sencillez, versatilidad y al hecho de que es multiplataforma (se ejecuta desde el navegador) y es de acceso gratuito, lo que habilita al alumnado a poder seguir utilizándolo en otros contextos, académicos o no.

El otro es Touchsee.me, una herramienta para la generación de etiquetas braille online que resulta fundamental para dotar a los objetos generados de información táctil. De nuevo, se trata de una herramienta accesible desde el navegador en la que, simplemente seleccionando el idioma y escribiendo un texto, se genera el archivo STL listo-para-imprimir con el texto en braille.

Escribir, descargar e imprimir

Una vez descargado, la etiqueta STL se puede llevar al laminador para imprimir. Mi recomendación es hacer la impresión en vertical, ya que los puntos quedan más suaves (y, por tanto, agradables al tacto) que se se imprime tumbada.

En 9 minutos tenemos la etiqueta braille impresa

Ahora bien, el problema llega cuando intentamos integrar esa etiqueta en algún diseño más complejo. Por ejemplo, imaginemos que queremos hacer una placa que combine un texto en altorrelieve con el braille, como el de la imagen.

Cartel accesible de aula

El diseño es trivial en Tinkercad: basta con crear la superfície, añadir el texto (en sans) e importar la etiqueta generada con Touchsee.me.

Sin embargo, cuando importamos la etiqueta, nos encontramos con el siguiente resultado:

Resultado de importar una etiqueta de Touchsee.me a Tinkercad

Parece que en el proceso de importación algo no funciona; la manera en la que touchsee.me genera el STL parece no gustar a Tinkercad y el resultando es una etiqueta braille que, en el mejor de los casos, resultará confusa de leer de forma táctil. Y esto presenta un grave problema para el objetivo del proyecto en uno de los elementos más importantes.

Pero no desesperemos, como siempre hay vías alternativas. Veamos algunas:

Solución #1

Una primera aproximación a la solución del problema, seria la de imprimir la eqtiqueta por un lado y, en Tinkercad, simplemente dejarlo todo preparado para agregarla al diseño tras la impresión. Esto es, haríamos un hueco para encajar la etiqueta una vez impresas ambas piezas.

Diseño de placa con hueco para la etiqueta braille

Posteriormente, pegamos en el hueco la etiqueta:

Manualidades

Esta, aunque resuelve el problema, tiene algunos inconvenientes. Como que el diseño es más complejo, ya que la etiqueta ha de encajar perfectamente. Si nos quedamos cortos, habrá que arriesgarse a lijar la etiqueta, si nos pasamos, sobrará hueco, dificultando la lectura. Además, la etiqueta braille se puede caer o soltar con el tiempo.

Solución #2

Una segunda solución pasa por tratar de corregir los defectos en la pieza generada por Touchsee.me que provocan la mala importación en Tinkercad.

Lo que haremos será reparar la etiqueta braille con un programa de diseño 3D, llamado Meshlab. Meshlab es gratuito, de código abierto y está disponible para todas las plataformas:

https://www.meshlab.net/#download

Instalamos Meshlab, e importamos el STL con el braille.

Una etiqueta de Touchsee.me abierta con Meshlab

Comprobamos como en Meshlab el STL se ve bien, pero aún así hay que corregirlo.

Seleccionamos Filters > Cleaning and repairing > Snap Missmatched borders

Esta opción repara bordes que estén ligeramente desplazados y que pueden causar una mala importación en Tinkercad, creando nuevos vértices.

Snap Mismatched Borders

Dejamos las opciones por defecto y le damos varias veces a Apply, para que cree nuevos vértices que puedan dar a Tinkercad más información para reconstruir correctamente el STL.

Podemos guiarnos por el mensaje que aparece en el cuadro inferior derecho (Cuando veamos que el filtro ya no hace nada, que aparece 0).

El log nos dice lo que hace el filtro en cada paso

Cerramos el diálogo, y exportamos el STL.

Ahora, abrimos el STL corregido con Tinkercad, veremos como el resultado ha mejorado considerablemente:

Importación perfecta!

Este método no es 100% efectivo pero, en algunos casos como el del ejemplo, he conseguido una importación casi perfecta.

Solución #3

Finalmente, lo que podemos hacer es usar otra herramienta para generar el STL con el braille. Lo cierto es que Touchsee.me es la más completa de todas las que he encontrado, pero tiene este pequeño inconveniente de la importación a Tinkercad.

Una alternativa que es completamente compatible con Tinkercad es una herramienta llamada «Text to 3d printable Braille» y a la que podemos acceder desde el siguiente enlace:

http://v01pe.github.io/Text2Braille3d/

El funcionamiento no es tan intuitivo como el de Touchsee.me y además está en alemán. Pero, como veremos, tampoco resulta complicado hacerse con su funcionamiento:

Text to 3d printable Braille

El diseño de la aplicación tiene dos partes, la parte superior con una previsualización de la etiqueta a generar y la parte inferior, con los parámetros que se pueden modificar.

Para generar la etiqueta hay que escribir en Text lo que queremos codificar (obvio)

Las opciones que nos da son las siguientes:

  • Großbuchstaben zulassen: Permitir mayúsculas. Si lo activamos, codificará las mayúsculas (recomendado)
  • Kontraktionen: Aplica contracciones para simplicar la longitud. Yo lo desactivo.
  • Direkte Konvertierung: Conversión directa. Desactivado por defecto.

Si pulsamos en Details einstellen veremos las opciones avanzadas. Entre otras cosas, podemos modificar el tamaño de la placa (Form-Größe), la altura del punto (Punkt-Höhe), el diámetro del punto (Punkt-Durchmesser), el grosor de la placa (Platten-Stärke) y la distancia entre las filas (Rand):

Además, podemos deshabilitar la muesca de referencia (Referenz Eck), aunque no lo recomiendo ya que nos ayudará a identificar el sentido de la lectura de la etiqueta, lo que será muy práctico a la hora de posicionarla en Tinkercad.

Es eso, o tener algunas nociones para interpretar el braille.

Lo que si os recomiendo deshabilitar la generación de soportes (Stützen generieren) ya que si no se pretende imprimir en vertical la etiqueta, como es nuestro caso, no son de utilidad.

Soportes

Una vez configurado todo, hay que darle al botón que hay en la parte inferior:

Pulsar primero aquí

Eso cargará nuestro diseño en la vista previa. Una vez hayamos generado el modelo presionando el botón anterior, ya podemos darle a generar el STL para su descarga. Si no lo hacemos en ese orden, nos descargaremos el diseño precargado no el que nosotros queremos.

Cuando le demos a Generate STL el botón se convertirá en el enlace de descarga del STL

El STL descargado se puede importar al Tinkercad sin problemas:

Resultado de la importación en Tinkercad

De este modo, ya podemos usar el braille en nuestros diseños con Tinkercad.

Unir, exportar e imprimir.

Postprocesado básico tras el escaneado 3D

En anteriores entradas, he compartido procedimientos y técnicas para escanear objetos en 3D utilizando fotogrametría a partir de imágenes o vídeos. La sencillez del proceso – que incluso puede ser realizado con la cámara de un teléfono móvil – y los llamativos resultados que produce – incluso en equipos poco potentes – hacen que sea una interesante opción para introducir estas técnicas en el aula para tratar contenidos de forma inclusiva, de acuerdo al planteamiento del proyecto Erasmus+ AMUSING.

Pero, por sorprendentes que sean los resultados, si los miramos de cerca con el visor 3D, podremos apreciar pequeñas imperfecciones que ha cometido el programa de escaneado en 3D al componer el volumen a partir de las imágenes. Estas imperfecciones suelen estar disimuladas por la textura, por lo que pasan desapercibidas en un visor 3D, sin embargo, si nuestro objetivo es imprimir la pieza, estas imperfecciones o ruido 3D, puede trasladarse al objeto y, por tanto al tacto.

Por ejemplo, veamos la siguiente escultura de un rostro escaneada por fotogrametria:

Si nos acercamos al rostro:

Aparentemente, el modelo parece bastante fidedigno con el original, por lo menos en el visor. Sin embargo, si cambiamos las opciones de iluminación activando el shading, veremos que, en realidad, la textura nos está engañando. En la siguiente imagen se aprecia como, en realidad el programa de escaneado ha tenido problemas para reconstruir la parte interior del rostro, al tener menos fotografías que capturasen correctamente esa zona.

Esas imperfecciones se trasladarían al modelo impreso, alejando la experiencia táctil del modelo original.

Como ya se ha comentado en este blog, el objetivo del proyecto Erasmus+ AMUSING es crear réplicas de objetos de museos para poder ser manipuladas y así, entre otras ventajas, poder ser explicadas a las personas con discapacidad visual. Así, que es necesario eliminar en la medida de lo posible esas imperfecciones que puedan despistar sobre la verdadera forma del objeto replicado.

En esta entrada, explicaré algunas técnicas sencillas que se pueden emplear para optimizar el objeto de cara a su impresión.

Autodesk Meshmixer

El programa que se empleará para procesar el modelo es el Autdesk Meshmixer. El programa es gratuito y se puede obtener desde su web:

https://www.meshmixer.com/

Está disponible para Windows y Mac OSX, si bien, la versión de Windows puede ejecutarse bajo GNU/Linux con Wine con los drivers Vulkan.

Una vez instalado, lo ponemos en marcha y cargamos el archivo OBJ que queramos tratar.

Corrección de errores

Un primer paso necesario, incluso si no se pretende imprimir la pieza, es corregir todos los errores que se puedan haber producido al tejer la malla durante el proceso de fotogrametría. Esto es, triángulos mal cerrados, o cosas que se pueden ver en la anterior captura, zonas sueltas o la apertura del modelo por la parte en la que no hay información.

Para resolver todos estos problemas de forma sencilla, seleccionamos la opción Analysis y después en Inspector.

Esto nos marcará todos los errores detectados en rosa (zonas desconectadas ), azul (zonas no cerradas) y rojo (triángulos imposibles) y nos dará la opción de corregirlos: Auto repair all.

Al pulsar esta opción, vemos como ha desaparecido la zona suelta y se ha cerrado el modelo.

Eliminar zonas no deseadas

Una función muy importante que nos permite hacer el programa es poder descartar zonas del modelo. Esto es útil porque es habitual que los programas de fotogrametria modelen más de lo que nos interesa.

Por ejemplo, en nuestro modelo, se pueden apreciar zonas de la pared en la que se encontraba la placa con la escultura:

Una forma de deshacerse de esas partes es usando un corte por plano, que determinará qué parte se queda en el modelo y cuál se descarta.. Para ello, vamos a Edit > Pane Cut

Tenemos que posicionar el plano usando las flechas de colores, que nos permiten mover y rotar el plano. Lo que está en gris es lo que queda fuera y lo que mantiene la textura es lo que quedará tras hacer el corte.

Tras posicionar el plano para que deje fuera la pared, le damos a Accept para que haga el corte.

El resultado se cierra automáticamente, por lo que no hace falta que volvamos a lanzar el inspector.

Posicionar el modelo

Otro aspecto interesante de cara a la impresión es rotar y escalar el modelo para facilitar su posicionamiento en el programa de segmentación de la impresora 3D.

Para ello, Meshmixer nos permite poner en pantalla la base de impresión (View > Show Printer Bed) y transformar el modelo (Edit > Transform):

De nuevo, usamos las flechas para rotar y posicionar. Si queremos redimensionar de manera uniforme, hay que apretar sobre el cuadro blanco que hay en el centro y mover el ratón sin soltar.

Una vez posicionado, le damos a Accept para que se apliquen los cambios de la transformación.

Suavizar superficies

Finalmente, vamos a tratar el objeto para suavizar las imperfecciones. Para ello, seleccionamos Sculpt, opción que nos permite modificar el aspecto del modelo. Como lo único que queremos es suavizar la superfície, seleccionaremos la brocha Shrik Smooth.

Ahora, sobre el modelo, iremos repasando las zonas que queramos suavizar. En cierta manera, es como maquillar al modelo. Podemos cambiar la fuerza y tamaño de la brocha desde las opciones.

Para apreciar el efecto de lo que estamos haciendo, podemos activar para que se vea la malla (View > Show Wireframe). Veremos como, a medida que aplicamos la brocha, la malla se modifica. En este caso, lo que hace es regenerar la zona eliminando los posibles bultos.

Como se puede apreciar en el ejemplo, al aplicar la brocha estamos añadiendo nuevos triángulos, haciendo más complejo el modelo. Puedo reducir este efecto ampliando el tamaño de la brocha (o disminuyendo las dimensiones del modelo para que el tamaño de la brocha sea más grande).

Otra cosa que puedo hacer, una vez haya terminado es simplicar la malla en esa zona usando el pincel AdaptativeReduce o Reduce, que simplifica los triángulos de la zona tratada.

El resultado complementa el suavizado anterior:

Exportar el modelo

Una vez modificado el modelo, lo podemos exportar desde File > Export.

Hay que tener cuidado con el uso de esta herramienta, ya que estamos modificando el resultado del escaneado, Un exceso en el suavizado o la reducción de triángulos puede deformar el objeto escaneado, alejándolo del modelo original. Mi recomendación es ir poco a poco y no suavizar más de lo estrictamente necesario para que desaparezcan picos o irregularidades muy evidentes.

Por ello, es preferible exportar el modelo modificado con otro nombre y no sobreescribir el original, por si tenemos que volver a partir del original en un momento, sobretodo teniendo en cuenta el tiempo que requiere procesar un modelo por fotogrametría.

El resultado es el que se ve a continuación. Las irregularidades han desparecido, dejando la mejilla izquierda sin irregularidades (aunque es cierto que aún podríamos suavizarla un poco más).

Conclusiones

En la entrada hemos visto como realizar algunos ajustes básicos de postprocesado con Meshmixer de una pieza escaneada en 3D para eliminar algunos de los defectos que se puedan derivar del proceso de fotogrametria. Cabe destacar que Meshmixer tiene una gran variedad de herramientas para tratar figuras en 3D, lo que lo convierte en una herramienta indispensable para el escaneado 3D. Además, es gratuita y multiplataforma.

Escaneado 3D a partir de vídeo

Las técnicas de escaneado 3D mediante fotogrametria nos permiten obtener modelos en 3D de objetos del mundo real mediante la toma de una serie de fotografías adyacentes del objeto a modelar. El software de fotogrametría se encargará de encontrar puntos análogos en el conjunto de fotografías, realizando una triangulación que le permita representar el modelo en 3D.

Para que el modelo se pueda generar correctamente, es necesario que las fotografías se puedan solapar. Que todas tengan un poco de la anterior para que el software pueda enlazarlas. Algo similar a lo que hacen los móviles para hacer fotos panorámicas. Eso es difícil de conseguir tomando fotos «a pulso», por lo que se suele montar la cámara en un trípode, poner el objeto en una peana giratoria y se van tomando fotos a medida que se va girando poco a poco el trípode. Luego, subimos un poco el trípode, modificamos el ángulo de enfoque, y volvemos a empezar. Y así se hacen barridos completos con varias alturas y ángulos.

Sin embargo, si lo piensas, una manera de conseguir el mismo efecto sin necesidad de tanto montaje sería hacer un vídeo con los barridos «a mano» y después extraer fotogramas del vídeo de forma automática. Y eso es lo que voy a contar en esta entrada.

Recientemente, he estado en la National Gallery of Art de Vilnius donde decidí hacer algunas pruebas con esta técnica. Para ello, tomé unos vídeos cortos con mi viejo BQ Aquarius de algunas esculturas con la idea de generar modelos en 3D de algunas de las piezas expuestas. Veamos los resultados.

Los vídeos

Como he comentado, los vídeos fueron tomados con un móvil relativamente antiguo, aunque es capaz de grabar en 720p, está lejos de la calidad que se puede obtener con dispositivos más modernos. Traté de hacer un vídeo en el que iba haciendo un barrido de la pieza a escanear, lo que no siempre era fácil, porque la mayoría estaban apoyadas o ubicadas muy cerca de la pared, con lo que no podía dar la vuelta entera. Dependiendo de la pieza, los vídeos oscilan entre 25 y 60s.

Veamos un ejemplo:

Se trata de Nike (1978) de Petras Mazūras. (fichero de vídeo fuente)

Como se puede ver, el vídeo apenas dura unos segundos y se ha hecho un único barrido. La estátua es bastante alta y no disponía de un palo selfie o similar para poder obtener otros ángulos.

Los fotogramas

Una vez en el ordenador, lo que voy a hacer es extraer fotogramas del vídeo para obtener una secuencia de imágenes adyacentes.

Para ello, utilizaré ffmpg, un comando de GNU/Linux para tarbajar con vídeos que proporciona una infinidad de opciones. En este caso, simplemente utilizaré una opción que extrae fotogramas (-r) y le pasaré el número de fotogramas que quiero obtener por segundo. Es tan fácilo como escribir lo siguiente en el terminal (en la misma ruta en la que se encuentra el vídeo):

$ ffmpeg -i nike.MP4 -r 5 img-%03d.png

Lo que hago es invocar el programa, seguido de la opción -i, para indicarle el archivo de entrada (input), que es directamente el archivo con el vídeo que he extraído del móvil. Luego le pongo la opción -r y el valor 5, para decirle que saque 5 fotogramas por cada segundo de vídeo. Los archivos resultantes se generarán en el mismo directorio con los nombres img-001.png, img-002.png… y así sucesivamente.

Para más información sobre el uso del comando ffmpg, consultar el siguiente enlace.

En cualquier caso, comparto el resultado de la operación en un fichero ZIP:

Archivo ZIP con las fotos extraídas del vídeo.

Procesando

Para procesar las imágenes, he utilizado el Metashape con las opciones por defecto. Prácticamente, arrastrar y soltar. El proceso duró poco menos de una hora.

El resultado

Este es el resultado:

Nike, 1978 by Carlos M on Sketchfab

Como se puede ver, al modelo le falta detalle, pero teniendo en cuenta la rapidez con la que se tomó el vídeo y la poca duración del mismo, el resultado es espectacular.

Otros ejemplos

A continuación comparto otros modelos generados siguiendo el mismo procedimiento, todos ellos capturados el mismo día durante la visita al museo (incluyo el archivo de vídeo original por si quieres hacer pruebas):

Figure, 1970 by Carlos M on Sketchfab (fichero de vídeo fuente)

The First Swallows, 1963 by Carlos M on Sketchfab (fichero de vídeo fuente)

The Dance, 1945-1946 by Carlos M on Sketchfab (fichero de vídeo fuente)

Conclusión

Con el proceso expuesto en la entrada se demuestra la facilidad con la que se puede escanear un objeto 3D con la ayuda de un teléfono móvil. Aunque la extracción de fotogramas no consigue imágenes de tanta calidad como la fotografía individual (de hecho, muchos fotogramas eran desechados por el software de fotogrametría por estar borrosos o movidos), el resultado es sorprendente y con una buena cámara y un buen barrido, se pueden conseguir resultados sorprendentes.

Esta técnica es especialmente útil para casos en los que no es posible ubicar el objeto en una peana o cuando es muy grande (por ejemplo, para escanear una estatua en un parque). Sin duda, es una técnica que puede ser muy interesante por su sencillez para trabajarla en el aula o durante una actividad extraescolar.

Bonus

Hablando de estatuas en el parque, este el resultado de procesar con esta técnica un vídeo a un tótem tallado en la madera típico de Lituania que encontramos en un bosque al sur del país. El vídeo era un barrido con vuelta completa al monumento.

Escultura en el bosque by Carlos M on Sketchfab

black and gray mining rig

Escaneado 3D sin tarjeta gráfica CUDA

En la entrada anterior he hablado de técnicas de escaneado 3D basadas en la fotogrametria. Todo ello, usando un software abierto, gratuito y multiplataforma, como es Meshroom, por tanto accesible para toda aquella persona que quiera iniciarse en este apasionante mundo.

No obstante, sí que comentaba que había una limitación en Meshroom: es necesario disponer de una tarjeta gráfica Nvidia «CUDA enabled» ya que algunas partes del proceso están implementadas mediante unidades de procesamiento gráfico CUDA y, por tanto, necesitan un hardware compatible con ellas.

Esto puede ser un impedimento, especialmente, teniendo en cuenta que, habitualmente, los ordenadores que se tienen en los centros educativos no disponen de hardware de acceleración 3D (GPU). ¿Qué hacemos en estos casos?

Personalmente, me he encontrado con esta situación y tras darle algunas vueltas (y buscar un poco por Internet), he dado con tres posibles soluciones, que paso a explicar a continuación.

Para ver las diferencias entre una y otra, voy a procesar el siguiente objeto en un ordenador sin tarjeta gráfica (un portátil con gráfica integrada):

Capitán vintage

La escena está compuesta por 82 fotografías desde diferentes ángulos.

Veamos las diferentes soluciones:

Solución #1: Evitar las partes del proceso que usan CUDA

Esta es la solución más fácil de implementar, pero también la que da peores resultados. Se trata de eliminar del proceso de Meshroom aquellos pasos en los que haga falta el uso de CUDA. Simplemente, esos pasos no se harán (y por tanto, el reconocimiento del objeto será peor).

En concreto, los únicos pasos que requieren de una tarjeta gráfica con acceleración 3D (GPU) son los relativos a la creación del mapa denso. Si no hacemos mapa denso, problema resuelto.

Para ello, basta con eliminar los nodos en el editor de grafo de flujo de Meshroom. Hay que eliminar los siguientes: PrepareDenseScene, DeepMap y DeepMapFilter.

Eliminando un nodo (paso) en Meshroom

Una vez eliminados, conectamos el output del nodo anterior (StructureFromMotion) al input del siguiente (Meshing):

Para unirlos, pinchamos en el circulito blanco de output y arrastramos hasta el de input

Con este pequeño cambio, haremos que Meshroom funcione hasta el final en cualquier ordenador sin tarjeta gráfica.

Los puntos fuertes de esta solución es que es muy fácil de hacer y no requiere de ningún software ni recurso adicional. Por contra, el resultado deja mucho que desear respecto de un procesado con mapa denso.

Resultado de procesar la escena con Meshroom eliminando esos nodos es esta:

Solución #2: Usar un software que no requiera CUDA

Si queremos obtener unos mejores resultados podemos prescindir de Meshroom que, al fín y al cabo, está diseñado para funcionar con una tarjeta gráfica 3D y probar otro software de fotogrametria que no tenga este requerimiento.

En mi caso, he hecho pruebas satisfactorias con MVE. Multi-View Environment , como Meshroom, es un programa libre, gratuito y multiplataforma que, desde la línea de comandos, permite realizar el proceso de reconstrucción de objetos desde fotografías. El paquete está compuesto por varios programas, cada uno de ellos se encarga de realizar una parte del proceso, por lo que es necesario ejecutarlos uno detrás de otro siguiendo el orden establecido.

En los siguientes enlaces, se pueden encontrar manuales para ponerlo en marcha en los diferentes sistemas operativos:

Lamentablemente, MVE no se distribuye como programa «al uso» y es necesario bajarse los ficheros fuentes y compilarlos, por lo que no es descargar y listo. En los enlaces anteriores se explica, paso a paso, como realizar esta compilación en los diferentes sistemas.

Una vez compilado, el programa se lanza desde el terminal. Hay un comando para cada paso del proceso, al que hay que pasarle la ruta que contiene los archivos que cogerá como fuente y la ruta en la que almacenará los resultados (que a su vez, será la entrada del siguiente comando).

Para simplificar el proceso, he creado un script que realiza de forma consecutiva todos los pasos, solo hay que ejecutarlo en la carpeta de MVE y pasarle la ruta de las imágenes y la ruta en la que ha de escribir el resultado:

Uso:

$ mve-pipeline.sh ruta-imagenes ruta-destino

El punto fuerte de esta solución es que obtiene unos resultados mucho más cercanos a la realidad. El principal inconveniente, la dificultad de instalación y puesta en marcha.

El resultado de procesar la escena con MVE es el siguiente:

Solución #3: Usar procesamiento en la nube

Esta solución tiene un enfoque diferente: en lugar de buscar como ejecutar Meshroom en un ordenador sin GPU, lo que vamos a hacer es ejecutar Meshroom en un ordenador con GPU desde un ordenador sin GPU.

Para ello haremos uso de la computación en la nube a través del servicio Google Colab. Este servicio, disponible a través de una cuenta personal de Google como una herramienta más, permite la ejecución remota e interactiva de comandos en un servidor en la nube (al que se le puede asignar una GPU).

Así, Google Colab nos permite usar durante 12h un ordenador (una máquna virtual) con las siguientes características:

  • GPU: Tesla K80 , con 2496 núcleos CUDA, versión 3.7, 12GB de GDDR5 VRA
  • CPU: Intel Xeon 2.3Ghz , 45MB Cache
  • RAM: ~12.6 GB
  • Disk: ~320 GB

Cada 12 horas, la máquina se elimina, siendo necesario volver a crearla y instalar todo. Si quieres más información, aquí hay un breve tutorial con ejemplos.

Para utilizarlo, basta con ir a https://colab.research.google.com e iniciar sesión con nuestra cuenta personal de Google.

Una vez dentro, seleccionamos Runtime > Change runtime type y seleccionamos GPU.

Activamos la GPU en colab

Ahora creamos dos carpetas input y output. En la carpeta input subimos las imágenes de nuestra escena.

En input se han subido todas las imágenes de la escena

Ahora instalamos Meshroom en colab. Para ello, creamos un fragmento de código y ponemos lo siguiente:

!mkdir temp
!mkdir meshroom
%cd temp!wget -N https://github.com/alicevision/meshroom/releases/download/v2019.2.0/Meshroom-2019.2.0-linux.tar.gz
!tar -xvf Meshroom-2019.2.0-linux.tar.gz -C ../meshroom

Pulsamos el botón de «play» para ejecutar la secuencia de comandos.

Así ejecutamos el fragmento

Ahora, ejecutamos Meshroom, reproduciendo el siguiente fragmento:

/content/meshroom/Meshroom-2019.2.0/meshroom_photogrammetry --input /content/input --output /content/output

El proceso será más lento, pero no tarda mucho más que la ejecución en local.

El comando en ejecución

Esperamos a que se complete el proceso. Una vez termine, en la carpeta output tendremos el resultado, que podemos descargar desde la carpeta output.

Hay que descargar los tres archivos: el png, el mtl y el obj

Si quisieramos procesar otra escena, sólo bastaria borrar las imágenes de input y la salida del output, subir las nuevas imágenes a input y volver a darle a ejecutar al fragmento de código que ejecuta meshroom (no hace falta volver a instalar Meshroom, a no ser que hayan pasado las 12h y se haya borrado la máquina virtual).

Para simplificar el proceso, comparto mi notebook con todos los pasos ya implementados y con comentarios:

Para importarlo a Google Colab, hay que ir a File > Upload Notebook

Importar Notebook

Aunque parezca un proceso complejo, lo cierto es que resulta sorprendentemente sencillo para lo que, en realidad, estamos haciendo. La interfaz de Google Colab hace que la ejecución de comandos sea muy sencilla y que, incluso, se pueda importar una plantilla con los pasos ya preparados. El punto negativo de esta solución es el hecho de que haga falta estar conectado a Internet para poder usarla.

El resultado de procesar la figura con Google Colab es el siguiente:

Conclusiones

Como podéis ver, es posible utilizar Meshroom en equipos sin tarjeta gráfica de diversas maneras. Sin embargo, las soluciones sencillas dan malos resultados y, para obtener mejores resultados hay que recurrir a soluciones más imaginativas o cambiar de programa. Lo bueno es que, una vez preparadas las soluciones, se puede reutilizar el entorno (ya sea en MVE o en Google Colab) para procesar varias escenas, con lo que el tiempo invertido se compensa con resultados que, en algunos casos, no tienen nada que envidiar de los obtenidos con una GPU.

Recursos didácticos mediante escaneado 3D

En los últimos años he estado utilizando la tecnologia 3D en el aula de diversas maneras, algunas de ellas las he comentado en este blog, pero siempre partiendo del diseño mediante la combinación de formas geométricas en 2D y 3D para crear piezas y objetos para que fuesen impresos y, por tanto, materializados en el mundo real.

Una de las aplicaciones de esta tecnología ha sido la de crear en el aula recursos táctiles que puedan dar servicio a personas con discapacidad visual, de acuerdo a los objetivos del proyecto Erasmus+ PRINT3D.

Por ejemplo, el diseño de unas células en 3D puede suponer un recursos muy práctico para enseñar las partes de una célula de forma táctil en clase de biología.

Células eucariotas y procariotas

Las posibilidades de este campo son muchas y muy variadas, pero el problema llega cuando no se trata de diseñar una abstracción, sino de recrear un objeto real. ¿Cómo representamos táctilmente, por ejemplo, la morfología de la concha de un molusco en una clase de biología?

Fuente: http://www.gastrosoler.com

En este caso, el diseño geométrico se ve muy limitado para ofrecer una solución aceptable.

Es en este punto donde hace su entrada el proyecto Erasmus+ AMUSING, completando a su predecesor PRINT3D a través de invertir el punto de vista: ahora no se trata de trasladar los objetos de la pantalla a la realidad, sino de la realidad a la pantalla.

Efectivamente, este nuevo proyecto pone el foco en el escaneado 3D; Si no podemos diseñar una concha de molusco realista combinando formas geométricas, la obtendremos directamente de la realidad y luego, la compartimos en Internet para que otras personas puedan imprimirla en 3D y utilizarla como recurso en el aula.

Imagen
Una concha escaneada y replicada a varios tamaños y calidades.

Fotogrametría: La clave de todo esto

Lo mejor de todo es que las técnicas de escaneado 3D se encuentran en un momento de madurez muy interesante, lo que las pone al alcance del aula sin necesidad de una gran inversión económica ni de la necesidad de tener unos conocimientos técnicos muy elevados.

En ese sentido, me atrevería a decir que estas técnicas tienen una curva de aprendizaje mucho mas pronunciada que la impresión 3D: se obtienen resultados sorprendentes al poco tiempo de empezar.

La tecnología clave detrás del escaneado 3D del que voy a hablar aquí es la fotogrametria. Según la Wikipedia « es el arte, ciencia y tecnología para la obtención de medidas fiables de objetos físicos y su entorno, a través de grabación, medida e interpretación de imágenes y patrones de energía electromagnética radiante y otros fenómenos”.

Lo cierto es que la fotogrametría ya lleva bastante tiempo entre nosotros y, aunque no nos demos cuenta, está presente en multitud de aplicaciones tecnológicas actuales.

La fotogrametria se usa mucho para la obtención de mapas 3D. Fuente: Wikipedia

De forma muy resumida, se trata de hacer fotos de un objeto desde diferentes ángulos para calcular las diferencias entre las imágenes y así interpretar medidas y, por tanto, la forma.

No es un proceso conceptualmente sencillo, pero afortunadamente, como veremos a continuación, el software actual permite realizarlo de una manera intuitiva sin necesidad de configurar parámetros avanzados.

El proceso con más detalle

Antes de ver el software, vamos a ver los pasos, a grandes rasgos, se realizan para obtener un modelo en 3D a partir de un objeto real.

  • Toma de imágenes: En primer lugar, hay que tomar fotos desde diferentes ángulos. Se recomienda que la iluminación sea buena y la foto esté bien enfocada. Por ello, es recomendable usar un trípode y, si puede ser, ubicar el objeto en una peana giratoria para facilitar su giro. Lo ideal es hacer barridos 360º desde varios ángulos, para capturar todos los detalles del objeto (por ejemplo, con la cámara a 10º, luego a 40º y finalmente a 80º). Es importante que las fotos se solapen unas con otras, por lo que el giro del objeto entre foto y foto, debería de ser inferior a 15º).

Hasta aquí es lo que hacemos nosotros, de lo que viene ahora ya se encarga el programa de fotogrametría cuando le pasamos las fotos.

  • Detección de puntos análogos (Feature extraction): Se analizan las fotos y, gracias a los solapamiento, se detectan los puntos homólogos, es decir, detalles del objeto que aparecen en varias fotos.
  • Comparación de puntos homólogos (Feature matching): Se comparan los puntos homólogos de las diferentes imágenes para encontrar coincidencias, es decir, el mismo punto en diferentes imágenes. Esta es la clave del proceso y de la cantidad de puntos que relacione, dependerá la calidad del modelo.
  • Triangulación (Structure from motion): A partir de los puntos homólogos y de los cambios detectados entre un punto homólogo en una imagen y el mismo punto en otra, se calcula el desplazamiento del objeto y su nube de puntos (coordenadas que definen el volumen del objeto).
  • Creación del mapa denso (Deep map): A partir de la triangulación, se interpolan nuevos puntos homólogos para acabar de completar el modelo y darle mayor detalle a la nube de puntos. Esta fase es la más laboriosa y suele requerir del uso de una tarjeta gráfica.
  • Mallado (Meshing): Una vez interpolado el mapa denso, se teje una malla en 3D, como una estructura de alambre, que recrea el volúmen detectado.
  • Texturizado (Texturing): Es el proceso final en el que se añade a la malla una capa con una imagen generada a partir de las fotografias en las que se le de el aspecto real del objeto.

Y con esto estaría todo, si el programa ha podido trabajar con las fotos proporcionadas, obtendríamos un archivo con extensión OBJ en el que encontraríamos el objeto en 3D.

Ya os adelanto que esto no siempre ocurre y, a veces el programa muestra un error porque no ha podido procesar bien las imágenes. Entonces, hay que descartar sesiones fotográficas enteras por una mala iluminación o enfoque, que hace que el software de fotogrametría no pueda sacar nada en claro del objeto.

Para evitar que eso ocurra, en el siguiente punto, recomiendo el uso de algunos utensilios relativamente fáciles de encontrar para optimizar la toma de fotografías. Pero antes, finalicemos la explicación de este proceso, pues si todo ha ido bien, una vez generado el archivo OBJ, volvemos a tomar protagonismo en un último paso:

  • Revisión del modelo: Tenemos que reparar los posibles errores que aparezcan en el modelo generado: caras sin cerrar, vértices duplicados, etc. Esto lo podemos hacer con cualquier software de edición 3D (Meshlab, Microsoft 3D builder…). La mayoría de ellos incorporan asistentes para reparar el modelo. También en este paso, tenemos que eliminar aquellas zonas del diseño que no sean relevantes y que se han generado en el modelo: partes de la peana, objetos del fondo, etc. Normalmente, basta con seleccionarlos en un programa de edición 3D y darle a la tecla suprimir.

Con esto ya estaría todo, y tendríamos nuestro modelo en 3D para imprimir (enviar el OBJ a Cura 3D) o para compartir (subirlo a un repositorio online como Sketchfab).

Recursos necesarios

Como se ha comentado, la toma de imágenes es un paso crítico que va a afectar a todo el proceso posterior.

Lo ideal es disponer de un mini estudio fotográfico, para conseguir imágenes con la mejor calidad posible. Tampoco hace falta un montaje profesional, aunque cuanto más profesional sea, mejores imágenes se obtendrán.

A continuación, os propongo una serie de elementos, relativamente fáciles de encontrar para montar ese mini estudio con el que empezar con la fotogrametría (con * lo que es imprescindible, el resto es opcional):

  • Cámara digital* No hace falta que sea una reflex, pero si que es muy recomendable que tenga una buena lente y se pueda configurar en modo manual.
  • Trípode: Para evitar vibraciones en la cámara, especialmente, si se ha puesto una velocidad de obturación baja. Nos ayudará también a establecer las diferentes alturas e inclinaciones de cámara con la que haremos el barrido 360º.
  • Plato giratorio: Esto ayuda a realizar el barrido 360º del objeto. Vamos girando el plato de 15º en 15º, y hacemos una foto en cada paso. Puede ser una peana giratoria de una televisión.
  • Caja de luz y focos: nos van a permitir obtener una iluminación uniforme y sin sombras.
  • Un cartón o tela de croma, que ayudará a eliminar detalles del fondo de la imagen y, por tanto, a agilizar el procesado de las imágenes.
  • Ordenador *, si tiene tarjeta gráfica NVidia (compatible con CUDA), mejor.

Como se puede ver, con una buena cámara y un buen ordenador ya podemos trabajar. Y, sí, también valen las cámaras del móvil.

Sobre el software

Una vez tomadas las fotografías, hay pasarlas al software de fotogrametria para que haga la magia.

Existen multitud de programas de fotogrametria, algunos gratuitos, otros de pago. Entre los primeros, cabe destacar Meshroom, que es un software libre multiplataforma bastante versátil, intuitivo y que, además, da muy buenos resultados.

En el siguiente vídeo se puede ver su funcionamiento:

Se puede descargar de forma gratuita desde su web:

Además, tambien es interesante disponer de un programa de visualización de modelos 3D, con el que veremos los resultados. En Windows se puede usar el 3D Builder que se incluye con Windows 10. En GNU/Linux se puede usar Meshlab.

Ejemplo de aplicación

Por poner un ejemplo práctico del proceso, vamos a volver sobre el ejemplo del gasterópodo que queremos usar en la clase de biología. Nos han prestado uno y lo preparamos todo para fotografiarlo.

Cámara, trípode, peana giratoria y una tela roja para homogeneizar el fondo.

Hemos obtenido 36 fotografías, haciendo barridos 360º (vuelta completa a la peana) en 3 ángulos de cámara diferentes. El resultado tiene este aspecto:

Una de las fotos

Comparto las fotos, por si alguien quiere hacer pruebas:

Dataset 36 fotos gasteropodo

Una vez hemos hecho las fotos, las arrastramos en el Meshroom:

Arrastrar y soltar

Ahora pulsamos el botón Start para que empiece el proceso. Como se puede ver, en la parte inferior hay un grafo en el que se detallan todos los pasos que hace el programa. Si os fijáis, los pasos son los mismos que he detallado más arriba.

Durante el proceso veremos como el programa va pasando por los diferentes cuadrados, cambiando de color: naranja significa en proceso, verde, paso completo. Si sale rojo es porque el paso ha fallado.

El proceso puede tardar minutos u horas. Dependerá del número y tamaño de las imágenes, de la potencia del ordenador y de la presencia o no de una tarjeta gráfica.

Si todo va bien, podremos ver la nube de puntos generada en el área de representación de la derecha.

La nube de puntos

Un detalle muy interesante de esa visualización es que también nos muestra la ubicación de la cámara que ha calculado para cada imagen. Si os fijáis, al final lo que se ha intentado con los diferentes barridos es emular una semiesfera.

Para ver el resultado del proceso, es decir, el objeto generado, hacemos clic derecho sobre el último nodo (Texturing) y seleccionamos Open folder. Esto abrirá la carpeta en la que está el archivo OBJ que ha generado Meshroom.

Esto abre el directorio donde está el archivo resultante

Si abrimos el archivo OBJ en el Meshlab, veremos como ha capturado a la perfección la forma del caparazón:

Faltaría eliminar la base negra con el mismo programa

Ahora, puedo llevar este archivo OBJ a la impresora 3D para replicarlo tantas veces como quiera:

El objeto «fotocopiado»

También puedo subir el archivo OBJ a algún repositorio de internet para compartirlo o visualizarlo de forma interactiva en diferentes medios, como este blog:

Gasterópodo Cypraecassis rufa by Carlos M on Sketchfab

En caso de no tener un ordenador con tarjeta gráfica CUDA enabled, lee esta entrada para ver como poder obtener buenos resultados con fotogrametria.

Conclusiones

La fotogrametría es un proceso maduro para la generación de modelos en 3D a partir de objetos del mundo real, habitualmente vinculada a la generación de mapas en 3D. Sin embargo, como hemos visto, puede ser fácilmente utilizada en el aula para generar objetos de aprendizaje, ya sea gracias a la obtención de un modelo 3D interactivo o bien por la posibilidad de replicar objetos.

Sin embargo, el proceso, aunque aparentemente sencillo y accesible gracias a la existencia de software libre multiplataforma, requiere de una cierta mano para la fotografía, ya que la toma de imágenes es el paso clave para obtener buenos resultados. Lo que, en realidad, es una buena excusa para introducir en el aula algunas nociones sobre la fotografía digital, lo que tampoco está de más.