PROGRAMA ESTRATÉGICO DE INVESTIGACIÓN Y DESARROLLO PARA EL SECTOR COLOMBIANO DE LA ANIMACIÓN Y VIDEOJUEGOS
PAPEL Y LÁPIZ Pablo A. Figueroa, Diego H. Rodríguez, Daniel Wilches, Julián E. Arcos Argoty, Agustín Conde, Juan M. Moreno Beltrán y Rafael A. Ruiz Grupo de Investigación IMAGINE Departamento de Ingeniería de Sistemas y Computación Proyecto cofinanciado por Colciencias Programa Nacional de Ciencia, Tecnología e Innovación en TIC
Universidad de los Andes Bogotá, Colombia
PRÓLOGO Desde hace varios años el gobierno colombiano busca impulsar el sector de las tecnologías. Entre ellos destaca el sector de la animación y los videojuegos. De esto desprende uno de los proyectos más ambiciosos desarrollados en este sector, el proyecto D.A.V.I.D (Desarrollo en Animación y Videojuegos), que es un apoyo al sector de la industrial de la animación y los videojuegos en Colombia, el cual es financiado por Colciencias. Dentro del marco del proyecto D.A.V.I.D, uno de sus pilares es el desarrollo de una herramienta que permita a las personas con escasos recursos, poder construir pequeñas animaciones a través de bocetos hechos mediante papel y lápiz. La implementación de esta herramienta genera una gran curiosidad en las personas que lo prueban, incluyéndome. Es bastante interesante ver como de un simple dibujo de pocas líneas en un papel, pueden aparecer figuras mucho más complejas en la pantalla del computador, como un conejo o una ardilla. También para los niños es interesante que puedan dibujar algo en el papel, y luego logren ver una pequeña animación del dibujo que crearon ellos mismos. La idea de los autores del presente libro es dar a conocer este trabajo y permitir que otras personas lo puedan perfeccionar, de manera que no quede como un trabajo más en los anaqueles de alguna biblioteca. El documentar el manejo y permitir que otras personas puedan mejorar esta herramienta es una de las grandes ventajas que aporta este libro, sobre todo para que en un futuro se pueda contar con una versión más robusta y potente, que permita que las personas puedan crear sus propias animaciones sin necesidad de gastar mucho dinero en la adquisición de un computador potente o en costosas licencias que solo van a ser usadas una vez. El permitir que las personas con escasos conocimientos en computación o cine puedan generar sus propias animaciones busca fomentar la creatividad y la creación de nuevas propuestas artísticas que reflejen más puntos de vista, en una sociedad donde hace falta ver con los ojos de los demás. En las primeras páginas se puede encontrar una explicación de los conceptos sobre los que está basada la herramienta. En seguida se describe como fue diseñada, lo que permite entender su funcionamiento y cómo está constituida. Finalmente se explica el procedimiento para que un lector conozca cómo instalar y revisar la aplicación personalmente, para que pueda mejorar en algunos de los aspectos que aparecen en la última parte del libro en la que se menciona el trabajo que queda por realizar. Rafael Antonio Ruiz Gutiérrez Ingeniero de Sistemas
TABLA DE CONTENIDO Contenido INTRODUCCIÓN ..................................................................................................................................... 9 CAPÍTULO I: ......................................................................................................................................... 11 ANTECEDENTES ................................................................................................................................... 11 CAPÍTULO II: ........................................................................................................................................ 15 DISEÑO DE LA APLICACIÓN ................................................................................................................. 15 COMPONENTES DE LA INTERFAZ .................................................................................................... 16 DETALLES DE IMPLEMENTACIÓN DEL SISTEMA .............................................................................. 17 CAPÍTULO III: ....................................................................................................................................... 23 HERRAMIENTA .................................................................................................................................... 23 CARPETA “WWW” ........................................................................................................................... 23 CARPETA “ImageProcessing” .......................................................................................................... 24 CARPETA “VideoGeneartor”............................................................................................................ 26 CARPETA “SoundFilm”..................................................................................................................... 27 CARPETA “EmailGenerator” ............................................................................................................ 27 CAPÍTULO IV: ....................................................................................................................................... 29 INSTALACIÓN ....................................................................................................................................... 29 CAPÍTULO V: ........................................................................................................................................ 43 MANUAL DE USO................................................................................................................................. 43 EJEMPLO DE USO............................................................................................................................. 43 POSIBLES PROBLEMAS .................................................................................................................... 45 DESCRIPCIÓN DE LA INTERFAZ ........................................................................................................ 47 CAPÍTULO VI: ....................................................................................................................................... 51 EXTENSIÓN .......................................................................................................................................... 51 TRABAJOS FUTUROS........................................................................................................................ 51 Mejoras....................................................................................................................................... 51 Extensiones ............................................................................................................................... 51 BIBLIOGRAFÍA ...................................................................................................................................... 53
INTRODUCCIÓN Con un énfasis en la educación, no todas las escuelas pueden permitirse asegurar que cada estudiante tenga acceso a su propio ordenador, lo que implica que se debe compartir el ordenador dentro de la clase. Este problema limita las actividades que los docentes pueden planificar para incorporar estas tecnologías modernas. En consecuencia, es importante centrar la atención de los niños cuando se trabaja con la tecnología, aunque se reconoce que los niños no pueden estar en contacto constante con la tecnología a lo largo de la actividad. Teniendo en cuenta este escenario, se presenta una técnica para incorporar la tecnología en el ambiente de aprendizaje de los estudiantes. En este trabajo, los estudiantes pueden interactuar con los ordenadores que utilizan una interfaz ubicua en cualquier aula: lápiz y papel. Aquí, los niños pueden dibujar historias en una hoja de papel y mediante el escaneo de la hoja, pueden convertir su dibujo en una animación. Una interfaz basada en bocetos (SBI, por sus siglas en inglés: Sketch Based Interface) que permite a los niños dibujar los símbolos definidos por el usuario a mano alzada para contar una historia, y, sin necesidad de tener conocimientos previos de software de animación, a transformar sus dibujos en animaciones. Debido a la naturaleza de entrada minimalista de esta interfaz, dibujos simples pueden convertirse en animaciones interesantes sin entender las complejidades detrás del software especializado. El proyecto Papel y Lápiz (PYL) es una interfaz basada en bocetos que les facilita a usuarios no expertos el crear una animación con sonido, usando simplemente un lápiz y un papel. El objetivo de esta interfaz es facilitar el proceso de producción de animación offline. Los usuarios pueden dibujar un boceto usando un vocabulario de símbolos 2D predefinidos que representan a un personaje 3D, acciones y/o sus relaciones. En la figura 1 se puede observar un boceto dibujado en 2D, y su correspondiente escena 3D generada.
Figura 1: Boceto 2D (izquierda), Escena 3D (derecha).
CAPÍTULO I: ANTECEDENTES Clasificamos los trabajos sobre interfaces basadas en bocetos (SBI) en dos categorías principales, directamente asociadas con el trabajo a realizar, SBI para Modelado y SBI para animación. En el SBI para modelado se encontraron problemas similares a los nuestros, a saber, la adquisición del boceto inicial y el reconocimiento de dibujos realizados por el usuario y las intenciones. El SBI para animación es similar a nuestro trabajo por la necesidad de obtener información de los movimientos de las imágenes resultantes de los bocetos.
SBI para Modelado Una variedad de sistemas constructivos en tiempo real han sido desarrollados para permitir el modelado a través de bocetos. Igarashi desarrolló un sistema donde el usuario dibuja un contorno 2D, y mediante el análisis de este contorno el sistema infla el dibujo en un modelo 3D; construyendo de ese modo un modelo 3D de un dibujo 2D. Debido a que un boceto 2D es naturalmente ambiguo en 3D, estos sistemas tienen heurísticas complejas para transformar el 2D en la dimensión adicional. Otros autores como Tai, Smitch y Olsen, también han utilizado bocetos como entrada para mediante el contorno hacer la reconstrucción y la deformación. Karpenko propone un sistema que es capaz de reconstruir un modelo 3D a partir de dibujos 2D. En su método el usuario dibuja algunas de las líneas que corresponden al modelo, y el sistema infiere otros contornos ocultos y un suave sólido 3D es sacado de ellos. En los métodos de otros autores como Nealen, Rivers, Lipson y Shpitalni, los trazos dibujados por el usuario se aplican a un modelo 3D superficial y sirven como asas para el control de la geometría. Los usuarios pueden fácilmente añadir, eliminar o deformar estas curvas de control como si se trabajara con un dibujo 2D directamente. Si bien esos sistemas reconstruyen modelos 3D a partir de trazos detallados, el nuestro utiliza el trazo para recuperar los modelos 3D a partir de una base de datos. Los modelos 3D y los trazos a los que están asociados no necesitan ser similares en forma.
En los métodos propuestos por Lee y Funkhouser; y Yoon y Kuijper los usuarios dibujan bocetos para recuperar Modelos 3D a partir de una base de datos en la que cada modelo ha sido previamente asociado con un boceto. Nuestro trabajo usa conceptos similares para recuperar objetos de una base de datos de usuario, pero construye en estos conceptos la forma de recuperar también animaciones y especificar el movimiento.
SBI para Animación Hay una diversidad de sistemas de lotes que pueden convertir un boceto en una animación. Davis desarrolló un sistema donde una animación humana articulada se genera en 3D a partir de una secuencia de dibujos que representan diferentes fotogramas claves en la animación. Mientras que en este sistema, el usuario dibuja frame por frame las animaciones, en el nuestro, varias animaciones han sido pre-grabadas y están disponibles para ser recuperadas de una base de datos según el dibujo del usuario. Esto le da a nuestro método la ventaja de que la animación puede contener más detalle y su representación es exacta. Los sistemas existentes offline, tales como los de Yi Lin y Jain, permiten al usuario definir poses 2D editando un esqueleto o plantilla y empleando una base de datos de captura de movimiento para la generación de poses en 3D. El primero toma el boceto de entrada y recomienda las poses 3D de la base de datos que más se asemejan al boceto. El segundo hace una proyección 2D de los datos de la captura de movimiento, alinea los ángulos de las articulaciones para que coincida con cada boceto y finalmente modifica la línea de tiempo de la captura de movimiento para que cada frame coincida con su respectivo boceto. Otras obras importantes son los sistemas de animación en tiempo real. En Motion Doodles el usuario define una ruta para un personaje dibujando una secuencia continua de líneas, arcos y bucles que representa la ubicación, la sincronización y los tipos de movimiento que el personaje puede realizar. Igarashi en su trabajo “As-rigid-as-possible shape manipulation”, el usuario deforma una Figura 2D representada como una malla de triángulos. Dentro de la malla, el usuario define y transforma los puntos de control, el sistema reposiciona el resto de los vértices mientras se minimiza la distorsión. Todos estos sistemas se centran en la creación de contenidos digitales alrededor de un personaje, haciendo caso omiso de otros elementos, tales como los movimientos de la cámara y actores en una historia. Al abordar estos, nuestro sistema complementa los trabajos previos.
Hay numerosas obras que tienen que ver también con el procesamiento de dibujos, por ejemplo, las obras de Pusch; y Olsen y Samavati tratan con el problema de que la mayoría de SBIs sugieren a los usuarios emplear trazos simples en lugar de emplear muchos pequeños trazos para hacer formas más precisas. En esos métodos se analizan los trazos y las áreas con mucho detalle se sustituyen por un solo trazo que estima razonablemente la intención del usuario. A pesar de que este embellecimiento de bocetos es útil en algunos casos, en nuestro SBI los usuarios no necesitan dibujar con precisión los símbolos, no son necesarios los trazos con alta precisión y tampoco este tipo de procesamiento del boceto.
CAPÍTULO II: DISEÑO DE LA APLICACIÓN La interfaz presentada transforma un boceto 2D en una animación en 3D. El boceto de la figura 2 representa una historia de un robot y un camión, los actores son representados mediante símbolos definidos por el usuario. El robot camina hacia el camión, la trayectoria del movimiento es indicado mediante una flecha, y la acción es indicada por su nombre. Aunque en este ejemplo el actor está caminando directamente hacia el camión, la interfaz es lo suficientemente flexible para representar una amplia gama de acciones y trayectorias. Por ejemplo podría crearse una escena donde el actor corra o dispare mientras se mueve hacia el camión, o se puede indicar que el actor debe quedarse quieto o caminar en otra dirección. Vale la pena notar que los símbolos de las escenas han sido cuidadosamente seleccionados para lograr una fácil identificación dentro de nuestro sistema. Además, cada símbolo tiene un significado fácilmente reconocible por parte del usuario.
Figura 2: Ejemplo de boceto usado en la aplicación.
El SBI propuesto se basa en símbolos fácilmente reconocibles, cuya intención y uso son lo más claro posible a los usuarios. Aquellos símbolos que representan los objetos de un dibujo se denominan actores; por ejemplo un hombre de palos se podrían utilizar para identificar a una persona, la silueta de un perro para identificar a un perro, y una silueta de un coche para identificar un coche. En consecuencia, la interfaz de usuario es lo suficientemente intuitiva para ser aprendida en un corto período de tiempo. Para representar el movimiento en una escena, el usuario emplea el símbolo intuitivo de una flecha que indica que un actor debe realizar un movimiento. La dirección y curvatura de las flechas indican las rutas que los actores siguen mientras se mueven.
COMPONENTES DE LA INTERFAZ La interfaz está compuesta por tres tipos diferentes de símbolos: actores, que corresponden a los objetos de la escena; flechas, que representan la trayectoria de movimiento de los actores; y las acciones, que son las palabras escritas a mano que indican el nombre de la acción a realizar. La siguiente sección detalla cómo el sistema procesa estas tres clases de símbolos. 1) Símbolos de objetos: los objetos de la interfaz son definidos por el usuario con el objetivo de que sean abstractos y fácilmente dibujables. El usuario define y registra los símbolos asociándolos con los modelos de una base de datos de usuario. Estos símbolos pueden ser cambiados entre historias, pero se recomienda seguir estas pautas. Primero, los símbolos deben ser lo más simple posible para que dibujar una historia sea un proceso fácil y rápido. Segundo, símbolos debe ser significativos para el usuario, para reducir el tiempo dedicado a buscar asociaciones de símbolos y por último, los símbolos deben ser suficientemente diferentes uno del otro, para facilitar el reconocimiento de estos por parte del computador. Los símbolos pueden ser dibujados en cualquier parte del dibujo, y se utilizan tantas veces como se desee. En consecuencia, la cantidad de actores en un boceto sólo está limitada por consideraciones prácticas como el tamaño de papel, la memoria del ordenador, etc. 2) Símbolos de dirección (Flechas): Las flechas permiten especificar los movimientos de cada actor. El objeto más cercano a la cola de la flecha es interpretado como el objeto que realiza el movimiento. Debido a que nuestras escenas siempre son dibujadas desde arriba, las flechas representan movimiento en el plano horizontal, la trayectoria de las flechas indican cambios en los componentes X y Z. En la implementación del sistema actual el componente en Y siempre está fijado a 0; por lo que incluso si la escena es interpretada como una escena 3D, todos los movimientos y posiciones están limitados a un espacio de 2 dimensiones y los objetos yacen sobre un terreno llano. Observe la Figura 3 donde se ilustra el sistema de coordenadas utilizado. 3) Símbolos de Acción: Describir una acción con un simple bosquejo puede convertirse en una tarea difícil. Sin embargo, el uso de una palabra tan simple como "RUN", "JUMP", "WALK", etc., es fácil y significativa. Por esta razón, las acciones están representadas por un nombre, correspondiente a animaciones predefinidas que un actor puede realizar.
Para asociar una acción con un objeto dentro de la escena, el nombre de la acción debe estar encerrado dentro de una caja junto al objeto. La proximidad se utiliza para asociar una acción con símbolos en la escena. La interfaz ha sido diseñada de manera que el usuario puede añadir sus propias acciones, y en consecuencia configurar sus características de acuerdo a sus necesidades.
Figura 3. Sistema de coordenadas utilizado. El plano horizontal está comprendido entre los ejes X y Z. El eje Y se considera apuntando hacia arriba, por tanto no hay movimiento en este eje en nuestras escenas 3D. Modelo de Blender Foundation | www.blender.org
DETALLES DE IMPLEMENTACIÓN DEL SISTEMA Como se ilustra en la Figura 4, el proceso para la implementación se compone de seis tareas: (1) definición de símbolo, (2) dibujo de bosquejo, (3) adquisición del bosquejo, (4) reconocimiento de símbolos, (5) interpretación de la escena y (6) generación de la escena 3D.
Figura 4: Pipeline de la aplicación.
Definición de símbolos Los usuarios pueden utilizar símbolos predefinidos y personalizados en sus bosquejos. Para definir los símbolos personalizados es necesario que el usuario los dibuje aislados en una hoja de papel distinta de modo que el computador pueda aprenderlo de manera aislada y minimizando el ruido causado por otros trazos a su alrededor. Los símbolos creados de esta manera representan a los actores dentro de la historia. A pesar de que el usuario es libre de elegir los símbolos que desee, el sistema requiere que un símbolo sea conexo, es decir, que todos sus trazos deben estar conectados entre sí, de manera que el sistema pueda decidir qué trazos pertenecen a un mismo objeto. Además, los símbolos definidos por el usuario deben ser únicos para disminuir la ambigüedad entre ellos. Una vez los símbolos personalizados han sido creados el usuario debe asociarlos con un elemento 3D, es decir, debe darles un significado para el sistema. Esta asociación se hace mediante un archivo de configuración. Si estos objetos deben tener animaciones entonces estas pueden ser definidas también cuando el mismo archivo de configuración. Nuestro sistema también permite el uso de símbolos predefinidos como por ejemplo la cámara vista en la Figura 5a, el rectángulo que encierra las palabras que indican acción en la Figura 5b y las flechas que indican movimiento en la Figura 5c.
Figura 5: Ejemplos de símbolos predefinidos. (a) Cámara que indica el ángulo desde el que la escena es grabada, (b) Rectángulo para indicar acciones, (c) Flecha para indicar la trayectoria de la cámara o de los actores
Dibujo del boceto en papel En esta etapa, usando lápiz y papel, los usuarios componen todos los elementos de una escena de modo que tenga sentido para ellos. Los usuarios son libres de utilizar los símbolos como deseen, pero siempre deben cumplir con estas condiciones:
Ninguno de los símbolos puede solaparse con otros.
Un actor debe tener como máximo una flecha Un actor debe tener como máximo una acción (palabra escrita a mano). Todas las palabras deben ser escritas en mayúsculas y encerradas por un rectángulo. La composición debe ser dibujada en papel blanco común. No deben haber líneas de cuadrícula, u otros diseños.
Después de que el usuario ha construido su dibujo siguiendo estas restricciones, el dibujo está listo para ser ingresado en el sistema para iniciar el proceso de conversión a animación 3D.
Adquisición del bosquejo El dibujo en papel debe ser transformado en una imagen digital por cualquier medio que se encuentre disponible. Ejemplos de estos medios son tomarle una fotografía con el celular o utilizar un escáner. En esta etapa de adquisición las imágenes son propensas a contener diversos elementos de ruido. Nuestro sistema debe encargarse de minimizar el ruido para que la etapa de reconocimiento se pueda realizar con mayor exactitud. Las fuentes comunes de ruido son imperfecciones en el papel, problemas relacionados con el escáner y distorsiones por el ángulo en que las fotografías son tomadas. Para lidiar con el ruido del sistema se aplican una secuencia de filtros que, entre otros, eliminan objetos pequeños (15x15 píxeles o menos): Algunas imágenes son demasiado oscuras o demasiado brillantes, por lo que el sistema primero escala el histograma de la imagen. Después se aplica un filtro de mediana sobre la imagen para suavizarla, eliminando así algunos puntos de ruido. Finalmente se umbraliza la imagen utilizando el método de Otsu. Cualquier porción de ruido que escape a esta secuencia de filtros es filtrada por el algoritmo de reconocimiento de patrones en una última fase de este proceso (los objetos no reconocidos se ignoran), por tanto, no afecta a la animación generada.
Reconocimiento de símbolos Después de construir una imagen en escala de grises, casi libre de ruido, el sistema procede a extraer los componentes conexos asignándole una etiqueta única a cada uno de ellos. Luego, el sistema trata de identificar cada componente dibujado por el usuario, utilizando el algoritmo Angle Quantization, descrito por Olsen en su trabajo de 2007, para minimizar la diferencia entre cada símbolo dibujado por el usuario contra los símbolos predefinidos y personalizados que hay
en la base de datos. Si el componente no coincide con alguno de los símbolos conocidos el sistema trata de identificar si se trata de una palabra escrita a mano, si no se tienen éxito, el sistema intenta identificar si se trata de una flecha o no. Finalmente componentes no reconocidos son ignorados. Aunque aquí mencionamos el algoritmo Angle Quantization, el sistema está diseñado para permitir el uso de cualquier algoritmo de reconocimiento de patrones que pueda trabajar con imágenes. Esta tarea de reconocimiento puede ser vista como el árbol de decisión de la Figura 7. Estas técnicas se describen con más detalle dentro de las siguientes secciones. 1) Reconocimiento de actores: Con el fin de reconocer los símbolos de los actores del conjunto de todos los componentes se utiliza el algoritmo de Angle Quantization con K = 16 bins, el cual es sugerido por Olsen en us trabajo. Consecuentemente los filtros de adelgazamiento (1-pixel thinning) y de seguimiento de puntos (point tracker) son aplicados antes del Angle Quantization. Gracias a que el dibujo se encuentra segmentado con anterioridad el algoritmo de Angle Quantization es aún más preciso. Como resultado, la métrica de comparación (distancia euclidiana) entre dos elementos se hace más precisa. Una métrica experimental de 0,02 o menos indica que dos características son similares. Al comparar un elemento con cada símbolo personalizado, el elemento que cumpla la métrica mínima con los criterios de similitud es el elegido y el elemento es clasificado como un actor candidato. Los elementos descartados son asignados al conjunto de posibles palabras y flechas.
2) Reconocimiento de las palabras: Gracias a que cada palabra está encerrada dentro de un rectángulo, y que este rectángulo es clasificado como un actor en la fase anterior, la identificación de palabras se hace más sencilla. El sistema simplemente busca todos los actores de tipo “rectángulo” y analiza qué elementos no clasificados se encuentran en su interior. Luego utiliza un software OCR (Optical Character Recognition) para identificar si estos elementos pueden ser interpretados como una palabra. En nuestra implementación se utilizó el software Tesseract OCR para hacer este reconocimiento.
Habiendo reconocido el nombre de una acción, el sistema comprueba si el actor más cercano del rectángulo tiene una acción con ese nombre. Si tiene éxito, entonces se asocia la acción con el actor para las siguientes fases. Los objetos no reconocidos son asignados al conjunto de posibles flechas. 3) Reconocimiento de las flechas: Cada objeto que no es detectado como una palabra ni un actor, es considerado como una posible flecha. Para determinar si el objeto es una flecha se aplica el sistema de filtro de adelgazamiento (thinning) y luego se determina si el objeto adelgazado se compone de tres segmentos, tres puntos finales y un punto de intersección, los cuales son los componentes de una flecha. Cualquier objeto adelgazado que cumpla estos criterios se reconoce como una flecha y el segmento más largo es seguido para determinar la trayectoria que la flecha representará. Si los objetos no son reconocidos en ninguno de los pasos anteriores, son clasificados como ruido y descartados totalmente.
Interpretación de la escena Después de tener reconocidos todos los símbolos en la imagen, el sistema tiene entonces que interpretar cual era la intención del usuario. Para ello, el sistema toma la información de las rutas que los actores deben seguir de acuerdo con las flechas que están asociadas a ellos, toma las acciones que representan las animaciones asociadas a los actores, y generar un script que contiene toda esta información. Si se encuentra una cámara en la composición entonces el sistema determina si esta tiene una flecha de movimiento, y si es así, genera el camino que la cámara debe seguir cuando se graba la escena. Para facilitar la lectura y aumentar la flexibilidad de nuestro sistema, la implementación actual genera un archivo XML que K=16 describe los elementos identificados dentro de la escena. Este archivo contiene todos los símbolos que fueron reconocidos por el sistema, los caminos que siguen y las acciones que realizan. Este archivo construido actúa como entrada para la fase final del sistema y puede usarse junto a diversos programas de generación de animaciones.
Generación de la animación Para interpretar el archivo XML generado en la fase anterior y generar una animación 3D se desarrolló una aplicación en OGRE. La aplicación utiliza la información contenida en el archivo XML para configurar adecuadamente la cámara, carga los modelos 3D de los actores y asigna sus posiciones, trayectorias
y animaciones. Dado que una composición se extrae de una perspectiva desde arriba, todos los elementos se colocan en el plano XZ dejando el componente Y en 0 (aquí Y representa la altura). Todos los actores se consideran orientados hacia la cámara, a excepción de aquellos actores que tienen trayectorias de movimiento, que se orientan según la dirección en la que se mueven. Esto se logra mediante el cálculo del ángulo entre la posición actual y el siguiente punto en su ruta para cada punto de la trayectoria, y se incluye en el archivo XML de modo que no necesita ser recalculado. El movimiento de la cámara se consigue utilizando las facilidades de animación proporcionadas por OGRE. Aquí, cada punto de la trayectoria reconocida se añade a una pista de animación como un fotograma clave en intervalos de 0,05 segundos. A partir de esta información, el sistema genera un movimiento suave de la cámara a lo largo de la trayectoria deseada.
CAPÍTULO III: HERRAMIENTA La herramienta está constituida por varios módulos los cuales se encargan de realizar una tarea específica, los módulos se pueden apreciar en la Figura 6.
Figura 6: Distribución de contenido de la herramienta.
CARPETA WWW Esta carpeta contiene toda la parte visual de la página donde el servicio está montado. Esta es la parte que se encarga de realizar los llamados a los diferentes módulos para que trabajen y se encarga de realizar la revisión de los archivos generados.
Figura 7: Contenido de la carpeta WWW
CARPETA ImageProcessing En esta carpeta se encuentra el módulo encargado de realizar el análisis de la imagen. En esta carpeta se resalta el contenido de la carpeta “Execution”, en esta carpeta está el archivo “Vocabulary.xml”, este archivo contiene todas las referencias a cada uno de los actores y las acciones que puede realizar. También se encuentra la carpeta “Log”, que es donde se almacenan todos los seguimientos a las imágenes trabajadas.
a) b) Figura 8: a) Contenido de la carpeta ImageProcessing. b) Contenido de la carpeta Excution.
El archivo “Vocabulary.xml”, define cada posible actor con un nombre dependiendo del idioma en que se trabaje, sonido asociado, el asset o modelo 3D que lo representa y el shape o imagen base para comparar.
Figura 9: Estructura del archivo “Vocabulary.xml”.
En cada carpeta contenida en la carpeta “Log”, que representan el prosesamiento de un boceto, aparecen los diferentes elementos que se crean para procesar la imagen, entre ellos resalta el “Prosessing_*”.
Figura10: Contenido de la carpeta del boceto a trabajar.
El archivo “Prosessing_*” es la imagen a trabajar para la deteccion de los elementos en el boceto despues de aplicarle un pre-procesamiento. Este preprocesamiemto consta de un filtrado, después una umbralización, remover los objetos pequeños (no mayores a 20 X 20 pixeles) y por último una segmentación teniendo en cuenta una vecindad de cuatro vecinos. Después de esto se realiza el análisis de cada objeto por separado.
Figura 11: Contenido de la carpeta “Log” dentro de la carpeta del boceto a trabajar.
Como resultado del analisis de cada elemento de la imagen se almacena en la carpteta “Log”, contenida en la carpeta del archivo “Prosessing_image”, en esta carpeta se guardan los elementos de la imagen según el algoritmo los catalogue. Pueden ser actores, arrows (flechas), leables (acciones), ruido o no reconocidos, de esta informacion se construye el archivo “scripts.xml”, mediante el procesamiento de cada actor. El procesameitno se realzia primero al restar la imagen obtenida para cada actor con la imagen base definica en el “Vocabulary.xml”, y la menos diferentes es la que se asume como correcta.
También se hace un analisis con el algoritmo de angulo para determinar la figura, y cuando menos diferencias halla, más probable es que sea el correcto.
Figura 12: Estructura del archivo “Scripts.xml”.
El archivo “scripts.xml” contiene en su interior la identificacion de cada uno de los actores detectados en el boceto, la escala en la cual se encontro, si tiene alguna animacion asociada, que tipo de asset o modelo 3D usa y la posicion en la escena, teniendo en cuante que el boceto es un plano 2D.
CARPETA VideoGeneartor Para generar la escena en 3D se utiliza el archivo “Script.xml” y el módulo que lo realiza está contenido en la carpeta VideoGenerator. En esta carpeta está el archivo “VideoGenerator.py” un archivo en Python que se encarga de conectar la página web con la herramienta Blender, la cual se encarga de construir el video.
Figura 13: Archivo encargado de conectar blender y la página web.
Este archivo lee el archivo “scripts.xml” y crea la escena con los datos y la renderiza para crear el video, en este caso el video esta definido para ser de 5 segundos, si se desea que la animación sea más larga se debe modificar la variable “NUM_FRAMES_ANIMATION”, teniendo en cuenta que cada segundo son
30 frames. En las lineas 92 a 390 se encuentra la asignacion de las animaciones y en la linea 738 la renderizacion del video.
Figura 14: Variables para la renderización del video.
Los archivos generados por Blender son guardados en la carpeta referenciada en la Figura 8 en formato MPG.
CARPETA SoundFilm En esta carpeta se agrega el sonido a cada actor y a los movimientos que hace dependiendo del archivo “Scripts.xml”. Cada animación tienen un sonido específico y se agrega al momento de crear el video en el VideoGenerator, pero la carpeta SoundFilm es la que se encarga de determinar que sonidos van para los elementos habilitados, creando un archivo mp3.
CARPETA EmailGenerator En esta carpeta se encuentra el módulo encargado de enviar el email al usuario de la página con el enlace del video. La carpeta contiene un archivo JAVA denominado “PYLMail.jar”, el encargado de realizar él envió del correo.
Figura 15: Contenido de la carpeta EmailGenerator.
CAPÍTULO IV: INSTALACIÓN Para que el proyecto pueda funcionar se necesita hacer la siguiente instalación: Requerimientos hardware:
Memoria RAM: 4 Gb. Procesador: Intel(R) Core(TM) i7-2600 CPU @ 3.40 GHz Espacio en disco: 4Gb.
Requerimientos software: Sistema operativo:
Ubuntu 12.04.
Programas:
Blender 2.62. Java 6. Apache 2. Compilador perl con módulo “xml::DOM” para apache. Navegador Chrome 44.
Tener instalado el sistema operativo “Ubuntu”, los programas necesarios para su funcionamiento “Blender”, “JAVA”, “APACHE” y “CHROME”, para mayor información de cómo instalar estos programas referirse a su documentación. Después de configurar la maquina con el software necesario, se debe descargar el proyecto del repositorio (Link: https://github.com/ProyectoDavid/PapelyLapiz) y. El proyecto se debe ubicar en la carpeta /var/ del sistema operativo, en una carpeta denominada pyl5. Mostrando como instalar el sistema operativo Ubuntu 12.04 y agregar las diferentes partes necesarias para que el proyecto se pueda correr en una máquina de escritorio. Nota: En esta instalación se usa una máquina virtual.
Instalar Ubuntu 12.04: Primero instalamos el sistema operativo Ubuntu 12.04.
Figura 16: Pantalla de inicio de la instalaciรณn del sistema operativo Ubuntu 12.04.
Confirmamos el espacio a usar, si la conexiรณn a internet estรก disponible y si se desean descargar las actualizaciones.
Figura 17: Pantalla de preparaciรณn de la instalaciรณn del sistema operativo Ubuntu 12.04.
Damos la opción de borrar el disco para que se instale el nuevo sistema operativo, se debe tener cuidado, esto solo se hace en caso de usar una máquina virtual o un disco duro dedicado.
Figura 18: Pantalla del tipo de instalación a realizar..
Se confirma la instalación dando click en el botón “Instalar ahora”.
Figura 19: Pantalla de confirmación de la instalación.
Mientras se instala se confirma el lugar geogr谩fico al cual estar谩 asociado el sistema.
Figura 20: Pantalla de selecci贸n de la zona horaria.
Se selecciona el idioma deseado.
Figura 21: Pantalla de selecci贸n del idioma.
Y se configura la sesi贸n de inicio.
Figura 22: Pantalla de configuraci贸n de la sesi贸n de inicio.
Esperamos a que termine de instalar y reiniciamos el sistema.
Figura 23: Pantalla de final de la instalaci贸n.
No olvidar actualizar los paquetes del sistema operativo.
Instalar Apache2: Después de reiniciar, iniciamos el sistema operativo, abrimos un terminal y procedemos a instalar apache con el comando “sudo apt-get install apache2”, y esperamos.
Figura 23: Instalación de Apache.
Confirmamos la instalación con el comando “apache2 -v”, que permite saber que versión de apache está instalada.
Figura 24: Confirmación de la instalación de Apache.
Instalar Java 6: Ahora instalamos Java 6 con el comando “sudo apt-get install openjdk-6-jdk”.
Figura 25: Instalación de JAVA 6.
Revisamos la instalación con el comando “java -version”, que permite saber que versión de java está instalada.
Figura 26: Confirmación de la instalación de JAVA 6.
Instalar Blender 2.62: El siguiente programa a instalar es “Blender 2.62“, que se puede obtener mediante el “Centro de Software de Ubuntu”.
Figura 27: Gestor de software de ubuntu.
Confirmamos la instalación con el comando “blender -v”.
Figura 28: Confirmación de la instalación de Blender 2.62.
Instalar Chrome: Se descarga el navegador “Chrome”, desde la página de Google y se instala.
Figura 29: Pagina de descarga del navegador Chrome.
Instalar Módulos de Perl para Apache: Iinstalamos el módulo en Perl de apache para el manejo de árboles DOM, con el comando “perl -MCPAN -e 'install XML::DOM’”, el “URI::Escape” y el “XML::Parser”.
Figura 30: Instalación del módulo de Perl para el manejo de árboles DOM en Apache.
Instalar Paquete Compilador de C++: Por ultimo instalamos el paquete para la compilación de C++ mediante el comando ”apt-get install g++”.
Figura 31: Instalación del paquete del compilador de C++.
Montar el proyecto: Ahora descargamos el proyecto del repositorio.
Figura 32: Página web del repositorio del proyecto papel y lápiz.
Lo descargamos y la descomprimimos en la carpeta “/var /www/” del sistema operativo.
Figura 33: Contenido de la carpeta ”var/www”.
Compilar el proyecto: Primero dar los permisos necesarios al proyecto mediante el comando “chmod rwx pyl5/”, después nos dirigimos a la carpeta que contiene el módulo de análisis de los bocetos, mediante el comando “cd /var/www/pyl5/pyl5p/ImageProcessing “.
Figura 34: Situándose en la carpeta ImageProcessing.
Confirmamos la ruta mediante el comando “pwd”. Se crea la carpeta bin con el comando “makedir -f bin “
Figura 35: Creando la carpeta bin.
Copiamos el contenido de la carpeta ImageProcessing, mediante el comando “cp ./bin/ImageProcessing /var/www/pyl5/pyl5p/ImageProcessing/bin/”. Después nos dirigimos a la carpeta SoundFilm para activar el módulo de sonido cd con el comando “cd /var/www/pyl5/pyl5p/SoundFilm”, y se compila con el comando “sudo g++ -zmuldefs -o ./bin/MySoundFilm main.cpp *.cpp”.
Figura 36: Compilamos el módulo de sonido
Agregar nueva página PYL: Para poder agregar la nueva página al servidor apache, se deben realizar los siguientes pasos. Apache tiene unos sitios que reconoce como host, estos están ubicados en la carpeta “sites-available”, en esta carpeta tenemos que agregar el nuevo sitio para que apache lo reconozca. Se debe ir a la carpeta sites-available, mediante el comando “cd /etc/apache2/sitesavailable”, y se debe crear el archivo que va a identificar a la nueva página, en este caso se usó el nombre lápiz. Se puede crear el archivo con el comando “nano lapiz”, como se muetra en la Figura 36. El archivo “lapiz” se agrega a la carpeta “/etc/apache2/sites-available” como se ve en la Figura 38, y el contenido del archivo aparece en la Figura 39.
Figura 37: Creando el archivo “lapiz”.
Figura 38: Contenido de la carpeta sities-available.
Figura 39: Contenido del archivo “lapiz”.
Después se debe modificar el archivo de los host que reconoce apache. Se puede llegar al archivo mediante el comando “nano /etc/hosts”, para agregar la nueva página como se ve en la Figura 40.
Figura 40: Contenido del archivo “hosts”.
Se habilita el archivo de configuración con el comando “a2ensite lapiz”. Se va a la carpeta de inicio con el comando “cd /etc/init.d/ “, ahí reiniciamos el servidor apache con el comando “sudo ./apache2 restart”.
Figura 41: Muestra de los comandos para habilitar el nuevo sitio del proyecto.
Por último se accede a la página mediante el navegador Chrome, importante no confundir el proyecto creado con la versión de la página abierta al público del proyecto original, el proyecto instalado corre localmente y se llama “lapiz.uniandes.co”.
Figura 42: Vista de la página de inicio del proyecto instalado y ejecutándose.
CAPÍTULO V: MANUAL DE USO Este capítulo trata de mostrar la facilidad de uso de la herramienta, y como se puede usar a través de los diferentes símbolos y acciones que se tienen.
EJEMPLO DE USO Para realizar un boceto es necesario conocer el vocabulario de símbolos con los que el usuario cuenta. La interfaz cuenta con 4 tipos de símbolos que se pueden utilizar en el boceto, éstos son: Símbolos de Personajes, Símbolos de Acciones, Símbolos de Trayectorias y Símbolo de Cámara. Símbolos de los personajes: Los símbolos de los personajes representan objetos 3D en la escena, éstos pueden ser dibujados en cualquier ubicación dentro del boceto y ser utilizados cuantas veces se desee. En la Figura 43 se pueden observar los símbolos existentes.
Figura 43: Símbolos de Personajes. Modelos 3D obtenidos de Blender Foundation | www.blender.org
Es importante notar que todos los símbolos son cerrados, por lo tanto no se debe dejar espacios entre líneas. Los símbolos no soportan rotación. Todos los modelos 3D de los personajes han sido obtenidos del proyecto “Big Buck Bunny”, bajo la licencia Creative Commons 3.0. Símbolos de las acciones: Los símbolos de acciones son usados para elegir la animación que un personaje realiza en la escena. Para aplicar una acción en un personaje basta con dibujar un rectángulo cerca del símbolo del personaje al que se quiere aplicar y dentro del rectángulo escribir, en mayúsculas, la acción que se desea realizar, un ejemplo es mostrado en la Figura 43. El rectángulo puede ser dibujado en cualquier ubicación cercana a un personaje.
Figura 44: Símbolo de acción aplicado a un personaje.
Cada personaje tiene su propio set de acciones soportadas. En la Tabla 1 se puede ver la lista de acciones por personaje. La palabra “Default” indica que ésta acción se utiliza por defecto cuando no hay una acción definida, o cuando una acción no es reconocida. CLAP Rabbit Butterfly Squirrel X FlyingSquirrel Chinchilla Bird Apple
EAT
FLAP
FLY
JUMP
RUN
X
WALK Default
Default Default Default Default
X X
Default
Tabla 1. Acciones soportadas por cada personaje. Es importante tener presente que cada letra individual debe estar completamente conectada. Símbolos de las trayectorias: Una trayectoria define un camino que un personaje 3D debe seguir, una trayectoria se define con una flecha. La flecha
debe estar conformada por 3 líneas, la primera línea que representa el recorrido del personaje, y las otras 2 líneas que representan el final del recorrido como se observa en la Figura 45. La cola de la flecha debe dibujarse cerca del personaje al que se le desea aplicar y la cabeza debe contener dos líneas restantes.
Figura 45: Símbolo de trayectoria aplicado a un personaje.
Símbolo de Cámara: El símbolo de Cámara es utilizado para determinar la parte de la escena en la que se desea colocar la cámara de la escena. De utilizarse este símbolo se debe dibujar en la parte inferior del boceto (actualmente no se soporta rotación), de no dibujarse el símbolo de la cámara el programa buscará de manera automática la ubicación más adecuada para poder visualizar todos los personajes. En la Figura 46 se observa el símbolo de la cámara.
Figura 46: Símbolo de Cámara.
POSIBLES PROBLEMAS ¿Por qué no veo el personaje que dibujé? Algunas veces los símbolos de los actores no quedan bien dibujados, por lo que la aplicación no puede realizar correctamente el reconocimiento del símbolo. Entre los problemas más comunes al dibujar un símbolo de un personaje se encuentra el no cerrar correctamente el símbolo como se ve en la Figura 47c o dibujar el símbolo rotado observado en la Figura 47d y remarcar el símbolo.
(a)
(b)
(c)
(d)
(e)
Figura 47: Problemas comunes dibujando un personaje. (a) Símbolo original, (b) Símbolo sin problemas, (c) símbolo no cerrado, (d) símbolo rotado y (e) símbolo remarcado.
¿Por qué la animación no cambia? Si la animación del personaje sigue siendo la animación por defecto (ver tabla 1), es posible que la acción que está escribiendo no se esté reconociendo correctamente. Entre los problemas más comunes se encuentran: En la Figura 48b, letra F, no tener las letras individuales completamente conectadas, en la Figura 48b, la letra Y conecta con el rectángulo que lo rodea, en la Figura 48c se conecta el símbolo del personaje con el rectángulo de la acción, también se conecta una flecha con el rectángulo de la acción y se conecta dos letras de la acción y/o escribitas en minúscula.
(a)
(b)
(c)
Figura 48: Problemas comunes dibujando una acción.
¿Por qué mi personaje no se traslada? Si su personaje no se traslada es porque la flecha que indica el camino del personaje no se reconoce correctamente. Entre los problemas más comunes se encuentran en la Figura 49b el remarcar la cabeza varias veces, la Figura 49c muestra donde no se une la cabeza con el resto de la flecha, la parte “d” de la misma figura muestra el dibujar la cabeza incorrectamente y la parte “e” muestra el no centrar correctamente la cabeza de la flecha.
(a)
(b)
(c)
(d)
(e)
Figura 49. Problemas comunes dibujando una flecha. (a) Flecha sin problemas, (b) flecha con cabeza remarcada, (c) flecha sin cabeza conectada, (d) flecha sin cabeza de dos líneas y (e) flecha con la cabeza no centrada.
DESCRIPCIÓN DE LA INTERFAZ En esta sección se explica el contenido de la página del proyecto de Papel y Lápiz y cómo utilizarlo. La página se divide en 3 secciones: Encabezado, Paso 1 y Paso 2. Encabezado: La Figura 50 muestra el encabezado de la página contiene un selector de idioma para visualizar la página en Español o en Inglés resaltado con la letra “a”, un Home que es un enlace para iniciar una nueva animación, un enlace al proyecto D.A.V.I.D. y una sección de FAQ resaltado con la letra “b”. Finalmente esta sección contiene unos enlaces de ayuda para poder iniciar la animación resaltada con la letra “c”.
Figura 50: Encabezado de la página de Papel y Lápiz.
Paso 1: En esta sección se puede subir un nuevo boceto en la parte “a” mostrada en la Figura 51. El boceto puede ser convertido a una imagen utilizando un escáner o una cámara fotográfica. Los formatos de imágenes compatibles son JPG, PNG y BMP. Una vez subido el boceto, éste aparecerá en la lista de bocetos precargados y estará disponible para que otros usuarios lo utilicen en la parte “b” de la Figura 51.
Figura 51: Paso 1 de la página de Papel y Lápiz.
Para utilizar un boceto precargado, solo de clic en Select de la Figura 50b, y en la lista de bocetos precargados seleccione el boceto al que quiere generar la escena 3D y de clic en “Recompute” de la Figura 51.
Figura 52: Utilizar bocetos precargados.
También es posible reenviar el correo que se programó con ese boceto dando clic en “Send Mail” de la Figura 53. Paso 2: Una vez subido/seleccionado un boceto en el paso anterior, en esta sección se visualizará el boceto 2D como se observa en Figura 53a, en Figura 53b se mostrará una pre-visualización de la animación en 3D, y en Figura 53c se podrá configurar en envío del correo automático que contiene la escena completa del boceto. Allí solo hay que digitar su nombre, el correo de destino y su mensaje personal, finalizando con un clic en el botón Send.
Figura 53: Paso 1 de la pรกgina de Papel y Lรกpiz.
CAPÍTULO VI: EXTENSIÓN TRABAJOS FUTUROS Mejoras Para trabajos futuros se ha proyectado como objetivo la mejora en la precisión del algoritmo para el reconocimiento de los diferentes elementos que pueden aparecer en el boceto, reducir el tiempo de procesamiento al menos en un 20% y mejorar la interacción entre los diferentes actores dibujados en el boceto. Para el mejoramiento del algoritmo de reconocimiento de símbolos usado, Angle Quantization, se desea buscar un algoritmo que permita reconocer los símbolos aún cuando los trazos no sean tan precisos. Esto permitirá que se dibujen líneas resaltadas y flechas con diferentes tipos de cabeza o puntas. Además también permitirá que en las animaciones las líneas de los rectángulos no necesiten ser perfectas, ya que una de las características de los bocetos radica en la rapidez con la que son dibujados y no se tienen muy en cuenta los detalles. Para el mejoramiento del procesamiento se desea reducir el tiempo empleado de en la detección de los símbolos que es donde se gasta el mayor tiempo. Para esto se debe buscar un algoritmo que sea eficiente en el reconocimiento de los símbolos.
Extensiones Fuera de las mejoras que deben hacerse a todos sistemas que están en desarrollo, también se han planteado algunas mejoras o extensiones que permitan que la aplicación evolucione en algo más robusto. Las principales extensiones consideradas para la aplicación son la inclusión de un mecanismo que permita el incremento del vocabulario usado para dibujarla y que reconoce el sistema, la manipulación del componente Y en el movimiento de los actores, el cambio de velocidad y la colisión entre objetos. A nivel de otras extensiones relacionadas con la interacción con otras técnicas, se desea en primera instancia adaptar la página
web para soportar dispositivos móviles. Esta adaptación se realiza con el fin de que en un futuro se pueda acoplar a las escenas la técnica de realidad aumentada que es popular en los dispositivos móviles. Otra de las ideas que más interesa desarrollar en un futuro es la de poder crear animaciones complejas mediante bocetos, asemejándose a lo realizado por las empresas de animación de la década de los 40, donde cada boceto representaba una escena y al unirlos secuencialmente se desarrollaba una animación.
BIBLIOGRAFÍA
Autodesk (2011). Maya. [en línea], [Consulta: 31 de agosto 2013] http://usa.autodesk.com/ maya/. Bagwell, C. and Klauer, U. (2013). Sox - sound exchange. [en línea] [Consulta: 19 mayo de 2013], Disponible en: http://sox.sourceforge.net/. Bellard, F. (2012). Ffmpeg. [en línea] [Consulta: 19 mayo de 2013], Disponible en: http://ffmpeg.org/. Blender Foundation (2008). BigBuckBunny’s Production Files. [en línea] [Consulta: 19 mayo de 2014], Disponible en: http://graphicall.org/bbb/index.php. Blender Foundation (2011). [en línea] [Consulta: 19 mayo de 2013], Disponible en: Blender. http://www. blender.org/. Chiang, C.-W., Chiu, S.-C., Dharma, A. A. G., and Tomimatsu, K. (2012). Birds on paper: an alternative interface to compose music by utilizing sketch drawing and mobile device. pages 201–204. Davis, J., Agrawala, M., Chuang, E., Popovic, Z., and ´ Salesin, D. (2003). A sketching interface for articulated figure animation. In Proceedings of the 2003 ACM SIGGRAPH/Eurographics symposium on Computer animation, SCA ’03, pages 320–328, Aire-laVille, Switzerland, Switzerland. Eurographics Association. Igarashi, T., Matsuoka, S., and Tanaka, H. (2007). Teddy: a sketching interface for 3d freeform design. In ACM SIGGRAPH 2007 courses, SIGGRAPH ’07, New York, NY, USA. ACM. Igarashi, T., Moscovich, T., and Hughes, J. (2005). Asrigid-as-possible shape manipulation. In ACM SIGGRAPH 2005 Papers, SIGGRAPH ’05, pages 1134– 1141, New York, NY, USA. ACM. Jain E., Sheikh Y., and Hodgins J., “Leveraging the talent of hand animators to create three-dimensional animation,” in Proceedings of the 2009 ACM SIGGRAPH/Eurographics Symposium on Computer Animation, ser. SCA ’09. New York, NY, USA: ACM, 2009, pp. 93–102. Jeon, J., Jang, H., Lim, S.-B., and Choy, Y.-C. (2010). A sketch interface to empower novices to create 3d animations. Comput. Animat. Virtual Worlds, 21:423– 432. Karpenko, O. A. and Hughes, J. F. (2006). Smoothsketch: 3d free-form shapes from complex sketches. In ACM SIGGRAPH 2006 Papers, SIGGRAPH ’06, pages 589–598, New York, NY, USA. ACM.
Launchpad Toys, “Toontastic - A Creative Learning and animation app for the iPad,” [en línea] [Consulta: 19 mayo de 2014], Disponible en: http://launchpadtoys.com/toontastic/, 2011. Lee, J. and Funkhouser, T. (2008). Sketch-based search and composition of 3d models. In Proceedings of the Fifth Eurographics conference on SketchBased Interfaces and Modeling, SBM’08, pages 97–104, Aire-la-Ville, Switzerland, Switzerland. Eurographics Association. Lee, W., de Silva, R., Peterson, E. J., Calfee, R. C., and Stahovich, T. F. (2008). Newton’s pen: A pen-based tutoring system for statics. Comput. Graph., 32(5):511– 524. Lin Y., “3d character animation synthesis from 2d sketches,” in Proceedings of the 4th international conference on Computer graphics and interactive techniques in Australasia and Southeast Asia, ser. GRAPHITE ’06. New York, NY, USA: ACM, 2006, pp. 93–96. Lipson, H. and Shpitalni, M. (1995). A new interface of conceptual design based on object reconstruction from a single freehand sketch. In Annals of the CIRP Vol. 44/1, Annals of the CIRP Vol. 44/1, pages 133–136, New York, NY, USA. ACM. Lipson, H. and Shpitalni, M. (2007). Optimization-based reconstruction of a 3d object from a single freehand line drawing. In ACM SIGGRAPH 2007 courses, SIGGRAPH ’07, New York, NY, USA. ACM. Nealen, A., Igarashi, T., Sorkine, O., and Alexa, M. (2007). Fibermesh: designing freeform surfaces with 3d curves. In ACM SIGGRAPH 2007 papers, SIGGRAPH ’07, New York, NY, USA. ACM. OGRE 3D, “OGRE 3D,” [en línea] [Consulta: 19 mayo de 2013], Disponible en: http://www.ogre3d.org/, 2011. Olsen L., et al., “Sketch-based modeling: A survey,” Computers & Graphics, vol. 33, no. 1, pp. 85 – 103, 2009. Olsen, L., Samavati, F. F., and Sousa, M. C. (2007). Fast stroke matching by angle quantization. In Proceedings of the First International Conference on Immersive Telecommunications, ImmersCom ’07, pages 6:1–6:6, ICST, Brussels, Belgium, Belgium. ICST (Institute for Computer Sciences, SocialInformatics and Telecommunications Engineering). Olsen L. and Samavati F. F., “Stroke extraction and classification for mesh inflation,” in Proceedings of the Seventh Sketch-Based Interfaces and Modeling Symposium, ser. SBIM ’10. Aire-la-Ville, Switzerland, Switzerland: Eurographics Association, 2010, pp. 9–16.
Oshita, M. and Ogiwara, Y. (2009). Sketch-based interface for crowd animation. pages 253–262. Otsu, N. (1979). A Threshold Selection Method from Graylevel Histograms. IEEE Transactions on Systems, Man and Cybernetics, 9(1):62–66. Pusch R., et al., “Improving the sketch-based interface: Forming curves from many small strokes,” Vis. Comput., vol. 23, pp. 955–962, August 2007. Python Software Foundation (2013). [en línea] [Consulta: 19 mayo de 2013], Disponible en: Python. http://www. python.org/. Rivers, A., Durand, F., and Igarashi, T. (2010). 3d modeling with silhouettes. In ACM SIGGRAPH 2010 papers, SIGGRAPH ’10, pages 109:1–109:8, New York, NY, USA. ACM. Rodriguez, D., Figueroa, P., and Arcos, J. (2013). SBI for Animation for Non-Experts. [en línea] [Consulta: 19 mayo de 2013], Disponible en: http: //papelylapiz.virtual.uniandes.edu.co/ pyl5/www/cgi-bin/inicio.pl. Schmidt R., et al., “Shapeshop: Sketch-based solid modeling with blobtrees,” 2005. Tai l., H. Zhang, and J. C. kin Fong, “Prototype modeling from sketched silhouettes based on convolution surfaces,” Computer Graphics Forum, vol. 23, pp. 71–83, 2004. Tesseract OCR (2011). Tesseract OCR. [en línea] [Consulta: 19 mayo de 2013], Disponible en: http://code. google.com/p/tesseract-ocr/. Thorne, M., Burke, D., and van de Panne, M. (2007). Motion doodles: an interface for sketching character motion. In ACM SIGGRAPH 2007 courses, SIGGRAPH ’07, New York, NY, USA. ACM. Ulano, M. (2012). The movies are born a child of the phonograph. [en línea] [Consulta: 19 mayo de 2013], Disponible en: http://www.filmsound.org/ulano/ talkies2.htm/. Wilches, D., Figueroa, P., Conde, A., and Samavati, F. (2012). Sketchbased interface for animation for nonexperts. In Informatica (CLEI), 2012 XXXVIII Conferencia Latinoamericana En, pages 1–8. Yoon, S. and Kuijper, A. (2011). Sketch-based 3d model retrieval using compressive sensing classification. Electronics Letters, 47(21):1181–1183.