Mayaneuron: motor para la generación de imágenes de alta calidad de simulaciones de circuitos corticales

Agudo Silva, Omar (2011). Mayaneuron: motor para la generación de imágenes de alta calidad de simulaciones de circuitos corticales. Proyecto Fin de Carrera / Trabajo Fin de Grado, Facultad de Informática (UPM) [antigua denominación].

Descripción

Título: Mayaneuron: motor para la generación de imágenes de alta calidad de simulaciones de circuitos corticales
Autor/es:
  • Agudo Silva, Omar
Director/es:
  • Peña Sánchez, José María
  • Hernando Vieites, Juan
Tipo de Documento: Proyecto Fin de Carrera/Grado
Fecha: Febrero 2011
Materias:
Escuela: Facultad de Informática (UPM) [antigua denominación]
Departamento: Arquitectura y Tecnología de Sistemas Informáticos
Licencias Creative Commons: Reconocimiento - Sin obra derivada - No comercial

Texto completo

[img]
Vista Previa
PDF (Document Portable Format) - Se necesita un visor de ficheros PDF, como GSview, Xpdf o Adobe Acrobat Reader
Descargar (9MB) | Vista Previa

Resumen

El interés principal de este proyecto es el de promover la divulgación científica del BBP a través de imágenes, vídeos y películas 3D de alta calidad. Este interés ha suscitado la creación de unmotor de renderizado, el cual ha sido integrado en una arquitectura de software existente. Primero se realizó un análisis y estudio del problema, que determinó los componentes software del BBP que se verían afectados por la integración, así como las aplicaciones y técnicas que se usarían para el renderizado. Finalmente se propuso e implementó una solución específica haciendo uso de las técnicas de la ingeniería del software. La implementación del motor de renderizado se ha realizado con vistas a su posterior integración con el software existente. Si bien la elección de la técnica de renderizado y la aplicación de modelado no se han visto afectadas por dicha integración, el diseño y creación del shader específico y los métodos propios del motor han tenido como objetivo un óptimo ensamblaje en la arquitectura previa del BBP. La técnica de renderizado empleada ha sido trazado de rayos, ampliamente utilizada en las películas de animación y que posibilita la generación de imágenes de alta calidad, objetivo prioritario del proyecto. La aplicación Autodesk Maya ha sido la elegida para modelar la escena debido a su potencial y características, que posibilitaban, entre otras cosas, la creación de un shader específico para la asignación de color y transparencia a las neuronas del modelo. Como se ha visto en la sección resultados, la representación de la información de simulación mediante el uso del bbpShader, hecho a medida para el proyecto, junto con el diseño de la red de sombreado, han mejorado notablemente la eficiencia del renderizado de las imágenes en términos de consumo de memoria y tiempo empleado. Finalmente, la implementación de los métodos del motor ha tenido en cuenta las precondiciones y postcondiciones impuestas por la arquitectura del BBP y ha permitido interpretar, representar y renderizar elmodelo 3D. Por otra parte, el motor se ha integrado en la aplicación cliente-servidor BlueHub del BBP. Se ha requerido el uso de una técnica de envoltorio para enlazar los lenguajes C++ de BlueHub y Python del motor de renderizado. También se han implementado opciones específicas del motor de renderizado, para lo cual se ha creado un fichero de configuración específico del motor de Maya y un fichero de interfaz CORBA o IDL, posibilitando la comunicación de dichas opciones entre el cliente y el servidor. Finalmente se han introducido pequeñas modificaciones en algunos componentes del BBP para completar la integración. Cabe la pena destacar que se han utilizado las tecnologías presentes en el BBP, haciendo elmotor 100%compatible con el software existente, en concreto, se ha utilizado CORBA para la comunicación cliente-servidor, la biblioteca Boost para el enlace C++- Python yCMake para la compilación de la biblioteca que posibilita dicho enlace y para la compilación del shader. Todo este proceso ha posibilitado el renderizado de alta calidad buscado, además de reducir el consumo de recursos y minimizar los efectos que integración del motor ha tenido sobre el software existente. Dada la complejidad del proyecto, se han presentado dificultades durante el desarrollo del mismo. La elección de Python como lenguaje nativo del motor de renderizado ha posibilitado su implementación en un menor tiempo, pero ha añadido dificultades técnicas no previstas durante la fase de diseño. En concreto, la interacción de Boost Python con el intérprete de Python en una aplicación multihilo como BlueHub ha requerido la gestión manual del GIL (Global Interpreter Lock), un cerrojo utilizado para proteger el acceso concurrente a los objetos de Python. Además, la API de Maya para Python también ha generado dificultades debido a diversos bugs existentes en la versión actual de la biblioteca. Otra dificultad que se ha presentado ha sido la modificación y uso de BlueHub y el bbp_sdk_python y el uso de las APIs y demás bibliotecas que interactúan con el motor de renderizado. El estudio y aprendizaje del diseño y funcionalidad del mencionado software, que en la mayoría de los casos carecía de una documentación adecuada, ha requerido mucho tiempo. La API de Maya utiliza una terminología y tiene estructura muy particular que también ha llevado a la confusión en algunos casos dado que la documentación de referencia es la de C++, no existiendo una referencia completa para Python. Se han utilizado algunas directivas de Boost Python muy específicas y complejas, cuyo descubrimiento y comprensión ha necesitado un arduo estudio de la documentación. Por ejemplo, para definir la gestión de memoria de algunos argumentos. Las llamadas que se realizan desde el servidor de BlueHub al motor de renderizado parten de distintos threads, cuya gestión ha requerido la lectura del código fuente dada la escasa documentación del diseño de la aplicación. Por último, lamodificación del bbp_sdk_python para “envolver” algunas clases y métodos no presentes en la biblioteca ha precisado un análisis detallado del código del BBP-SDK con el fin de aplicar las directivas de Boost Python necesarias para el “envoltorio”.

Más información

ID de Registro: 6016
Identificador DC: http://oa.upm.es/6016/
Identificador OAI: oai:oa.upm.es:6016
Depositado por: Archivo Digital UPM
Depositado el: 15 Feb 2011 12:39
Ultima Modificación: 20 Abr 2016 14:40
  • Open Access
  • Open Access
  • Sherpa-Romeo
    Compruebe si la revista anglosajona en la que ha publicado un artículo permite también su publicación en abierto.
  • Dulcinea
    Compruebe si la revista española en la que ha publicado un artículo permite también su publicación en abierto.
  • Recolecta
  • e-ciencia
  • Observatorio I+D+i UPM
  • OpenCourseWare UPM