INSTITUTO POLITÉCNICO NACIONAL CENTRO DE INNOVACION y DESARROLLO TECNOLOGICO EN COMPUTO

Reconstrucción Facial Tridimensional Forense en

Tesis Que para obtener el grado de Maestría en Tecnología de Cómputo

Presenta Ing. Rocío García Cortés

Directores de tesis M. en . Jesús A. Álvarez Cedillo Dr. José Guadalupe Trujillo Ferrara

Octubre 2012.

- 1 - - 2 - CARTA CESIÓN DE DERECHOS

En la Ciudad de México el día 29 del mes de Octubre del año 2012, el (la) que suscribe García Cortés Rocío alumno (a) del Programa de Maestría en Tecnología de Cómputo con número de registro B101967, adscrito al Centro de Innovación y Desarrollo Tecnológico, manifiesta que es autor (a) intelectual del presente trabajo de Tesis bajo la dirección de M. en C. Jesús A. Álvarez Cedillo y el Dr. José Guadalupe Trujillo Ferrara y cede los derechos del trabajo intitulado “Reconstrucción Facial Tridimensional Forense en Blender”, al Instituto Politécnico Nacional para su difusión, con fines académicos y de investigación.

Los usuarios de la información no deben reproducir el contenido textual, gráficas o datos del trabajo sin el permiso expreso del autor y/o director del trabajo. Este puede ser obtenido escribiendo a la siguiente dirección [email protected]. Si el permiso se otorga, el usuario deberá dar el agradecimiento correspondiente y citar la fuente del mismo.

Rocío García Cortés

- 3 - Resumen:

En este trabajo se desarrolló una metodología para realizar reconstrucciones de Rostros forense tridimensional, a partir de un modelo de cráneo 3D, por medio de la herramienta de diseño Blender.

El presente trabajo permite agregar detalles, especifcar texturas y personalizar e incluso cambiar el origen étnico. Se basa en el trabajo reportado por Krogman et Al, 1962.

La idea principal planteada en el trabajo de Krogman radica en el empleo de triangulaciones construidas con los puntos paramétricos y han sido ampliamente documentados en la literatura por la reconstrucción forense clásica y medica. A partir de ese punto , se le dio un tratamiento gráfco para generar una reconstrucción tridimensional aproximada.

Los resultados obtenidos en el método propuesto produce un modelo, que aunque no es exacto del todo, sin embargo permite evaluar un rostro aproximado para su posterior búsqueda en bases de datos policiales y médicas.

- 4 - Abstract:

In this work we developed a methodology for three-dimensional reconstructions of forensic Faces, from a 3D skull model, using the design tool Blender.

This paper can add details, textures and personalize specify and even change ethnicity. It is based on the work reported by Krogman et Al, 1962.

The main idea proposed in Krogman work lies in the use of triangulation constructed parametric points and have been widely documented in the literature for the classical and medical forensic reconstruction. From that point, he was given a graphic treatment to generate an approximate three-dimensional reconstruction.

The results obtained from the proposed method produces a model, although it is not entirely accurate, however approximate evaluates a face for further search police databases and medical.

- 5 - A mis padres: Alejandro y Enedina por brindarme su apoyo incondicional y por alentarme siempre que lo necesito.

A mi hermana: Mónica por apoyarme y también ser un gran ejemplo a seguir, por sus consejos y ser una gran amiga para mí.

Al Instituto Politécnico Nacional: Por ser la institución que me ha brindado tanto conocimiento que he estado desarrollando.

A Mis directores de Tesis: Jesús A. Cedillo por brindarme su apoyo incondicional, su tiempo, y sus consejos y brindarme su amistad. José G. Trujillo, por darme su confanza al realizar este trabajo y apoyarme.

A mis maestros: Por compartirme parte de su conocimiento y su tiempo durante esta etapa académica.

A mis amigos y compañeros: Que siempre me han apoyado, y escuchado, así como también a todas aquellas personas que siempre estuvieron cerca.

- 6 - Índice General Resumen:...... 4 Abstract:...... 5 Capítulo 1 Introducción...... 10 1.1. Planteamiento del Problema...... 10 1.2 Justifcación...... 10 1.3 Objetivo General...... 11 1.3.1 Objetivos Particulares...... 11 1.4 Metodología de Investigación...... 11 Capítulo 2 Técnicas de Reconstrucción Forense...... 13 2.1 Introducción...... 13 2.2 Antecedentes...... 13 2.3 Reconstrucción de Rostros...... 14 Capítulo 3 Modelos Gráfcos y Reconstrucción Gráfca...... 25 3.1 Modelos Gráfcos...... 25 Importación de Objetos...... 28 3.2 Escena...... 29 3.3 Operaciones Gráfcas de Objeto...... 33 Seleccionar...... 34 Mover...... 34 Rotar...... 35 Escalar...... 36 3.4 Operaciones Gráfcas de Edición...... 36 3.5 Material en Blender...... 39 3.6 Mallas...... 42 Capítulo 4 Reconstrucción Forense...... 45 4.1 Problema a Resolver...... 45 4.2 Metodología...... 45 4.2.1 Reconstrucción Física...... 45 4.2.2 Creación del Modelo...... 47 4.3.1 Obtención del modelo gráfco...... 51 4.3.2 Ajuste de Parámetros de Escena...... 55 4.3.3 Colocación de Puntos Craneométricos...... 57 4.3.4 Triangulación...... 61 4.3.5 Colocación de Objetos Comunes...... 65 4.3.6 Acabados...... 70 5. Resultados...... 72 5.1.1 Creación del molde...... 72 5.1.2 Reconstrucción Manual...... 73 5.2 Reconstrucción por Computadora...... 74 6. Conclusiones ...... 84 Trabajos a Futuro...... 85 REFERENCIAS...... 86 Anexos...... 88

- 7 - A. Código ...... 88 B. Tejidos Blandos en México...... 95

Índice de fguras Figura 2.3.1 Registro de datos...... 15 Figura 2.3.2 Captura de Fotografías realizadas...... 16 Figura 2.3.3 Maxilar superior ...... 16 Figura 2.3.4 Reconstrucción de Bach...... 18 Figura 2.3.5 Dr. Wilton Krogman...... 20 Figura 2.3.6 Técnica Dr. Krogman...... 21 Figura 2.3.7: Primer sistema computarizado de reconocimiento de rostros[9]...... 22 Figura 2.3.8 Reconstrucción Facial [11]...... 23 Figura 2.3.9 Software Caramex...... 24 Figura 3.1.1 Vértice...... 26 Figura 3.1.2 Quad...... 27 Figura 3.2.3 Vértice...... 27 Figura 3.2.4 Arista...... 28 Figura 3.2.5 Cara ...... 28 Tabla 3.1. Formatos de Objetos...... 29 Figura 3.2.1. Escena...... 30 Figura 3.2.2. Selector de escena...... 30 Figura 3.2.3. Nueva Escena...... 31 Figura. 3.2.4. Agregar cámara...... 32 Figura 3.2.5 Iluminación...... 33 Figura 3.3.1 Modo Objeto...... 33 Figura 3.3.3 Selección del Objeto...... 34 Figura 3.3.4 Mover objeto...... 35 Figura 3.3.5 Rotación en ejes, x, y, x...... 35 Figura 3.3.6 Escalamiento en el eje 'z' ...... 36 Figura 3.4.1 Modo Edición...... 36 Figura 3.4.2 Objeto en Modo Edición...... 37 Figura 3.4.3 Selección de vértices...... 37 Figura 3.4.4 Menú de elección de edición...... 38 Figura 3.4.5 Modo Edición-Arista...... 38 Figura 3.4.6 Modo Edición-Caras...... 39 Figura 3.5 Botón Material...... 39 Figura 3.5.1 Botón Nuevo Material...... 40 Figura 3.5.2 Lista de Materiales...... 40 Figura 3.5.3 Opciones de Pre-visualización...... 42 Figura 3.6 Efectos de Suavizado...... 43 Figura 3.6.1 Efecto Sombreado Suave...... 43 Figura 3.6.2 Efecto Suavizado Modo de Edición...... 44 Figura 3.6.3 Efecto Auto suavizado...... 44

- 8 - Figura 3.6.4 opciones de Smooth en el menú de Object Tools...... 44 Figura 4.2.1 Cráneos Humanos...... 46 Figura 4.2.2.2 Creación del molde de silicón...... 48 Figura 4.2.2.3 Moldes con el modelo dentro...... 50 Figura 4.2.2.4 Sacando el modelo del molde y detalles...... 50 Figura 4.2.2.5 Modelo de Cráneo Final ...... 51 Figura 4.3.1 Kinect de Microsoft utilizado para obtención de objeto...... 52 Figura 4.3.1.2 Calibración de la cámara del Kinect...... 53 Figura 4.3.1.3 Ejemplo de obtención de puntos con el Kinect...... 53 Figura 4.3.1.4 Volumen ...... 54 Figura 4.3.1.5 Modelo del cráneo .obj...... 55 b) Selección de Unidades...... 56 Figura 4.3.2.1 Confguración de Escena...... 56 a) Menú desplegable ...... 57 b)Parámetros ajustados...... 57 Figura 4.3.2.2 Verifcación Unidades de Escena...... 57 Figura 4.3.3.1 Puntos Craneométricos...... 58 Figura 4.3.3.2 Puntos Craneométricos Digital...... 59 Figura 4.3.4.1 Conjunto de vértices...... 63 Figura 5.3.4.2 Triangulación ...... 64 Figura 4.3.5.1 Rasgos Craneales...... 65 Figura 4.3.5.2 Rasgos Morfológicos...... 66 Figura 4.3.5.3 Biblioteca de objetos comunes Nariz...... 67 Figura 4.3.5.4 Biblioteca de objetos comunes Orejas...... 68 Figura 4.3.5.5 Colocación de Objetos Nariz y Orejas...... 69 Figura 4.3.6.1 Ejemplo de Acabado...... 71 Figura 5.1.1 Modelo de Resina ...... 72 Figura 5.1.2.1 Primer Reconstrucción Manual de Rostros...... 73 Figura 5.1.2.2 Segunda Reconstrucción Manual de Rostros...... 74 Figura 5.2.1 Modelo de Cráneo...... 75 Figura 5.2.2 Triangulación en el modelo...... 76 (a) Vista Posterior (b)Vista Izquierda (c) Vista Derecha (d) Vista Anterior (e) Vista Frontal con el modelo...... 76 Figura 5.2.3 Importación de objetos...... 77 Figura 5.2.4 resultados de Colocación de Piel con diferentes Flats...... 78 (a) flat=0.0108228 (b) flat= -0.0012069 (c) flat= 0.0077745 ...... 78 (d)flat=0.0084275 (e) flat= 0.0145819 (f) flat= 0.0204886...... 78 (g) flat=0.0108228 (h) renderizacion...... 78 Figura 5.2.5 Comparación del resultado de la Reconstrucción Final...... 79 Figura 5.2.6 Programa empleado en NVIDIA...... 79 Figura 5.2.7 Ejemplo Gráfco de Granja Blender...... 82

- 9 - Capítulo 1 Introducción

1.1. Planteamiento del Problema

En México hace algunos años, la incidencia de encontrar cabezas sin el cuerpo es muy grande e incluso común en algunas comunidades. Estas cabezas suelen ser encontrados sin identifcación, o es tan avanzado el grado de descomposición que es imposible ser reconocidos de manera visual, otros fueron devorados o carcomidos por gusanos o animales carroñeros. Los investigadores forenses no cuentan con una herramienta que ayude a resolver esta situación y el trabajo de reconstrucción es manual y lleva mucho tiempo.+

1.2 Justificación

El problema de la representación y reconstrucción de formas tridimensionales ha recibido una enorme atención en investigaciones de visión en la última década. El interés surge debido a que la teoría de formas podría tener aplicaciones en una amplia variedad de campos, pero además de cualquier aplicación práctica el problema tiene mucho interés matemático y científco.

En la antropología forense se llevan a cabo estudios para poder identifcar rostros de personas, que por alguna causa no pueden ser identifcadas debido a que están en completo estado de descomposición o imposibles de identifcar por las circunstancias de su muerte.

Antropólogos forenses han usado distintas técnicas de reconstrucción, la mayoría manual, o por posición de fotografías. Llevando a cabo un largo proceso para lograr dicho objetivo, la reconstrucción manual muchas veces se llevan días en realizarlas, o por medio de otras técnicas una larga jornada de desarrollo.

- 10 - Se pretende lograr es a través de la tecnología, desarrollar una herramienta por la cuál se pueda hacer más sencilla y disminuir en mucho el tiempo requerido para llevar esta tarea de la reconstrucción de rostros, así como la unión de distintas áreas, como son la del área de medicina u antropología forense y el área de computación.

1.3 Objetivo General

Realizar un algoritmo de reconstrucción facial 3D a través del uso herramientas computacionales gráfcas de alto desempeño.

1.3.1 Objetivos Particulares

• Conocer las técnicas de reconstrucción forense de rostros

• Desarrollar un modelo del proceso en un cráneo de cerámica.

• Utilizar y explotar el conocimiento de los algoritmos que se utilizan para elementos gráfcos tridimensionales.

• Utilizar y explotar el uso de programas de desarrollo de alto paralelismo gráfco.

1.4 Metodología de Investigación

Este proyecto se divide básicamente en siete capítulos, los cuáles se describen a continuación:

1. En primer capítulo, se describe la presentación de la problemática contextualizada, la justifcación del problema, así como los objetivos propuestos, la estructura de la tesis.

2. En el segundo capítulo, se muestra un panorama general de los trabajos que se han realizado sobre técnicas de reconstrucción

- 11 - de rostros, a través del paso de los años, métodos que han sido utilizados hasta nuestros días.

3. En el tercer capítulo se hace una presentación acerca de la computación gráfca, como los modelos gráfcos, escenas, operaciones gráfcas de objeto y edición, en Blender, para obtener un previo conocimiento de las herramientas a utilizar posteriormente en el desarrollo de este trabajo.

4. El cuarto capítulo describe el desarrollo del proyecto, pasos que se realizaron para el problema a resolver, la metodología, entre otras, las características de la creación de un molde de resina, adecuación de escena, etc.

5. El quinto capítulo muestra los resultados obtenidos, por parte del desarrollo del trabajo, fguras donde podemos apreciarlos.

6. El sexto capítulo, describe las conclusiones del trabajo, así como los trabajos futuros que pueden desarrollarse tomando como base esta tesis.

- 12 - Capítulo 2 Técnicas de Reconstrucción Forense

2.1 Introducción

La reconstrucción sirve para reconocer que una persona es la misma que se busca, a partir de un conjunto de caracteres óseos o genéticos. Es un proceso que puede ser comparativo o reconstructivo, y esta tiende a ubicar a una persona desconocida dentro de un universo social con el que comparte un territorio, un origen en común o características morfológicas .

2.2 Antecedentes

En el siglo XIX, el Bertillonaje[1] identifcaba sujetos vivos mediante fchas, que incluían los rasgos de la frente, nariz, orejas, dando a cada uno de ellos una escala de 7, según la forma, dimensión o grado de inclinación, incluyendo también el color del iris izquierdo, marcas y estigmas particulares, señales y rasgos distintivos de la fsonomía y tras partes del cuerpo. Se complementaba con fotografías estandarizadas, datos personales como edad, sexo, lugar de nacimiento.

La elaboración de retratos hablados que anteriormente se realizaban a mano alzada, se adelanta actualmente mediante versátiles sistemas computarizados que contienen variantes de distintos segmentos del rostro (como el cabello, frente cejas, ojos, nariz, boca, pliegues, mentón, pómulos, aditamentos), como los sistemas Visionics, Faces, y otros[2].

- 13 - 2.3 Reconstrucción de Rostros

El arte forense ha sido usado por décadas anteriores como una herramienta para la investigación. Se han dado casos como en la ciudad de Oklahoma donde el arte forense documento la información relacionada con el crimen, estas primeras documentaciones tomaban en cuenta narraciones o descripciones por parte de los testigos, con el propósito de identifcar tanto como a las víctimas como a los asesinos. Los diagramas de las escenas del crimen eran utilizados para documentar, esclarecer y reconstruir el incidente. [3]

Con el paso de los años, se mejoró el interés debido a la curiosidad, que se ha tenido para recolectar información para el arte forense. Se ha puesto particular atención para resolver casos en la cual el arte forense ha tenido un rol muy importante. La información se presenta cronológicamente en un orden por áreas o disciplinas.

- Composición de imágenes es una de ellas, se componen de dibujos generales sobre evidencias. - Identifcación y modifcación de la imagen, son los métodos de manipulación, comparación y categorización de las fotografías o dibujos. - Demostración de la evidencia, es la información visual que se muestra en el juicio.

- Reconstrucción y ayuda para la identifcación, son los métodos para la identifcación física humana en sus distintas condiciones.

- 14 - En el año 1800, un ejemplo de cómo se realizaba la reconstrucción se daban a través de los dibujos, los cuáles eran prácticamente pósters de caricaturas (Figura 2.3.1).

Figura 2.3.1 Registro de datos

Un gran avance por parte del antropólogo Alfonso Bertillon, fue el registro de las características de los rostros de Andrew y Abby Borden, los cuáles fueron asesinados en su casa.

La actividad propiamente dicha de analizar o reconstruir rostros tiene sus orígenes a fnales del siglo XIX, muestra de ello son los primeros documentos elaborados por Schaafhausen (1875, 1883), quien publica: Sobre la máscara mortuoria de Shakespare y La cabeza de Raphael.(Figura 2.3.2) [4]

- 15 - Figura 2.3.2 Captura de Fotografías realizadas

En el año de 1884, Langer realizó una investigación en la cuál aportó la relación entre los tejidos blandos del rostro y el cráneo, el mencionó en su estudio que los huesos maxilares (Figura 2.3.3) determinan la forma de la nariz, es decir que la base de la nariz depende de su posición y anchura de órbitas.

Figura 2.3.3 Maxilar superior

- 16 - Posteriormente, se tiene la referencia de los trabajos realizados por Welcker(1883) y Tandler (1990) [5,6], quienes respectivamente identifcaron a los siguientes personajes: el flósofo Immanuel Kant, el músico Johann Sebastián Bach y el compositor Joseph Haydn.

En el trabajo de Welcker, se realizó la identifcación de Schiller con una máscara mortuoria, y la comparación del cráneo de Raphael con un retrato que se tenía de éste.

En este trabajo Welcker se enfocó a resolver si las proporciones y el perfl de su cara coincidan con el perfl que se tenia del cráneo, y si el contorno del cráneo coincidía con el contorno del rostro y linea media, teniendo las medidas del tejido blando de ambas así como sus observaciones pertinentes, concluyo que los contornos del perfl del cráneo y del rostro son dependientes, esto quiere decir que gracias a ello, se podía dibujar el contorno de la cara por medio del cráneo. Una gran aportación que se obtuvo como un reconocimiento hacia el trabajo de Welcker, es que fue uno de los primeros en estudiar las radiografás, para obtener las medidas del tejido blando, en este caso de su propio rostro.

Por otro lado en el año de 1895, His también llevo acabo una investigación para determinar los grosores del tejido blando en distintos puntos del rostro y la cabeza, el uso como instrumento una herramienta que el mismo construyó, la cual trata de una agua con una pieza deslizable (esta es parecida a la que aun se utiliza en el Servicio Médico Forense, en México), así anotando en una tabla los datos del grosor del tejido blando, que se realizaron en diferentes cadáveres.

Estos datos a su vez, sirvieron para trabajar en conjunto a His junto con un escultor de nombre Zefner a reconstruir el rostro de

- 17 - Sebastián Bach a partir de su cráneo. Ellos realizaron al mismo tiempo dibujos del retrato de Bach, para corregir su reconstrucción, como resultado se obtuvo un rostro muy parecido al de este. (Figura 2.3.4)

Figura 2.3.4 Reconstrucción de Bach

Para que fueran aceptados los resultados ellos mismos montaron este rostro en la cabeza de Handel, aunque el parecido era exacto con el

- 18 - retrato de Handel, tanto His como Zefner, lograron acercarse a este cuando estudiaron los grosores del tejido blando.

Posteriormente se empezaron a realizar trabajos de reconstrucciones de cráneos de tumbas antiguas, en los cuales se empezaron a utilizar los datos obtenidos de His y a su vez, ampliando los datos.

En el año de 1907, Czekanowski, detallo más el trabajo sobre comparar los datos craneométricos con los datos obtenidos en este caso en personas vivas. Czekanowski en su trabajo clasifcó a 119 cabezas de cadáveres, en grupos a partir de su sexo, edad y realizo de igual manera con ayuda de la aguja, todos los datos fueron registrados, de las cabezas de estos cadáveres, se calcularon los índices y estos datos los fueron contrastando con las medidas del cráneo, para obtener datos de maceración.

Como resultado a este trabajo, se observó que los tejidos blandos de un hombre es mayor al tejido blando de una mujer, a excepción de los arcos cigomáticos, con la edad el tejido blando aumenta, llegando a un valor máximo cuando se encuentra entre los años 40 y 50.

Czekanoski también hizo otra aportación ya que determinó las diferencias en las medidas craneales justo después de la desecación, con lo cual obtuvó contornos claros de los cráneos y de las cabezas.

Otro trabajo interesante fue el de Virchow en el año de 1912, ya que presentó resultados, en donde mostró hombres de diferentes razas, ya que se realizaron disecciones del rostro, capa por capa, así como también estudió la correlación entre los tejidos blandos y el cráneo, el se auxilió de una máscara que

- 19 - realizaba de yeso, y las colocaba en la mitad del rostro, para obtener las medidas del grosor del tejido blando, como establecer rasgos faciales.

En los años de 1940, en un caso se le dió la importancia al rol de la antropología para determinar la relación entre el cráneo y el rostro. Como parte de un proyecto secreto para un presidente, este trabajo fue desarrollado por parte del Dr. Wilton Krogman (fgura 2.3.5), que preparo dibujos para predecir la morfología del cráneo.

Figura 2.3.5 Dr. Wilton Krogman

En los años de la posguerra se obtuvieron mayores intereses para mejoras las técnicas de reconstrucción de rostros, especialmente entre los rusos, para la identifcación principalmente de las víctimas en los campos de concentración. El Dr. Krogman realizó un experimento tridimensional, para después llevarlo a un escultor para sacar un molde, mientras tanto estudió datos para poder identifcar a través de éste la raza, genero y edad. Se preparó una escultura para la reconstrucción, teniendo esto son comparadas con las fotografías iniciales que se

- 20 - obtuvieron del cráneo. Así es como se desarrollo una de las primeras técnicas de reconstrucción de rostros.

Gracias al trabajo realizado por el Dr. Krogman, se popularizó y propuso la técnica para algunos casos forenses, los futuros especialistas decidieron atender cuidadosamente cada uno de los pasos de la técnica hasta que ésta fuera concluida de la mejor manera posible(Figura 2.3.6) .

Figura 2.3.6 Técnica Dr. Krogman

Krogman en su libro The human skeleton in forensic medicine (1962), presentó detalladamente y paso a paso como reconstruir la cara sobre un cráneo empleado diferente modalidades de la técnica. Posteriormente, la propuesta fue corregida y aumentada en una nueva edición de su libro, en la cuál también colaboro Mehmet Yasar(1986)[7].

La reconstrucción de rostros constituye una de las mayores aportaciones de la Antropología Forense, por cuanto elabora, a partir de un conjunto de huesos, un retrato disponible para divulgar y hacer comparaciones con foto de desaparecidos.

- 21 - El primer sistema computarizado fue desarrollado por la Universidad del Colegio de Londres en los años '80, y fue basado en el sistema de reconstrucción facial para cirugía. Este sistema emplea un escáner de láser y una cámara de video para recolectar las múltiples coordenadas de una superfcie, al mismo tiempo que fue utilizado para crear una colección de datos sobre rasgos faciales. [8].

El mismo sistema de video y láser se utilizó para analizar las parte del cráneo sin identifcar, el cual muestra de manera tridimensional un leve contorno facial sin características. En referencia a este sistema, Vanezis (fgura 2.3.7) y sus colegas declararon que “la predicción de la morfología real de las características de los tejidos blandos tales como las orejas, nariz, labios y ojos, se mantendrán en gran parte como especulativas al menos para un futuro previsible”[8].

Figura 2.3.7: Primer sistema computarizado de reconocimiento de rostros[9]

- 22 - Varios sistemas informáticos se han desarrollado a partir del trabajo de Vanezis y sus colegas. Los datos faciales y cráneos han sido recolectados a través de una variedad de métodos bidimensionales y tridimensionales[10].

En la universidad de Comenius, se ha realizado una aproximación tridimensional más popular que la bidimensional, en esta manipulan diferentes lados de la imágen. La razón de que este método sea más efcaz es debido a que van construyendo músculo por músculo, además que el antropologo Gerasimov ha recolectado datos promediando así las características de las profundidades de los puntos craneométricos, ajustando a la reconstrucción a cada uno de ellos (fgura 2.3.8).

Figura 2.3.8 Reconstrucción Facial [11]

Otros investigadores, crearon el promedio de la cabeza con modelos 3D de múltiples sujetos mediante la interpolación de la volumétrica de datos. La relevancia de la plantilla media de la cara (determinado por el sexo, edad y origen étnico del cráneo no

- 23 - identifcados), deforma para adaptarse al nuevo cráneo mediante la distorsión de volumen.

Los sistemas informáticos que se han realizado tienen múltiples aproximaciones para crear cada cráneo, pero que se imponen un conjunto de características faciales y como resultado se tiene siempre la plantilla de la cara. Una de las desventajas es que se han tenido bases de datos limitados de las plantillas y las características faciales y el exceso de confanza sobré los datos de la profundidad del tejido.

En trabajos actuales se pueden mencionar el Memopix, Caramex (Figura 2.3.9)[12], este utilizado en el SEMEFO, de la Ciudad de México desarrollado por estudiantes de investigación de la Universidad Autónoma de México, el cual utiliza el método de superposición de fotografías.

Figura 2.3.9 Software Caramex

- 24 - Capítulo 3 Modelos Gráficos y Reconstrucción Gráfica

La ayuda de gráfcos tridimensionales ayudan a la contribución de lo que llamamos realidad virtual, los cuáles se pueden realizar con programas especializados en 3D, como pueden ser Maya, 3D Max Studio, Blender, XSI, entre otros.

Bien, en este proyecto se recurrió a Blender, debido a que es software libre, comparando Blender con 3D Max Studio, el software de Blender se puede obtener desde su página ofcial (www.blender.org), mientras que el 3D Max Studio, lo podemos obtener pagando en dólares americanos, los scripts que se manejarán en 3D Max Studio usan un sistema llamado MAXSCRIPT, el cuál es un poco complejo para aprenderlo, comparado con los scripts de python, otra de las características es que Blender es multiplataforma eso quiere decir que puede se instalado en sistemas como MS-WINDOWS, MAC OSX, , UNIX, Blender es una herramienta muy amigable para el manejo de modelos tridimensionales, etc.

3.1 Modelos Gráficos

Para trabajar en Blender debemos conocer nuestro ambiente de trabajo, y algunos conceptos básicos que nos servirán más adelante. Blender está orientada a objetos, esto signifca que pueden moverse, rotar o modifcar, los elementos se pueden tomar como independientes, por que pueden trabajarse por medio de enlaces.

Los objetos se pueden defnir como escena, el mundo, objeto, malla, curva, material, textura, fuentes de luz. Los objetos, contienen

- 25 - información para defnirlos, como posición, rotación, tamaño y matrices de transformación.

Los objetos pueden ser enlazados a otros objetos para formar jerarquías o deformaciones, los objetos tienen información 3D, como curvas, luz, mallas, animación y materiales, entre otras. Los objetos que se tienen en Blender como básicos son cubo, cono, círculo, tubo, cilindro, etc. Como parte del objeto, se tiene malla, más conocido en Blender como mesh, la cual se compone de un grupo de triángulos y cuadrados formando una malla. Estos contienen a su vez vértices, caras y normales, los cuales son perpendiculares a la superfcie. Esta malla puede enlazarse a materiales.

Vértices, es un punto en el espacio tridimensional. Si se encuentra rodeado de otros dos, los vértices pueden formar un triángulos. Un vértice tiene como atributo las coordenadas (x,y,z), y la normal, la cual se dirige a su superfcie (nx, ny, nz), color (r,g,b). En la fígura 3.1.1 muestra el ejemplo de un vértice en Blender.

Figura 3.1.1 Vértice

- 26 - Figura 3.1.2 Quad

Un vértice al renderizar no se puede llegar a ver, así como tampoco en modo objeto, para poder crear un vértice, se debe estar en modo Edición. Mientras un quad (Figura 3.1.2), es compuesto por dos triángulos formando un paralelogramo, esto quiere decir que tiene cuatro vértices (fgura 3.2.3).

Figura 3.2.3 Vértice

- 27 - Un arista (figura 3.2.4) siempre conecta dos vértices con una línea recta, normalmente cuando se renderiza son invisibles, pero son las encargadas de ayudar a construir una cara.

Figura 3.2.4 Arista

Por otro lado una cara, se usa para construir la superfcie del objeto, estas caras se pueden apreciar al momento que se renderiza una malla. Esta esta defnida entre tres o cuatro vértices, con una arista en cada lado. (Figura 3.2.5)

Figura 3.2.5 Cara

Importación de Objetos

Uno de los elementos más importantes que ofrece Blender, puede aceptar diversos formatos de otros programas, entre ellos VRML, SolidWorks, Autocad, en formatos .wrl y .dxf. La siguiente lista presenta las opciones de formatos que se pueden importar/exportar. Blender es

- 28 - mucho más compatible con una gran variedad de programas de modelación en 3D. (Tabla 3.1)

Formato Nativo de Utilización Especificación Publica 3DM Rhino 3D Poca (Impresión NO 3D) 3DS-MAX AutoDesk Mucho Parcialmente (3DS) COB Caligari Muy poco SI TrueSpace DXF Autocad Mucho SI LWOB LightWave Muy poco NO OBJ Alias Wavefront Mucho SI VRML VR Modeling Mucho SI Language SOFT SoftImage Poco NO Tabla 3.1. Formatos de Objetos

3.2 Escena

La escena es el la parte del mundo 3D que contiene información específca para el render (cámara, resolución de imágenes) y las referencias a otros objetos. Escenas diferentes pueden usar los mismos objetos, y se pueden enlazar distintas escenas, para formar un decorado.

La escena puede ser estática o animada, de cualquier manera la escena es renderizada de una escena estática o animada. Las imágenes que se pueden renderizar pueden ser imágenes del tipo JPEG o PNG, mientras que las animaciones se presentan en videos. (Figura 3.2.1)

- 29 - Figura 3.2.1. Escena

Nosotros podemos elegir en que escena estamos o bien crear una nueva , esto se puede realizar con la ayuda de una herramienta dentro de la ventana principal, en la parte alta, Selector de escena. (Figura 3.2.2.)

Figura 3.2.2. Selector de escena

A continuación se muestra como podemos agregar una nueva escena, hay cinco opciones, Nuevo, Copia de Ajustes, Enlazar Objetos, Enlazar Datos de Objetos, Copia Completa. (Figura 3.2.3)

- 30 - Figura 3.2.3. Nueva Escena

* Nuevo(New): Crea una escena vacía, aquí los ajustes de render toman los mismos valores por defecto. * Copia de Ajustes(Copy Settings): Crea una escena nueva, pero con la diferencia a la anterior, se copian los ajustes de Render de la escena que es original. * Enlazar Objetos(Link Objects): Crea una nueva escena con el mismo contenido de la escena actual, nada se copia, esta escena lo único que contendrá son los enlaces a los objetos de la escena actual que se tenga. * Enlazar datos de objetos(Link Object Data): Esta opción crea copias duplicadas de todos los objetos de la escena actual, pero cada objeto duplicado tendrán acceso a los mismos materiales, mallas, etc. • Copia Total(Full Copy):Es la copia más grande que se tiene, pero en esta creará una escena totalmente independiente con copias del contenido de la escena actual.

En la escena principal, inicialmente contiene una cámara, la cuál es usada principalmente, pero si se desea agregar una más, la forma más rápida de accesar a una nueva es con las teclas rápidas Shift+A, o bien presionar el botón de camera. A continuación se muestra en la fgura. 3.2.4

- 31 - Figura. 3.2.4. Agregar cámara

Por otro lado dentro de la escena principal, aparece otro elemento llamado luz. Cuando se va a renderizar, si no se muestra o se percibe la imagen renderizada, es debido a que no tiene luz, o necesite más de un elemento de luz. La mayoría de las escenas se tiene un rango entre 3 – 4 lámparas. Pero también se encuentran distintas opciones de luz, entre ellas, las que a continuación se ordenan(Figura 3.2.5):

* Point – es una de las más básicas, brilla en todas direcciones. * Sun – Provee ciertos ángulos de luz, independiente de la localización de los objetos. * Spot – Brilla en un angulo directo. * Hemi – Da una luz más amplia, al igual que las luces de zona. * Area – Proporciona la iluminación del área grande. Este se puede escalar.

- 32 - Figura 3.2.5 Iluminación

3.3 Operaciones Gráficas de Objeto

Los objetos pueden tener una serie de operaciones, pero las principales son tres: Rotación, Desplazamiento y Escalado. Para poder realizar estos movimientos el objeto debe estar en modo objeto, valga la redundancia (Figura 3.3.1 - 3.3.2).

Figura 3.3.1 Modo Objeto

Figura 3.3.2 Operaciones Objeto

- 33 - Seleccionar

Primero que nada, debemos seleccionar al objeto que se requiere modifcar, existen dos tipos de Selección, Objeto Activo: el último objeto seleccionado es el “objeto activo” y se mantiene como activo aún luego de seleccionar todos los objetos, el siguiente es Objetos Seleccionados: en este puede haber cualquier cantidad de objetos seleccionados (todos menos el activo que se resalta en naranja). (Figura 3.3.3 )

Figura 3.3.3 Selección del Objeto

Mover

Se selecciona la flecha en la cual quiere que se desplace el objeto, y después se arrastra el ratón de la computadora hasta la posición deseada. Existe otro método de modo de mover al objeto es presionando la tecla “G”, esto quiere decir que de igual manera el objeto que se encuentre seleccionado se moverá con el ratón. Así también, presionando la letra “G” y si queremos mover o desplazar a uno de los ejes xyz, enseguida teclear debemos teclear x, y o z, según sea el caso (fgura 3.3.4).

- 34 -

Figura 3.3.4 Mover objeto

Rotar

Al presionar la tecla “R”, se puede activar la rotación de los objetos. Si es presionado con un clic izquierdo o enter se defne el ángulo de rotación, al pulsar ESC o el botón derecho del mouse, se cancela el movimiento. Para realizar los movimientos de rotación de los ejes, también sigue la misma estructura, eje x, es el eje horizontal, eje y para el vertical, y por último el eje z, eje de profundidad (fgura 3.3.5).

Figura 3.3.5 Rotación en ejes, x, y, x

- 35 - Escalar

Para escalar un objeto se puede elegir el eje que desea expandir o contraer y se desplaza. En su defecto podemos presionar la tecla S seguida del cualquiera de las coordenadas xyz. Si realizamos estos movimientos teniendo presionada la tecla de Ctrl, e incremento o decremento del tamaño se realizará de forma regular, como se aprecia en la fgura 3.3.6.

Figura 3.3.6 Escalamiento en el eje 'z'

3.4 Operaciones Gráficas de Edición

Para realizar operaciones en el modo de edición, esta debe ser elegida, como se indica en la figura 3.4.1.

Figura 3.4.1 Modo Edición

- 36 - Las modifcaciones que se han realizado al objeto anteriormente, afectan a cada componente. En este modo de edición se puede tener acceso a los vértices del Mesh.

Figura 3.4.2 Objeto en Modo Edición

Cuando seleccionamos modo de edición, todos los vértices aparecen seleccionados, si queremos seleccionar solo un vértice, para esto será necesario oprimir la tecla A, y los vértices a continuación cambiarán de color negro. Para seleccionar solo un vértice solo basta con presionar el botón derecho sobre él y ya estará seleccionado (fgura 3.4.3). De lo contrario si se desea corregir el vértice, puede ser seleccionado nuevamente al presionar el vértice, el botón derecho del mouse.

Figura 3.4.3 Selección de vértices

- 37 - Si deseamos seleccionar al mismo tiempo más de un vértice, tan solo bastará mantener la tecla de Shift al mismo tiempo que se presione con el mouse el botón derecho.

Sin embargo si queremos seleccionar un arista en vez de un solo vértice, podemos seleccionar los vértices que la componen. La segunda opción es seleccionar de la barra que se observa afuera la opción de aristas. Ya que este seleccionada podemos hacer las modifcaciones que deseemos, como por ejemplo, rotar, modifcar, etc. (Figura 3.4.4 y fgura 3.4.5).

Figura 3.4.4 Menú de elección de edición

Figura 3.4.5 Modo Edición-Arista

- 38 - No solo las aristas se pueden elegir, también pueden ser elegidos las caras para rotarlas, moverlas y escalarlas, un ejemplo se ve en la fgura 3.4.6.

Figura 3.4.6 Modo Edición-Caras

3.5 Material en Blender

En Blender, cuando se tiene un objeto no posee ningún material asignado. Cuando se tiene el objeto a utilizar, y necesita el uso de material, daremos clic al recuadro mostrado en la fgura 3.5.

Figura 3.5 Botón Material

- 39 - Para agregar un nuevo material que se da clic en la ventana que aparece enseguida del botón ejecutado, y dará clic en New, como se muestra en la siguiente fgura 3.5.1. Al ejecutar el botón de New, lo enlazará con el nuevo objeto que se tenga activo, y se asignará el nombre de Material.001, así sucesivamente.

Figura 3.5.1 Botón Nuevo Material

En caso de tener materiales existentes, se pueden seleccionar dando clic como se muestra en la siguiente fgura 3.5.2, y como siguiente desplegará un menú con la lista de materiales existentes.

Figura 3.5.2 Lista de Materiales

- 40 - Una vez asignado a nuestro objeto el material, puede ser mostrado en el panel de visualización, en este muestra los materiales en diferentes tipos geométricos (Figura 3.5.3).

En este caso aparecen las siguientes opciones:

– Flat XY plane: para texturas y materiales sobre objetos, como paredes, papeles, entre otros.

– Sphere: Para objetos en forma de esferas o metaballs.

– Cube: Para texturas y materiales sobre cubos, para obtener backgrouds.

– Hair strands: Para objetos como pasto, cabello entre otros.

– Large Sphere with Sky: Para texturas sobre esferas.

– Monkey: Para ver texturas y materiales complejos distintos a las primitivas principales.

(a) (b)

- 41 - (c) (d)

(e) (f)

Figura 3.5.3 Opciones de Pre-visualización (a) FlatXY (b) Sphere (c) Cube (d) Hair strands (e) Large Sphere with Sky (f) Monkey

3.6 Mallas

En Blender el uso de polígonos y vértices son un elemento muy importante. La mayoría de los objetos que se tienen están desarrollados por polígonos, los cuales tienen elementos curvos, y son aproximados con mallas.

Cuando son renderizadas las imágenes, pueden ser apreciadas las caras planas. Para evitar esto, se recurre a la aplicación de elementos suaves (Figura 3.6).

- 42 - Figura 3.6 Efectos de Suavizado

Una de las primeras opciones es aplicando un Sombreado Suave, el cual se va a establecer en el objeto completo, el objeto necesitará estar en modo objeto seguido de seleccionar el botón de Smooth, que se encuentra en el menú de Object Tools, el cual suavizará a todas las caras de la malla(Figura 3.6.1), solo cambiara la forma del sombreado realizando los cálculos de las caras. Si se desea deshacer este efecto, se debe aplicar el botón de Flat.

Figura 3.6.1 Efecto Sombreado Suave

El siguiente tipo de suavizado es aplicarlo a la malla, en modo edición, seleccionando alguna de las caras y dando clic de nuevo en el

- 43 - botón de Smooth, las aristas que son seleccionadas estarán marcadas de amarillo (Figura 3.6.2).

Figura 3.6.2 Efecto Suavizado Modo de Edición

El auto suavizado se logra utilizando el botón de AutoSmooth, aquí los modelos serán modifcados por medio de ángulos, modifcando los modelos que sean menores al indicado, de lo contrario los valores más altos producirán una cara más suave como vemos en la siguiente fgura 3.6.3 y 3.64.

Figura 3.6.3 Efecto Auto suavizado.

Figura 3.6.4 opciones de Smooth en el menú de Object Tools

- 44 - Capítulo 4 Reconstrucción Forense.

4.1 Problema a Resolver

La reconstrucción de rostros es una técnica que tiene como objetivo fundamental restablecer y posteriormente comparar rasgos faciales de una persona a partir del análisis de su estructura craneal o rostro, según corresponda.

Reconstruir el rostro de una persona a través de cráneo de forma manual y tridimensional.

4.2 Metodología

La técnica para llevar a cabo la reconstrucción de rostros, es necesario como primer paso realizar un estudio de la estructura ósea, en este caso, del cráneo, debido a que nos brindará una mayor ventaja para realizar la modelación de rostro de manera tridimensional.

4.2.1 Reconstrucción Física

La reconstrucción de forma manual, se realizó para obtener mejores conocimientos de mediciones, colocación correcta de puntos craneométricos, determinación de sexo, entre otros detalles.

- 45 - Figura 4.2.1 Cráneos Humanos

Teniendo esto en cuenta, se procede a obtener el modelo del cráneo, en este caso, se tuvo la colaboración de la Escuela Superior de Medicina, la cuál proporciono ayuda para obtener modelos de cráneos humanos, completos en su mayoría, es decir que el cráneo y la mandíbula, se encontraban unidos (articulados). Figura 4.2.1 .

- 46 - 4.2.2 Creación del Modelo

Debido a que en el país de México, esta prohibido transportar osamenta, de un instituto a otro, en este caso la escuela, o a cualquier otro lugar, se recurrió a elaborar un modelo de resina, de los cráneos proporcionados en la Escuela de Medicina, para tener un modelo lo más real posible para ser utilizado, con este modelo obtenido pudo ser transportado, así como también, se marcaron los puntos craneométricos correspondientes o en su defecto se realizaron cambios pertinentes, sin dañar a la osamenta original.

En primer lugar, se obtuvo un permiso para trabajar en el laboratorio de Materiales en la misma escuela de Medicina del IPN. Se realizó el trabajo con materiales como resina, silicón, elementos químicos(catalizadores), plastilina, polvo de fbra de vidrio.

Se procedió a limpiar el cráneo, y por separado la parte de la mandíbula, y el mismo cráneo, se les procedió a rellenarla con plastilina para empezar a realizar el molde, como se muestra en las fgura 4.2.2.1 siguientes:

Figura 4.2.2.1 Moldeo con plastilina

- 47 - Como siguiente paso, en un pequeño bote de plástico se preparó una mezcla con el silicón y el catalizador, para esta mezcla la combinación ideal es del 5%, esto quiere decir que por 500 gramos de silicón se deben colocar 25 gotas de catalizador, para que este sea más exacto, nos ayudamos de una jeringa, de lo contrario si llegamos a calcular mal las proporciones puede provocar que sea mucho más lenta o rápida la catalización. Una vez que se han colocado los elementos, se asegura de que se mezcle homogéneamente, ya que esta lista esta mezcla, se procedió a colocar encima del cráneo, tratando de hacerlo lentamente para no provocar burbujas y tratando que cubriera hasta el más pequeño detalle, para que el cráneo sea el mismo modelo exacto.

En las siguientes fguras 4.2.2.2 se puede observar como se cubrió lentamente el cráneo, y siempre desde la base hacia arriba. Dejando el molde a la mitad, al cabo de unos minutos se cubre totalmente.

Figura 4.2.2.2 Creación del molde de silicón

- 48 - Terminando de cubrir toda la mezcla tanto en el cráneo, como en la parte de la mandíbula, se espolvoreo fbra de vidrio, para que el molde realizado fuera más resistente, y así usarlo sin peligro a romperse de manera inmediata, esperando a que los moldes de silicón secarán poder realizar los modelos del cráneo de resina.

Una vez secos los moldes, se procede a realizar una mezcla de resina de poliuretano y un catalizador E55, los cuales al mezclarlos son dos reactivos que se pueden solidifcar en cuestión de minutos, ya que la temperatura aumenta, por lo que se procede a mezclar de una manera rápida y envolvente.

Como era recomendable ejercer una presión para que sujetara nuestro molde se realizaron unos orifcios, para colocar unos tornillos y que estos sirvieran de soporte, como se muestran en las fguras 4.2.2.3 siguientes.

Una vez listo este paso, se procede de igual manera que la mezcla anterior asegurando de combinar los componentes en la misma proporción, auxiliándose de un pequeño utensilio de madera, teniendo esto, se procede de manera rápida a vaciar la mezcla dentro del molde con movimientos giratorios, asegurando que la mezcla llegara a abarcar todos los orifcios y detalles del molde, así que se realiza de manera rápida y precisa, para que no se secara esta mezcla antes de que terminará de recorrer todo el molde, siempre teniendo cuidado ya que se puede percibir el calor de estas sustancias enseguida.

- 49 - Figura 4.2.2.3 Moldes con el modelo dentro.

Teniendo éxito en el paso anterior y habiendo pasado el tiempo, se procede a desmoldar el cráneo con mucho cuidado, para no romper el modelo, se pule y cortan los modelos, si es necesario, para afnarlos. (Figura 4.2.2.4).

Figura 4.2.2.4 Sacando el modelo del molde y detalles.

- 50 - En la fgura 4.2.2.5 se muestra la copia del modelo de resina del cráneo humano que se nos proporciono la Escuela Superior de Medicina, el cual servirá para realizar nuestra reconstrucción de rostros.

Figura 4.2.2.5 Modelo de Cráneo Final

4.3.1 Obtención del modelo gráfico

La mayoría de las veces, los cráneos se encuentran separados de la mandíbula, así que para un mejor resultado deben acomodarse las piezas anatómicamente.

El modelo gráfco digitalizado se puede obtener mediante un lector láser, una cámara tridimensional, e inclusive el dispositivo Kinect del XBOX de Microsoft®.

En este caso debido al alto costo de un escáner tridimensional, se utilizó el Kinect de XBOX de Microfost®. Obteniendo como resultado un modelo de polígonos tridimensional del cráneo completo, el cuál nos

- 51 - ayudará para obtener la reconstrucción de rostros de forma tridimensional ya digitalizada(fgura 4.3.1).

Figura 4.3.1 Kinect de Microsoft utilizado para obtención de objeto

Los paquetes auxiliares a utilizar para la obtención de nuestros puntos, para obtener el modelo digital, es llamada freenect, este se instala en el sistema operativo Linux Ubuntu, para obtener acceso a la cámara del Kinect.

Para compilar este paquete de igual manera se utiliza Python, el cual es compatible y se ayuda al desarrollo con Blender.

Posteriormente ya instalados los paquetes pertinentes, se procede a la calibración de la cámara del Kinect, para obtener una mejor información, como se muestra en la fgura 4.3.1.2.

- 52 - Figura 4.3.1.2 Calibración de la cámara del Kinect

Como continuación al procedimiento es tomar el objeto a escanear, en este caso el cráneo, como resultado nos dará datos de la cara superior, costado e inferior, para formar las profundidades del objeto. En la siguiente fgura 4.3.1.3 se muestra un ejemplo de recabado de información, de las tres vistas que nos proporciona el Kinect.

Figura 4.3.1.3 Ejemplo de obtención de puntos con el Kinect

- 53 - El formato en el que se obtendrá el modelo gráfco sera en .obj, es decir puros puntos(vértices), dado que es fácil de manejar, al importarlo en Blender, nos generará con la interpolación cúbica que es utilizado en esta parte, y se genera la triangulación, para darnos como resultado nuestro objeto tridimensional, en las siguiente fgura 4.3.1.4, se muestra un ejemplo de como obtiene el volumen.

Figura 4.3.1.4 Volumen

Como se ha mencionado en el capítulo 2, para la realización del proyecto, se analizaron varios tipos de software, dentro de los cuales se hizo el uso de Blender.

La fgura 4.3.1.5 muestra el modelo del cráneo obtenido, que se utilizará para la reconstrucción de rostro.

- 54 - Figura 4.3.1.5 Modelo del cráneo .obj

4.3.2 Ajuste de Parámetros de Escena

La escena contiene tres elementos básicos, ventana principal, la cámara, y la luz.

Las cuales se ambientan de acuerdo a las necesidades requeridas. Como primer parte se arregla el elemento de la cámara, se elige una vista frontal y con perspectiva ortogonal.

Como segundo paso se ajusta la escena de acuerdo al sistema de medición métrico, las unidades que se manejan es en metros. Esto se debe a que así se pueda manejar de una forma más exacta y hacer las mediciones pertinentes de los elementos que serán utilizados.

- 55 - En el área que se encuentran los datos serán parte de la escena. Dando clic sobre el botón escena (a) y más abajo existe la opción para especifcar unidades como se muestra fgura 4.3.2.1 (b).

a) Opción Escena

b) Selección de Unidades

Figura 4.3.2.1 Confguración de Escena.

Si se desea asegurar que efectivamente la escena está considerada bajo esas circunstancias, puede teclear dentro la escena la siguiente ruta Ctrl + A, y desplegará un menú, donde se elegirá la opción de Escala. Como siguiente paso se puede apreciar que si se realizan los pasos se observará que la escala estará a 1 metro, la unidad que se eligió. (Figura 4.3.2.2).

- 56 - a) Menú desplegable

b)Parámetros ajustados.

Figura 4.3.2.2 Verifcación Unidades de Escena

4.3.3 Colocación de Puntos Craneométricos

Teniendo el modelo tridimensional del cráneo, se procede a analizar cuales son los parámetros de las profundidades del grosor del tejido.

- 57 - Para esto es muy importante la localización y establecimiento de los puntos craneométricos , es decir, para empezar la reconstrucción de un rostro, claro esta con su profundidad de cada una de ellas, para determinar el tejido blando. (Figura 4.3.3.1)

Figura 4.3.3.1 Puntos Craneométricos

Estos puntos craneométricos se enlistan a continuación:

1. Metopion, 2. Glabela, 3.Nasion, 4. Rhinion, 5. Subespinal, 6. Supradental, 7. Infradental, 8. Supramental, 9. Pogonio, 10. Menton, 11. Eminencia frontal, 12. Supraorbital, 13. Infraorbital, 14. Malar inferior, 15. Orbital lateral, 16. Arco cigomático, 17. Supraglenoideo, 18. Gonion, 19.Supramolar, 20. Linea oclusal, 21. Submolar2.

Las medidas tomadas en este trabajo, son basadas en una investigación realizada por investigadores de posgrado de antropología de la UNAM, estos fueron llevados a cabo a 208 personas del país. Las tablas de medidas se muestran en el anexo.

- 58 - La colocación de los 21 puntos craneométricos son colocadas exactamente en la posición correspondiente para cada una de ellas. Como se puede apreciar en la fgura 4.3.3.2, para la colocación de los puntos se toma como referencia el punto central del modelo, partiendo de este, se realiza la colocación de los puntos.

Figura 4.3.3.2 Puntos Craneométricos Digital

En las siguientes lineas se expresa como se colocaron los vértices a través de Python, para la colocación de los puntos craneométricos, los cuales son utilizados más adelante para la triangulación.

- 59 - v1 = ((0.001404 + 0.00440), 0.13005,0.11616)

v2 = ((0.001131 + 0.00550), 0.11335,0.11563)

v3 = ( -0.001145, 0.10591, 0.1130)

v4 = (-0.003217, 0.08608, 0.11789)

v5 = ((-0.0001527 + (0.0010)), 0.03863, 0.10565)

v6 = ( 0.009467, 0.03334, 0.1061)

v7 = ( 0.011279, 0.001341, 0.09016)

v8 = ( 0.011234, -0.007358, 0.08955)

v9 = (0.01100, -0.01585, 0.08699)

v10 = ((-0.001146 + (-0.0077)), -0.01946, 0.08381)

v11 = ((-0.02312 + (-0.0050)), 0.13234, 0.11271)

v12 = ((-0.0315 + (-0.0065)), 0.1126, 0.10997)

v13 = (-0.03629, 0.06868, 0.0991)

v14 = (-0.04306, 0.05727, 0.09030)

v15 = (-0.05285, 0.05536, 0.07986)

v16 = (-0.06232, 0.05460, 0.05927)

v17 = ((-0.05450 + (-0.0093)), 0.07436, 0.02514)

v18 = ((-0.03864+(-0.0131)), -0.003777, 0.03032)

v19 = (-0.03529, 0.03044,0.08308)

v20 = (-0.04913, 0.01588, 0.05657)

v21 = (-0.03469, 0.06482, 0.07803)

v22x = (v12[0]+v15[0])/2

v22y = (v12[1]+v15[1])/2

v22z = (v12[2]+v15[2])/2

v22 = (v22x, v22y, v22z) v22Dx = (v12[0]+v4[0])/2

v22Dy = (v12[1]+v4[1])/2

v22Dz = (v12[2]+v4[2])/2

- 60 - v22D = (v22Dx, v22Dy, v22Dz)

4.3.4 Triangulación

El algoritmo o base que se tomo para empezar la reconstrucción después de la colocación de los puntos craneométricos, es el algoritmo de triangulación. Va tomando un punto como referencia para que la triangulación tenga una manera más sencilla de realizarse.

El modelo que se usará para la reconstrucción de rostros es similar al que se realiza de forma manual. Debido a que el primer paso es rellenar los espacios entre cada uno de los puntos craneométricos que se establecen.

Los puntos craneométricos serán puestos como vértices, eso quiere decir que busca la unión de cada uno de estos para realizar el algoritmo. Y como bien sabemos a través de este texto es que un vértice tiene una normal(dirección que toma hacia la superfcie).

Un vértice esta defnido como un punto (a, x, y), donde las cuales son las siguientes: a representara la base, x, la dirección de la dirección en la forma, y y es la distancia entre el punto y la superfcie.

Para un área de vértices es necesario contar con las coordenadas de tres vértices.

Dado un punto, en este caso 'a' y la distancia de 'x' marca la profundidad del tejido blando en este caso.

- 61 - Una vez determinados los puntos, se calculan las profundidades del tejido blando a través de tres vértices principalmente, en este caso p(x1, x2, x3). La interpolación será a través de estos vértices.

La intersección de a, y el triangulo p(x1, x2, x3) dará la intersección del punto 'b'. Una vez que se haya calculado la profundidad, usando el baricentro.

bi=u11+v2 2+w33

donde u, v, w son iguales a:

area (x⃗1, x⃗2, x⃗3) u11= area (x⃗1, x⃗2, x⃗3)

area (x⃗1, x⃗2, x⃗3) v22= area (x⃗1, x⃗2, x⃗3)

area( x⃗1, x⃗2, x⃗3) w33= area( x⃗1, x⃗2, x⃗3)

Obteniendo los datos resultantes, se va a dibujar la malla, como se muestra en la fgura 4.3.4.1, así es como van obteniendo las triangulaciones de dichos puntos.

- 62 - Figura 4.3.4.1 Conjunto de vértices.

La siguientes líneas de código muestra como se realiza esta triangulación en Python, así como la fgura 4.3.4.2 de la triangulación al ejecutar el segmento de código.

# vertex data

t1 = (v2,v1,v11) t23 = (v14,v19,v5) t2 = (v1,v2,v11D) t24 = (v14D,v5,v19D) t3 = (v11,v12,v2) t25 = (v19,v16,v20) t4 = (v11D,v2,v12D) t26 = (v19,v20,v21) t5 = (v12,v3,v2) t27 = (v5,v19,v6) t6 = (v2,v3,v12D) t28 = (v5,v6,v19D) t7 = (v12,v4,v3) t29 = (v19D,v20D,v16D) t8 = (v3,v4,v12D) #h t30 = (v20,v17,v18) t9 = (v11,v17,v12) t31 = (v20,v18,v21) t10 = (v11D,v12D,v17D) t32 = (v19D,v20D,v21D) t11 = (v12,v16,v17) t33 = (v18,v10,v21) t12 = (v12,v15,v4) t34 = (v7,v21,v8) t13 = (v12D,v4,v15D) t35 = (v7,v8,v21D) t14 = (v12D,v16D,v17D) t36 = (v21D,v18D,v20D) t15 = (v15,v14,v13) t37 = (v20D,v18D,v16D) t155 = (v12, v15, v16) t38 = (v21,v9,v8) t16 = (v13,v14,v4) t39 = (v8,v9,v21D) t17 = (v4,v14,v5) t40 = (v9,v10,v21) t18 = (v4,v5,v14D) t41 = (v9,v10,v21D) t188 = (v13D, v14D, v16D) t42 = (v18D,v9,v21D) t19 = (v4,v14D,v13D) t43 = (v12,v22,v22D) t20 = (v13D,v14D,v15D) t44 = (v12D, v23, v23D) t21 = (v15D,v19D,v16D) t45 = (v19, v20, v6) t212= (v15D,v14D,v19D) t46 = (v19, v19D, v6) t22 = (v15,v16,v19) t47 = (v19D, v6, v20D) t223= (v15D,v16D,v19D) t48 = (v21, v21D, v8) t222= (v19,v14,v15) t488=(v15D,v13D,v14D)

- 63 - t49 = (v24, v18, v17) t53 = (v23, v15D, v13D) t50 = (v24D, v18D, v17D) t54 = (v22, v15, v13) t51 = (v16D, v18D, v17D) t55 = (v23, v15D, v16D) t52 = (v12D, v23, v16D)

allVerts = t1 + t2 + t3 + t4 + t5 + t6 + t7 + t8 + t9 + t10 + t11 + t14 + t15 + t155 + t16 + t17 + t18 + t188 + t19 + t20 + t200 + t21 + t212 + t22 + t222 + t23 + t223 + t24 + t25 + t26 + t27 + t28 + t29 + t30 + t31 + t311 + t32 + t33 + t34 + t35 + t36 + t37 + t38 + t39 + t40 + t41 + t42 + t43 + t44 + t45 + t46 + t47 + t48 + t488 + t49 + t50 +t51 + t52 + t53 +t54 + t55

topAndBottomFaces = ((0,1,2), (3,4,5),(6,7,8), (9,10,11), (12,13,14), (15,16,17), (18,19,20), (21,22,23), (24,25,26), (27,28,29), (30,31,32), (33,34,35), (36,37,38), (39,40,41), (42,43, 44), (45, 46, 47), (48, 49, 50), (51, 52, 53), (54, 55, 56), (57, 58, 59), (60,61,62), (63, 64, 65), (66, 67, 68), (69, 70, 71), (72, 73, 74), (75,76,77), (78,79,80), (81,82,83), (84, 85, 86), (87,88, 89), (90, 91, 92), (93, 94, 95), (96,97,98), (99, 100, 101), (102,103,104), (105,106,107), (108,109,110), (111,112,113), (114,115,116), (117,118,119), (120,121,122), (123,124,125), (126,127,128), (129, 130, 131), (132, 133, 134), (135, 136, 137), (138, 139, 140), (141, 142, 143), (144,145,146), (147,148,149), (150, 151, 152), (153,154,155), (156, 157, 158), (159, 160, 161), (162, 163, 164), (165, 166, 167), (168,169,170), (171,172,173),(174,175,176), (177,178,179), (180,181,182))

allFaces = topAndBottomFaces #+ sideFaces + baseFace

# load up the mesh data triMesh.from_pydata( allVerts, (), allFaces )

Figura 5.3.4.2 Triangulación

- 64 - 4.3.5 Colocación de Objetos Comunes

Una vez que teniendo la malla de triangulación, se procede a conjuntarla con el cráneo, y de esta manera se hace la colocación de objetos como son la nariz, orejas.

Nuestro cráneo se divide principalmente en dos partes, en este caso, una de ellas es la bóveda craneal y la base del cráneo. Existen varias formas o características para ver donde pertenece un cráneo, o más bien dicho a que región corresponde si es Asiático, Europeo, o Americano, por la forma del tamaño del cráneo, o que si son más largas, puntiagudas o cortas la nariz, así como parte de sus orbitales. (Figura 4.3.5.1).

Figura 4.3.5.1 Rasgos Craneales

- 65 - A diferencia de los adultos, los recién nacidos tienen muy poco desarrollado la parte de la mandíbula comparado con el maxilar, en los niños la parte del mentón es un poco más marcado pero a la vez es puntiaguda y por lo regular en forma de “V”, en cambio en un adulto, sus ojos se hacen más pequeños debido a que el crecimiento de la parte de la mandíbula y la nasal van creciendo más rápido, y en los adultos mayores se ve reflejado en que las modifcaciones morfológicas y fsiológicas se ven aún más marcadas con respecto al paso del tiempo y hay reducción de la parte mandibular y maxilar (Figura 4.3.5.2 ).

Figura 4.3.5.2 Rasgos Morfológicos

En el modelo desarrollado, se tiene una biblioteca de objetos comunes, para poder seleccionar que objeto es el mejor para la selección de acuerdo a las características de medición de cada cráneo.

En la fgura 4.3.5.3 se muestran algunas de los objetos comunes, en este caso de la nariz, así como también del caso de las orejas (Figura 4.3.5.4).

- 66 - Figura 4.3.5.3 Biblioteca de objetos comunes Nariz.

- 67 - Figura 4.3.5.4 Biblioteca de objetos comunes Orejas.

- 68 - La colocación de estos objetos se realizan mediante un botón realizado por medio de scripts de Python, que serán colocados dentro de un menú.

En este botón se realiza la operación para obtener la distancia del hueco del hueso nasal (altura), y el ancho con respecto al maxilar superior, con ayuda de una herramienta predeterminada de Blender. En el caso de la colocación de las orejas, se necesita localizar el punto del hueso occipital y orifcio auditivo externo, cabe mencionar que en el caso de las orejas se hace una aproximación.

self.number == 4:

print("Boton4-Orejas")

full_path_to_fle = "//earscjo.obj"

bpy.ops.import_scene.obj(flepath=full_path_to_fle)

self.number == 5:

print("Boton5-Nariz")

full_path_to_fle = "//nariz.obj"

bpy.ops.import_scene.obj(flepath=full_path_to_fle)

matn=bpy.data.materials.new('principalnar')

Figura 4.3.5.5 Colocación de Objetos Nariz y Orejas

- 69 - 4.3.6 Acabados

Terminando la reconstrucción, el modelo del rostro, aun no esta realmente concluido, para esto, se establecen las texturas para llevar al modelo de una forma más real.

Una ventaja del uso de Blender y el uso de los tipos de objetos en 3D, incluyendo mallas poligonales, superfcies NURBS, bezier y las cuvas B-Spline, metaballs, fuentes vectoriales (TrueType, PostScript, OpenType.) es que se pueden realizar el uso de estos.

Como por ejemplo:

• Catmull-Clark realiza la rápida subdivisión de superfcies con optimo iso-lines de visualización y edición de la nitidez.

• Todas las capacidades de esculturas con multirresolucion en 2D bitmap/ 3D con brochas procesales (Paint, Smooth, Pinch, Inflate, Grab) soporta para trabajar con simetría.

• Modifcador de espejo "Mirror" Con el recorte de vértices a la mitad y la eliminación automática de caras internas.

• Boolean no destructivo en tiempo real y los modifcadores de matriz.

• Malla de modelado basado en el vértice, borde y/o la selección de caras.

- 70 - • Herramientas de edición de selección de Smooth para el modelado orgánico.

En este caso, se realiza para el acabado de la suavización o inflado que le llamamos con la técnica de Smooth que utiliza Blender con la ayuda de los scripts de Python una vez más. Para esto se tiene un botón el cuál también fue desarrollado para dicho uso. A continuación se muestran algunas líneas de código desarrollando esta parte, así como también una fgura 4.3.6.1 donde muestra el ejemplo de un acabado en Blender.

print("Boton 6-Piel") bpy.data.objects['Mesh'] bpy.context.active_object bpy.ops.object.editmode_toggle() bpy.ops.transform.shrink_fatten(value=-0.00436, mirror=False, proportional='DISABLED',proportional_edit_fallof='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), release_confrm=False) bpy.ops.mesh.vertices_smooth(repeat=1) bpy.ops.object.mode_set(mode='OBJECT')

Figura 4.3.6.1 Ejemplo de Acabado

- 71 - 5. Resultados

5.1.1 Creación del molde

En las siguientes fgura 5.1.1, se presentan en diferentes ángulos, el modelo que se obtuvo por medio de resina.

(a) (b)

(c) (d)

Figura 5.1.1 Modelo de Resina (a) Vista de Frente (b) Vista Trasera (c) Vista Izquierda (d) Vista Derecha

- 72 - 5.1.2 Reconstrucción Manual

Se realizaron dos diferentes reconstrucciones de rostros de forma manual, con plastilina para adquirir los conocimientos necesarios, para desarrollar el presente trabajo, abajo se muestran las secuencias de fotografías para la investigación (Figura 5.1.2.1).

Figura 5.1.2.1 Primer Reconstrucción Manual de Rostros

- 73 - Figura 5.1.2.2 Segunda Reconstrucción Manual de Rostros

5.2 Reconstrucción por Computadora

Después de aplicar la metodología de obtener un objeto por medio de los vértices, se obtuvo el modelo en Blender y se importo. Para poder utilizarlo, se muestran en la fgura Figura 5.2.1 las diferentes vistas del modelo obtenido.

- 74 -

(a) (b)

(c) (d)

(e) (f) Figura 5.2.1 Modelo de Cráneo (a) Vista posterior (b) Vista Anterior (c) Vista Izquierda (d) Vista Derecha (e) Vista Lado Izquierda (f) Vista Lado Derecho

- 75 - Como siguiente punto, ubicados los puntos craneométricos, se procede con la triangulación, se muestran los resultados de esta. (Figura 5.2.2)

(a) (b)

(c) (d)

(e) Figura 5.2.2 Triangulación en el modelo (a) Vista Posterior (b)Vista Izquierda (c) Vista Derecha (d) Vista Anterior (e) Vista Frontal con el modelo

- 76 - Se colocan los objetos en este caso la nariz, y las orejas, como se muestran a continuación (Figura 5.2.3).

(a) (b) Figura 5.2.3 Importación de objetos (a) Nariz (b) Orejas

Por otro lado se presentan los resultados con los flats distintos en renderizacion (Figura 5.2.4).

(a) (b)

- 77 - (c) (d)

(e) (f)

(g) (h) Figura 5.2.4 resultados de Colocación de Piel con diferentes Flats (a) flat=0.0108228 (b) flat= -0.0012069 (c) flat= 0.0077745 (d)flat=0.0084275 (e) flat= 0.0145819 (f) flat= 0.0204886 (g) flat=0.0108228 (h) renderizacion

- 78 - En la siguiente fgura 5.2.5 muestra parte de la comparación de la renderizacion con una imagen aproximada, a la persona que le pertenece el cráneo.

(a) (b) Figura 5.2.5 Comparación del resultado de la Reconstrucción Final (a) Renderizacion en 3D (b) Retrato hablado de la persona

El sistema fue probado en un servidor NVIDIA con 960 núcleos integrados por dos GPU Fermi 480. (Figura 5.2.6)

Figura 5.2.6 Programa empleado en NVIDIA

- 79 - El análisis de las diferentes técnicas de reconstrucción permitió utilizar la tiangulación geométrica para generar una malla adecuada como base para generar el rostro. De acuerdo a nuestra experiencia en la fabricación del modelo de cerámica se detectaron las siguientes desventajas:

1. Los materiales son tóxicos 2. Los materiales se consiguen en casas muy especializadas y son de alto costo 3. La generación del modelo en cerámica puede tardar varios días ya que se construye por fases y el periodo de construcción es aproximado a un mes. (Afectado por factores de humedad y de Calor del ambiente). 4. El molde es delicado y puede romperse 5. La maquinaria para pulir el material es pesada y de operación complicada. 6. Contaminan el ambiente.

El conocimiento de las técnicas de triangulación permitió explotar el campo de la computación gráfca para solucionar problemas clásicos de la interpolación de datos. Los triángulos son fáciles de generar pero la gran cantidad de ellos , representa un problema de cómputo paralelo clásico.

Al contrario de una interpolación el usuario debe conocer el valor de una función f(x) en una serie de puntos x1, x2, . . . xn, pero se desconoce el valor de la expresión analítica de f(x) que permita calcular para un valor que sea arbitrario. La idea de la interpolación es poder estimar valores para poder construir una curva o superfcie, que une los puntos donde se han realizado mediciones.

- 80 - Las alternativas de ambiente paralelo que se desarrollaron fueron las siguientes:

1. Clúster de computadoras (MPI)

Una computadora en paralelo es un conjunto de procesadores capaces de cooperar en la solución de un problema. Esta defnición incluye supercomputadoras con cientos de procesadores, máquinas con múltiples procesadores, redes de estaciones de trabajo y redes de PCs (clústers de Pcs).

En los clústers de Pc's se tiene un ambiente de memoria distribuida, cada PC es dueña de su memoria local. Las computadoras se comunican mediante el envío de mensajes y por lo general usan implementaciones de MPI, como librerías de comunicación. La sincronización de procesos se logra bloqueando un proceso que ejecuta la primitiva que recibe hasta recibir un mensaje de uno o de mas procesos los cuales se desean sincronizar. Para este medio generalmente se utilizan cables de Ethernet.

MPI (Message Passing Interface), es uno de los programas en la programación paralela que se han utilizado, el cálculo paralelo en un clúster se dividen en varias partes un trabajo y distribuyéndolos en los nodos de tal manera que en cada uno se vayan desarrollando , cualquier información que sea requerida para elaborar los procesos o tareas, es realizado a través de intercambio de mensajes, lo cual el objetivo importante del MPI es lograr una potabilidad a través de diferentes máquinas.

2. Servidor Distribuido (Granja Blender)

Las animaciones tridimensionales para ser renderizadas necesitan de una gran cantidad de cálculo, ya que se requiere simular procesos

- 81 - físicos, los cuales tardan demasiado tiempo para fnalizar dichas tareas. El renderizado se refere a la etapa en la que se toman como entrada los elementos que defnen las texturas, la iluminación, el modelado y la animación como una imagen bidimensional. Así que para agilizar esta tarea se recurrió a lo que es conocido como Granja de Blender , la cual es una agrupación de varias computadoras, donde tienen procesos subdivididos entre varias computadoras, para realizar la tarea de renderización en un menor tiempo posible. Con la granja de Blender se utiliza un software desarrollado en el lenguaje C, llamado DrQueue, de código abierto, el cual es compatible con distintos sistemas operativos. En la mayoría de los casos se utiliza para renderizar efectos visuales y de animación para publicidad, cine entre otras. ( 5.2.7)

Figura 5.2.7 Ejemplo Gráfco de Granja Blender

3. Servidor de GPU NVIDIA.

El servidor de GPU NVIDIA que utilizamos tiene las siguientes características:

- Sistema Operativo Linux x86_64

- NVIDIA Driver Version: 295.41

- Server Version Number: 11.0

- 82 - - Procesador de Gráfcos: GeForce GTX 570

- CUDA cores: 480 x 2 = 960

El tercer caso tiene la ventaja de integrarse en forma natural a Blender en ciertas versiones en nuestro caso v.2.63, lo que evita desarrollar programas especiales.

- 83 - 6. Conclusiones

Se desarrolló un algoritmo de reconstrucción facial 3D, utilizando Blender, en lenguaje de programación con Python.

Ya que Python es un lenguaje interpretado, interactivo y orientado a objetos en el cual se pueden integrar módulos, de tipo dinámicos, ademas que su sintaxis es muy clara y de fácil dominio.

Así como también Python fue diseñado para usar como un lenguaje de extensión para distintas aplicaciones ya que no necesita una interfaz para programarse. De igual manera se recurrió al uso de la extensión en Blender con Python ya que es mas fácil de comprender el uso de las secuencias que se tienen en esta.

Blender permitió un ambiente optimo de desarrollo donde se integró de manera natural el uso herramientas computacionales gráfcas de alto desempeño y el uso del GPU.

Python permitió integrar las soluciones de programación en Blender , para de esa forma se explotará el uso de programas de alto paralelismo gráfco.

Cabe resaltar otro punto interesante al trabajo, se realizó un costo menor obteniendo el uso de la cámara del Kinect de Blender, caso contrario al escáner tridimensional.

Comparado con sistemas anteriores, que se han realizado, en este caso el desarrollo manual se obtuvo un mejor resultado, debido a que se tiene una reducción de tiempo.

- 84 - Trabajos a Futuro

Los trabajos a futuro permitirán complementar y hacer mas efciente esta implementación

Los trabajos son:

1. Realizar el escaneo de Cráneos Incompletos y tratar de reconstruirlos, siguiendo o mejorando esta aplicación.

2. Implementar el uso del ADN, para tener mayor certeza sobre su raza o descendencia .

3. Implementar una Base de Datos de Rostros integrados.

4. Desarrollar un Plug-in que permita utilizar un sistema de reconocimiento de fotografías en forma automática

5. Ampliar el uso de esta herramienta para hacer estudios de reconstrucción de Rostros en otras áreas.

- 85 - REFERENCIAS

[1] Taylor, Forensic art and illustration, Washintong, N.Y., 2001, CRC Press. Boca Raton

[2] In vivo facial tissue depth measurements for white British children.Wilkinson CM.J Forensic Sci. 2002 May;47(3):459-65.

[3] Smith, S.L. & Buschang, P. H. Midsagittal facial tissue thicknesses of children and adolescents from the Montreal growth study. J. Forensic Sci., 46(6):1294-302,2001.

[4] Tim Thompson, Sue Black, Forensic human identification An Introduction, 2007 Boca Raton : CRC Press, ©2007.

[5] Der Schädel Raphael´s und die Raphaelporträs. En: Archiv für Anthropologie, Bd. XV, Braunschweig. Welcker. 1888

[6] Bericht an den Rath der Stadt Leipzig: Jo-hann Sebastian Bach, Forschungen über dessen Gra- betätte,Gebeine und Antlitz. Leipzig.

[7] Rekonstruktion der Weichteile auf einem weiblichen Schädel aus einem Altsächs. Graber-feld zu Grone bei Göttingen.Corr. - Bl. Anthropol.Ges. 39, N 1/2. Braunschweig

[8]Tandler, J. 1909 Über den Schädel Haydns. Mitt Anthropol Ges. 39:260- 279. Tandler, J. 1912

[9] W.M. Krogman and M.Y. Iscan. The Human Skeleton in Forensic Medicine. Charles C. Thomas, Springer edition, IL, 2nd edition, 1986.

[10] Clement, J. y Murray K. m. 2005 Computer-graphic facial reconstruction. Elsevier Academic Press

[11] Vanezis P, Blowes RW, Linney AD, Tan AC, Richards R, Neave RAH. Application of three-dimensional computer graphics for facial reconstruction and comparison with sculpting techniques. Forensic Sci Int 1989.

[12]Vanezis P, Vanezis M, McCombe G, Niblett T. Facial reconstruction using 3-D computer graphics. Forensic Sci Int 2000.

- 86 - [13] Caroline Wilkinson, Computerized Forensic Facial Reconstruction, The Unit of Art in Medicine, The University of Manchester, Manchester, UK, 2005 Moss JP, Linney AD,Grinrod SR,Arridge SR, Clifton JS. Threedimensional visualisation of the face and skull using computerized tomography and laser scanning techniques. Eur J Orthod 1987

[14] SERRANO, Carlos, María VILLANUEVA, Jesús LUY y Karl F. LINK (1997) El proyecto “La cara del mexicano”. Un sistema de retrato hablado asistido por computadora para la población mexicana. Boletin de Enlaces: 26-28, Coordinación de Humanidades, UNAM, México.

[15] Arridge SR, Moss JP, Linney AD, James DR. Three-dimensional digitization of the face and skull. J Max- Fac Surg 1985.

[16] Wilkinson CM. “Virtual” sculpture as a method of computerized facial reconstruction. Proceedings of the first international Conference on Reconstruction of Soft Facial Parts (RSFP), Potsdam, Germany, 2003.

[17] Mesa Quiles, Fernando Javier; Terrero Hernández, Roger. Gestor de bibliotecas de script en Python para el desarrollo de Paseos Virtuales sobre Blender. 2010.

[18] High Performance Cluster Computing: Programming and Applications, Volume II, Prentice Hall, Upper Saddle River, New Jersey Buyya, R. 1999

[19] Parallel Programming with MPI, Morgan Kaufmann, San Francisco.Pacheco P.1997

[20] Geometria para la Informatica, Joan Trias, Alfaomega, Mexico, 2005

[21] Blender Index Release 2.59, Blender foundation, septiembre 2005

[22] Python Essential Reference, David M. Beazley, USA, 2006

- 87 - Anexos

A. Código import bpy scn = bpy.context.scene # initial setup of the triangle mesh and object. triMesh = bpy.data.meshes.new( 'triMesh' ) triOb = bpy.data.objects.new( 'triOb', triMesh )

# Layout panel class LayoutPanel(bpy.types.Panel): bl_label = "RECONSTRUCCION TRIDIMENSIONAL" bl_space_type = "VIEW_3D" bl_region_type = "TOOL_PROPS"

def draw(self, context): layout = self.layout

layout.label("CIDETEC - IPN - ROCIO G") row = layout.row() split = row.split(percentage=0.30) col = split.column() col.operator("my.button", text="Carga Objeto").number=1 col.operator("my.button", text="Puntos").number=2 col.operator("my.button", text="Reconstruye").number=3 col.operator("my.button", text="Orejas").number=4 split = split.split(percentage=0.5) col = split.column() col.operator("my.button", text="Nariz").number=5 col.operator("my.button", text="Piel").number=6 col.operator("my.button", text="Textura").number=7 col.operator("my.button", text="Borrar").number=8 #split = split.split(percentage=0.5) #col = split.column() #col.operator("my.button", text="Inicia").number=9

- 88 -

# Button class OBJECT_OT_Button(bpy.types.Operator): bl_idname = "my.button" bl_label = "Button" number = bpy.props.IntProperty() row = bpy.props.IntProperty() loc = bpy.props.StringProperty()

def execute(self, context): if self.loc: words = self.loc.split() self.row = int(words[0]) self.number = int(words[1]) if self.number == 1: print("Carga objeto botoncito1") full_path_to_file = " craneo.obj" bpy.ops.import_scene.obj(filepath=full_path_to_file) mate=bpy.data.materials.new('principal') mate.diffuse_color = (.800, .489,.469) mate.diffuse_shader = 'LAMBERT' mate.diffuse_intensity = 0.800 mate.specular_color = (1,1,1) mate.specular_shader = 'COOKTORR' mate.specular_intensity = 0.0 mate.emit=0.5 bpy.data.objects['Mesh'].data.materials.append(mate)

for item in bpy.data.objects: print(item.name, item.type) for item in bpy.data.objects: if item.type == "MESH": print(item.name) #Pone musculo elif self.number == 2: print("Botoncito 2") ###Aplicacion Fase1

- 89 -

# vertex data t1 = (v2,v1,v11) t2 = (v1,v2,v11D) t3 = (v11,v12,v2) t4 = (v11D,v2,v12D) t5 = (v12,v3,v2) t6 = (v2,v3,v12D) t7 = (v12,v4,v3) t8 = (v3,v4,v12D) #h t9 = (v11,v17,v12) t10 = (v11D,v12D,v17D) t11 = (v12,v16,v17) t12 = (v12,v15,v4) #huecoIzq t13 = (v12D,v4,v15D) #huecoDer t14 = (v12D,v16D,v17D) t15 = (v15,v14,v13) t16 = (v13,v14,v4) t17 = (v4,v14,v5) t18 = (v4,v5,v14D) t188 = (v13D, v14D, v16D) t19 = (v4,v14D,v13D) t20 = (v13D,v14D,v15D) t21 = (v15D,v19D,v16D) t22 = (v15,v16,v19) t23 = (v14,v19,v5) t24 = (v14D,v5,v19D) t25 = (v19,v16,v20) t26 = (v19,v20,v21) t27 = (v5,v19,v6) t28 = (v5,v6,v19D) t29 = (v19D,v20D,v16D) t30 = (v20,v17,v18) t31 = (v20,v18,v21) t311 =(v17, v20, v16)

- 90 - t32 = (v19D,v20D,v21D) t33 = (v18,v10,v21) t34 = (v7,v21,v8) t35 = (v7,v8,v21D)

t39 = (v8,v9,v21D) t40 = (v9,v10,v21) t41 = (v9,v10,v21D) t42 = (v18D,v9,v21D)

#parpados t43 = (v12,v22,v22D) t44 = (v12D, v23, v23D)

#labios #labio superior t45 = (v19, v20, v6) t46 = (v19, v19D, v6) t47 = (v19D, v6, v20D) #labio inferior t48 = (v21, v21D, v8) t488=(v15D,v13D,v14D) t49 = (v24, v18, v17) t50 = (v24D, v18D, v17D)

t51 = (v16D, v18D, v17D)

#triang acompletar t52 = (v12D, v23, v16D) t53 = (v23, v15D, v13D) t54 = (v22, v15, v13) t55 = (v23, v15D, v16D)

allVerts = t1 + t2 + t3 + t4 + t5 + t6 + t7 + t8 + t9 + t10 + t11 + t14 + t15 + t155 + t16 + t17 + t18 + t188 + t19 + t20 + t200 + t21 + t212 + t22 + t222 + t23 + t223 + t24 + t25 + t26 + t27 + t28 + t29 + t30 +

- 91 - t31 + t311 + t32 + t33 + t34 + t35 + t36 + t37 + t38 + t39 + t40 + t41 + t42 + t43 + t44 + t45 + t46 + t47 + t48 + t488 + t49 + t50 +t51 + t52 + t53 +t54 + t55

allFaces = topAndBottomFaces #+ sideFaces + baseFace

# load up the mesh data triMesh.from_pydata( allVerts, (), allFaces )

scn.objects.link( triOb )

grados = bpy.data.objects['Mesh'].rotation_euler[0]=1.37

bpy.data.objects['triOb'].rotation_euler = bpy.data.objects['Mesh'].rotation_euler bpy.data.objects['triOb'].location = bpy.data.objects['Mesh'].location bpy.data.objects['triOb'].location.y =bpy.data.objects['Mesh'].location.y - 0.012490 bpy.data.objects['triOb'].location.z =bpy.data.objects['Mesh'].location.z + 0.0035374

bpy.data.objects['Mesh'].rotation_euler[0]=1.57 mat=bpy.data.materials.new('musculo') mat.diffuse_color = (.800, .489,.469) mat.diffuse_shader = 'LAMBERT' mat.diffuse_intensity = 0.800 mat.specular_color = (1,1,1) mat.specular_shader = 'COOKTORR' mat.specular_intensity = 0.0 mat.emit=0.5 bpy.data.objects['triOb'].data.materials.append(mat) elif self.number == 3: print("Botoncito 3-Reconstruye") bpy.data.objects['triOb'] bpy.context.active_object bpy.ops.object.mode_set(mode='EDIT') bpy.ops.transform.push_pull(value=0.0202, mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, release_confirm=False) bpy.ops.object.mode_set(mode='OBJECT') elif self.number == 4: print("Botoncito 4-Orejas")

- 92 - full_path_to_file = " earscjo.obj" bpy.ops.import_scene.obj(filepath=full_path_to_file) mato=bpy.data.materials.new('principalore') mato.diffuse_color = (.800, .489,.469) mato.diffuse_shader = 'LAMBERT' mato.diffuse_intensity = 0.800 mato.specular_color = (1,1,1) mato.specular_shader = 'COOKTORR' mato.specular_intensity = 0.0 mato.emit=0.5 bpy.data.objects['Mesh.001'].data.materials.append(mato) elif self.number == 5: print("Botoncito 5-Nariz") full_path_to_file = " nariz.obj" bpy.ops.import_scene.obj(filepath=full_path_to_file) matn=bpy.data.materials.new('principalnar') matn.diffuse_color = (.800, .489,.469) matn.diffuse_shader = 'LAMBERT' matn.diffuse_intensity = 0.800 matn.specular_color = (1,1,1) matn.specular_shader = 'COOKTORR' matn.specular_intensity = 0.0 matn.emit=0.5 bpy.data.objects['Mesh.002'].data.materials.append(matn) elif self.number == 6: print("Botoncito 6-Piel") bpy.data.objects['Mesh'] bpy.context.active_object bpy.ops.object.editmode_toggle() bpy.ops.transform.shrink_fatten(value=-0.00436, mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), release_confirm=False) bpy.ops.mesh.vertices_smooth(repeat=1) bpy.ops.object.mode_set(mode='OBJECT') #bpy.ops.object.shade_smooth() elif self.number == 7: print("Botoncito 7-Textura")

- 93 - #txtu=bpy.ops.image.open(filepath=" cara3.jpeg", filter_blender=False, filter_image=True, filter_movie=True, filter_python=False, filter_font=False, filter_sound=False, filter_text=False, filter_btx=False, filter_collada=False, filter_folder=True, filemode=9, relative_path=True, display_type='FILE_DEFAULTDISPLAY')

elif self.number == 8: print("Botoncito 8-Borra") candidate_list = [item.name for item in bpy.data.objects if item.type == "MESH"] for item in bpy.data.meshes: bpy.data.meshes.remove(item) elif self.number == 9: print("Botoncito 9-Ejecuta") bpy.ops.text.run_script()

else: print("ERROR...") return{'FINISHED'}

# Registration bpy.utils.register_module(__name__)

- 94 - B. Tejidos Blandos en México

- 95 - - 96 -