Cómo hacer un modelo 3D de tu cabeza con Blender y una cámara RealSense

Estoy muy entusiasmado con la sensación de la informática: una idea en la que las cosas inteligentes detectan el entorno, se conectan y luego se convierten en una extensión del usuario. Como evangelista de Intel Software (y un autodidacta programador aficionado), tengo la suerte de experimentar con estas posibilidades utilizando la tecnología de vanguardia de Intel. Anteriormente, había escrito sobre el escaneo 3D del mundo a tu alrededor en tiempo real y cómo colocar un objeto virtual en él; Sin embargo, en este tutorial, me gustaría explicar cómo hacer lo contrario, escaneando en 3D usted mismo y luego agregando ese escaneo al mundo virtual..

Más específicamente, nosotros:

  1. Escanee su cabeza usando una cámara RealSense y el SDK.
  2. Convierta el archivo 3D del formato OBJ al formato PLY (para editar en Blender).
  3. Convertir los colores de vértice en un mapa de textura UV.
  4. Edita la malla 3D para darle un vértice inferior y un conteo de polietileno..

Terminaremos con una malla tridimensional de tu cabeza, lista para usar en Unity. (En el siguiente tutorial, veremos cómo convertir esto en Unity y en qué podrías usarlo en un juego).

Necesitará:

  • Una cámara Intel RealSense (o computadora con cámara RealSense integrada)
  • Una computadora con un procesador Intel Core de 4ta generación (o mejor)
  • El SDK de RealSense (que se puede descargar gratis)
  • MeshLab (gratis)
  • Licuadora (gratis)

Escaneando tu cabeza

Después de instalar el SDK, vaya a la Barra de accesos (en Windows 8) o al Menú de Inicio (en Windows 7 o 10) y busque RealSense SDK Sample Browser. Encuéntrelo en la lista, haga clic derecho y seleccione Ejecutar como administrador.

En el Navegador de muestra encontrará una sección llamada Muestras comunes. Estas son muestras que funcionarán tanto en la cámara RealSense frontal como en la posterior. Encuentra la muestra llamada Escaneo 3D (C ++).

Cómo escanear tu cabeza

  • Seleccionar correr desde el Escaneo 3D (C ++) sección del navegador de muestra.
  • Ponga su cabeza frente a la cámara y la verá en la vista del escáner. Mantenlo quieto hasta que aparezca la segunda ventana..
  • Una vez que aparezca la segunda ventana, comience a rotar en una dirección (lentamente), luego invierta la dirección e intente girar completamente. 
  • Una vez que haya hecho un ciclo completo, incline la cabeza hacia atrás y luego hacia adelante, luego quédese quieto. Durante los últimos segundos. mantén tus ojos mirando hacia adelante justo por encima de la cámara, para que tus ojos se fijen en una posición estática.
  • Cuando se complete el escaneo, se abrirá un navegador, lo que le permitirá arrastrar y rotar el modelo. El modelo se guardará en su Documentos carpeta como 3Dscan.obj.
  • Puede volver a ejecutar la muestra tantas veces como desee para obtener un escaneo con el que esté satisfecho..

Consejos para escanear

  • La muestra está diseñada para rastrear un objeto 3D rígido en el espacio a medida que gira frente a la cámara. Esto significa que puedes escanearlo desde múltiples lados.
  • Si una parte del objeto está girando y otra está quieta, confundirá el algoritmo de seguimiento y terminará con un escaneo defectuoso. Por lo tanto, cuando escanee su cabeza, no solo gire el cuello para escanear; en cambio, gira todo el torso.
  • Puede inclinar hacia adelante, inclinar hacia atrás, girar a la izquierda, girar a la derecha y girar. Con la práctica, es posible escanear un objeto desde todos los ángulos.
  • Debe escanear en un área con iluminación uniforme. Evite las sombras y los reflejos especulares, ya que se convertirán en su textura 3D.

Convertir a formato PLY

El formato OBJ es el formato predeterminado que obtiene del escaneo. Para usarlo en Blender (y luego en Unity), lo convertiremos a formato PLY usando una herramienta gratuita llamada MeshLab. Entonces, descargue, instale y ejecute MeshLab, si aún no lo ha hecho.

Desde el Expediente menú, seleccione Importar. Encuentra el 3Dscan.obj archivo que creaste en la sección anterior.

Después de que hayas importado tu objeto, puede estar en su lado. Puede hacer clic con el botón izquierdo en la parte inferior del objeto y arrastrar hacia arriba para rotar el objeto y examinarlo. 

Deberías ver la malla texturizada con color. La información de color se almacena como colores de vértice, lo que significa que cada vértice está coloreado con los píxeles obtenidos de la cámara RGB cuando escanea su cabeza. 

Hacer clic Archivo> Exportar malla como. En el cuadro de diálogo que aparece, seleccione Formato de archivo Stanford Polygon (* .ply) desde el Los archivos de tipo desplegable:

Guarda el PLY resultante en algún lugar donde puedas encontrarlo más tarde..

Convertir los colores del vértice en un mapa de textura UV

La idea aquí es importar el archivo 3D a Blender, hacer una copia del mismo, limpiar la copia y mapear los colores de los vértices como un mapa UV para la nueva versión duplicada.

Descarga, instala y ejecuta Blender, si aún no lo has hecho.

Importar el objeto a Blender

Crea un nuevo proyecto en Blender, selecciona Importar> Stanford (.ply), luego seleccione el archivo PLY que acaba de exportar desde MeshLab:

Después de importarlo, verás que las texturas no son visibles:

Sin embargo, si cambias a Textura En esta vista, verá que los colores RGB del escaneo ahora se asignan al modo Textura:

Use este menú para cambiar a Textura ver.

Para ver los colores correctamente, vuelva a cambiar el modo de visualización, esta vez, para Material. En el panel de la derecha, seleccione Materiales icono, y luego crear un nuevo material. 

En el editor de paneles, establecer Sombreado a Sin sombra, y en el Opciones, encender Pintura de color vértice. Esto establece con éxito los colores de vértice para el material del objeto.

Ahora, esto no es todavía una malla viable para nosotros. Está lleno de agujeros, es áspero, y el conteo de poli es mucho más alto de lo que nos gustaría que fuera, si lo vamos a usar en un juego.

Necesitamos crear una versión de esta malla que podamos limpiar, pero mapear esta textura de color de vértice como un mapa UV. Esa versión es la versión que traeremos a Unity..

Crea un Duplicado de la Malla

Seleccionar Objeto> Objetos duplicados y golpear Entrar. No muevas el mouse.

A continuación, seleccione Objeto> Mover a Capa, y luego seleccione el cuadrado a la derecha de la capa actual (el segundo cuadrado de la izquierda en la fila superior).

Ve a la Buscador de activos y renombra tus mallas. Nombra uno Malla original y el otro Segunda malla. Esto te ayudará a distinguirlos..

Reducir la cuenta polivinílica del duplicado

Seleccione la segunda malla, seleccione la capa relevante y cambie el modo de vista Material a Sólido.

Luego, en el panel de la derecha, haga clic en el icono que parece una llave para agregar un modificador. Vamos a reducir el recuento de poli de esta malla y limpiarlo..

Seleccionar Herramientas> Remesh. En este diálogo, configure el Oct tree a entre 7 y 8. Conjunto Modo a Suave, y enciende Sombreado suave. Esto hará que pierdas la asignación de material:

Hacer clic Aplicar. Ahora tiene una malla más limpia a la que puede aplicar el vértice y el mapa UV.

Aplicar el mapa de vértices y UV.

Entrar en Editar Modo en esta segunda malla. Hacer clic Seleccionar> Seleccionar todo.

Crea una nueva ventana y configúralo en UV / Editor de imágenes Modo para ver el mapa UV.

En el 3D ventana, seleccione Malla> UV Unwrap> Smart UV Project.

En el Mapa UV ventana, seleccione Nuevo Para crear una textura. Apagar Alfa. Nombra a la textura el nombre que te gustaría darle a tu modelo final.

Cambiar a Objeto modo. Verás un modelo negro y un mapa UV negro. Esta bien!

Ahora selecciona ambas capas por Cambio-Haciéndolos clic para hacerlos visibles..

Seleccione ambas capas ... ... y su panel de vista se verá así.

En el Buscador de activos, Seleccione la malla original. Haga clic en el icono de la cámara..

En el Hornear sección, enciende Seleccionado para Activo. Asegúrate de eso Hornear a color vértice esta apagado.

En el Escena seccion, set Manejo del color a Ninguna.

En el Activo En el menú, seleccione la malla original. Entonces, mantenga presionada Cambio y seleccione la segunda malla. (Debe hacerlo en ese orden.) Asegúrese de que ambas capas sean visibles con el ojo y los íconos de la cámara..

Haga clic en el icono de la cámara. En el Hornear sección, haga clic en Hornear.

Ahora deberías tener una textura mapeada. Para ver esto, desactive la primera capa, de modo que solo vea la capa con la segunda malla. Selecciona el Textura Ver y verás tu malla texturizada con tu mapa UV.. 

Notará algo de extravagancia donde la imagen rellena las áreas faltantes de su malla:

Puedes cambiar a Pintura de textura modo de limpiar esos. También puedes cambiar a Esculpir modo para rellenar las áreas que faltan, así como para limpiar o agregar características a su malla. 

Exportar la malla

Una vez que haya limpiado su malla, puede prepararse para exportarla:

  1. Asegúrese de que el mapa UV tenga el mismo nombre que la malla, y que esté en el mismo directorio que la malla.
  2. Ve a la Mapa UV ventana, seleccione Imagen> Guardar como, y navega hasta el directorio donde guardarás la malla..
  3. Seleccionar Archivo> Exportar a .FBX, y escribe el mismo nombre que le diste al mapa UV.

Tu modelo esta completo!

Conclusión

Ha escaneado en su cabeza, reducido el policuenta, limpiado el modelo y exportado como un modelo 3D listo para usar en otras aplicaciones. En un futuro tutorial, importaremos esta malla 3D a Unity y veremos cómo podría usarse en los juegos..

El programa Intel® Software Innovator es compatible con desarrolladores innovadores independientes que muestran la capacidad de crear y demostrar proyectos de futuro. Los innovadores aprovechan las oportunidades de ponencia y demostración en eventos de la industria y reuniones de desarrolladores.

Zona de desarrolladores Intel® ofrece herramientas e información práctica para el desarrollo de aplicaciones multiplataforma, información de plataforma y tecnología, ejemplos de código y experiencia de pares para ayudar a los desarrolladores a innovar y tener éxito. Únete a nuestras comunidades para la Internet de las CosasAndroide*Tecnología Intel® RealSense ™, Código modernoDesarrollo de juegos y Windows * para descargar herramientas, acceder a kits de desarrollo, compartir ideas con desarrolladores afines y participar en hackathons, concursos, roadshows y eventos locales.