Computación Gráfica

Información Básica

  • Créditos: 3
  • Horas de clase: 5 / semana (3 horas clase, 2 horas taller)
  • Horas de trabajo independiente: 4 / semana
  • Pre-requisitos: Álgebra Lineal, Programación Orientada a Objetos
  • Tipo de curso: Núcleo de Formación Fundamental.

Descripción del Curso

Este curso presenta los fundamentos teóricos de la Computación Gráfica. Aquí, los estudiantes podrán desarrollar aplicaciones visuales en dos y tres dimensiones para un dispositivo computacional, para lo cual tendrán que utilizar librerías de programación especializadas en gráficos. Además, podrán identificar, usar y evaluar las estructuras de datos, modelos y técnicas necesarias crear estas aplicaciones. El curso se centra en el manejo y visualización de imágenes sin movimiento pero con un nivel de interactividad y realismo básico.

Objetivos

Al finalizar el curso los participantes podrán:

  1. Conocer los conceptos fundamentales de la Computación Gráfica.
    1. Reconocer el objeto de estudio de la Computación Gráfica, los eventos históricos y sus aplicaciones.
    2. Definir Computación Gráfica, mapa de bits, profundidad de bits, mundo virtual, modelo de color, tubería gráfica, geometría computacional, modelo de cámara, fotorealismo, modelo de iluminación, GPU, malla, renderización, raster.
    3. Describir el proceso realizado en la tubería gráfica.
    4. Identificar los retos y limitaciones de la computación gráfica.
    5. Evaluar los modelos básicos de la computación gráfica en 2D y 3D.
    6. Familiarizarse con técnicas de generación procedimental de modelos.
    7. Comparar modelos de computación gráfica.
    8. Utilizar técnicas de iluminación para lograr una aproximación al fotorealismo.
    9. Calcular la profundidad de bit, conversiones entre modelos de color, transformaciones geométricas, cuaterniones, normales a la superficie y distancias.
    10. Identificar el hardware necesario para crear mundos virtuales de computación gráfica.
    11. Escoger y emplear modelos de computación gráfica
  2. Implementar aplicaciones basadas en computación gráfica
    1. Utilizar herramienta de creación de modelos 2D y 3D, Interfaces de Programación de Aplicaciones (API) de computación gráfica en múltiples plataformas siguiendo estándares de codificación.
    2. Crear primitivas de dibujo y mallas.
    3. Programar la persistencia, carga y visualización de una malla en la pantalla.
    4. Utilizar hardware para programar mundos virtuales basados en computación gráfica
    5. Implementar mundos virtuales con modelos basados en primitivas o mallas y una cámara móvil.
    6. Generar una escena con un nivel de fotorealismo básico utilizando técnicas de iluminación y texturas.
    7. Comparar alternativas de solución para la creación de un mundo virtual.
    8. Diseñar software capaz de visualizar mundos virtuales basados en computación gráfica.
  3. Explicar el proceso de desarrollo de una aplicación de computación gráfica
    1. Formular un problema relacionado con la creación de la aplicación.
    2. Explicar textual y visualmente los procesos de análisis, diseño y los resultados relacionados con la aplicación.
    3. Resumir, defender y evaluar los resultados

Competencias técnicas específicas que se desarrollan

  1. OpenGL en C++ y Visual Studio (intermedio).
  2. GLSL (intermedio).
  3. WebGL usando Three.js (básico).
  4. Blender (intermedio).
  5. OpenGL-ES con Visual Studio con Xamarin para Android y iOS (básico).
  6. DirectX para aplicaciones universales de Windows (básico).
  7. PovRay (básico).
  8. Gimp (básico).
  9. Paint.Net (básico).
  10. Visual Studio (intermedio).
  11. Unity 3D (básico)

Contenido

Capítulo 1: Creación y despliegue de un mundo virtual

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
1 3 Definición de la Computación Gráfica, geometría computacional, historia, aplicaciones (GUI, realidad virtual, visualización), hardware (GPU),modelos de color (CMYK, RGB), la tubería gráfica, mapas y profundidad de bits. Familiaridad [1, 2, 3, 12, 15, 16, 19]
2 2 Cálculos mapas y profundidad de bits. Utilización de herramientas para la generación de modelos visuales. Por ejemplo: Dibujo de primitivas en Blender y Paint.NET Evaluación [9, 24]
3 3 Formatos de imagen y compresión con y sin pérdida. Fundamentos de las imágenes digitales. Intensidad y filtros. Tecnologías graficas en la red. Evaluación [9, 17]
4 2 Taller de comparación y evaluación de formatos usando GIMP Evaluación [9, 28]
5 3 Objetos básicos de la computación gráfica, primitivas, mallas poligonal y sus estructura de datos. Evaluación [1, 2, 3, 14]
6 2 Taller de estructuras de datos. Evaluación [14]
7 3 Transformaciones geométricas y cuaterniones. Evaluación [1, 2, 3]
8 2 Taller de transformaciones geométricas. Evaluación [1, 2, 3]
9 3 Rasterización de un triangulo. Balance entre almacenamiento de imágenes rasterizadas y cálculo de imágenes vectoriales. Animación de imágenes estáticas. Familiaridad [1]
10 2 Programación de mundos virtuales en OpenGL, WebGL Uso [4, 27]
11 3 El modelo de cámara u observador, modos de proyección. Operaciones geométricas básicas (intersecciones y proximidad) Familiaridad [1, 2, 3]
12 2 Programación un mundo con mallas y una cámara móvil en OpenGL, WebGL Uso [4, 27]

Total de Horas: 30.

Sesión Horas de trabajo independiente Temas Bibliografía
1-2 4 Elaborar una presentación de 5 a 10 minutos de un artículo publicado no más de 4 años atrás que tenga que ver con la temática del curso. [20, 21, 22]
3-4 4 Tutoriales básicos de Blender. Elaborar presentación y bosquejo de idea de proyecto. Búsqueda de artículos relacionados al proyecto. [20, 21, 22, 24]
5-6 4 Búsqueda y selección de modelos gráficos para el proyecto final. Elaborar presentación y bosquejo de idea de proyecto. Lectura del capítulo de transformaciones geométricas del libro guía.[1, 2, 3]
7-8 4 Elaboración de un modelo en Blender. Lectura del capítulo de transformaciones geométricas del libro guía.[1, 2, 3, 24]
9-10 4 Lectura de los primeros 3 capítulos del Redbook de OpenGL. [4]
11-12 4 Programación de las mallas del proyecto en OpenGL.[4]

Total de Horas: 24

Capítulo 2: Fotorealismo

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
13 3 Sistema visual humano (adaptación a la luz, sensibilidad al ruido, “flickering”). Renderizado no fotorealista. Aspectos a considerar en el renderizado (“Motion blur”, enfoque, color) Familiaridad [1, 2, 3]
14 2 Renderizado pervasivo de objetos sencillos (OpenGL-ES en Android y iOS, DirectX en “Universal Windows Platform”) Uso [6, 11, 23]
15 3 Renderizado en la naturaleza, modelos de iluminación (Phong), materiales, fuentes de luz, (emisión y distribución de la luz). Uso [1, 2, 3]
16 2 Renderizado con shaders: GLSL y WebGL Uso [5, 27]
17 3 Visibilidad, oclusión, profundidad (Z-Buffer, Trazado de Rayos), Radiosidad. “Aliasing”. Evaluación [1, 7]
18 2 Practica con PovRay y Blender Uso [24, 26]
19 3 “Forward rendering” y “Backward rendering” y la ecuación de renderizado. Estructuras de datos para el renderizado. Grafos de escena. Subdivisión espacial. Evaluación [1, 2, 3]
20 2 Practica de texturas con OpenGL, WebGL y Blender Uso [4, 5, 24, 27]
21 3 Texturas de mapas de bit, texturas procedimentales, sombras. Mipmapping. Mapas de sombras. Mapas de normales Evaluación [1, 2, 3]
22 2 Practica de texturas con GLSL, WebGL y Blender Uso [4, 5, 24, 27]
23 3 Solución de problemas con Computación Gráfica Evaluación [1, 2, 3, 12]
24 2 Examen parcial Evaluación [1, 2, 3]

Total de Horas: 30.

Sesión Horas de trabajo independiente Temas Bibliografía
13-14 4 Lectura del capítulo de iluminación del Redbook de OpenGL y de los tutoriales en línea [4]
15-16 4 Desarrollo del tutorial de texturas de Blender. Preparación de presentación de avances. [24]
17-18 4 Preparación del examen parcial. [1, 2, 3]
19-20 4 Preparación del examen parcial. 1, 2, 3]
21-22 4 Preparación del examen parcial.[1, 2, 3]
23-24 4 Escritura del primer reporte de avances. [20, 21, 22]

Total de Horas: 24

Capítulo 3: Modelado avanzado

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
25 3 Triangulación Delaunay, subdivisión de superficies, extracción de superficies, modelado multi resolución, “Tesellation”, nivel de detalle (LOD). Familiaridad [1, 13, 14, 18]
26 2 Práctica en Blender Familiaridad [24]
27 3 Geometría constructiva de solidos. Modelos procedimentales y generativos, fractales, L-Systems,”graftals”. Familiaridad [3, 8]
28 2 Práctica de generación de objetos procedimentales en Blender y Unity 3D. Familiaridad [24, 25]
29 3 Representación de volúmenes, “voxels”, representaciones basadas en puntos Evaluación. [1]
30 2 Generación de un mundo virtual en Unity 3D. Uso [10]
31 3 Representación implícita de curvas y superficies, curvas y superficies paramétricas. Familiaridad [1, 3]
32 2 Implementación de una curva paramétrica con OpenGL. Uso [25]

Total de Horas: 20.

Sesión Horas de trabajo independiente Temas Bibliografía
25-26 4 Desarrollo del proyecto final.[4, 5]
27-28 4 Desarrollo del proyecto final. Presentación y reporte.[4, 5, 20, 21, 22]
29-30 4 Desarrollo del proyecto final. Presentación y reporte.[4, 5, 20, 21, 22]
31-32 4 Desarrollo del proyecto final. Presentación y reporte. [4, 5, 20, 21, 22]

Total de Horas: 16

Integración Curricular

Resultados de Programa (ABET)

(A) La habilidad para aplicar conocimientos de matemáticas, ciencias e ingeniería.

(B) La habilidad para analizar un problema e identificar los requerimientos necesarios para su definición y solución.

(C) La habilidad para diseñar, implementar y evaluar procesos y sistemas computacionales.

(D) La habilidad para funcionar en equipos de trabajo.

(E) El entendimiento de la responsabilidad profesional y ética.

(F) La habilidad para comunicarse efectivamente.

(G) La habilidad para analizar los impactos de la computación y la ingeniería en las personas, organizaciones y la sociedad.

(H) El reconocimiento de la necesidad de, y la habilidad para, continuar con el desarrollo profesional.

(I) La habilidad para usar las técnicas, destrezas y herramientas modernas para la práctica de la computación.

(J) La habilidad para aplicar los fundamentos y principios de las matemáticas y de la computación en el modelamiento y diseño de sistemas computacionales de manera que se demuestre comprensión de las ventajas y desventajas en las decisiones de diseño.

(K) La habilidad para aplicar los principios de diseño y desarrollo de software en la construcción de sistemas de diferente complejidad.

Relevancia del curso con los resultados de programa

Resultados de Programa
A B C D E F G H I J K
Relevancia 2 1 4 3 4 3

Escala: (1) baja relevancia - (5) alta relevancia.

Integración de objetivos, contenido y metodología del curso

La tabla presenta la metodología (actividades de aprendizaje) e instrumentos de evaluación utilizados para cubrir el contenido del curso.

Resultados del Programa Indicadores de Desempeño Objetivos/Contenido del Curso Actividades de aprendizaje Instrumentos de medición
(A) Aplicación de Conocimientos (A1) Identificar los fundamentos científicos y los principios de ingeniería que rigen un proceso o sistema. (Conocimiento) (A2) Resolver problemas relacionados con la disciplina y otras áreas por medio de la utilización de conocimientos, modelos y formalismos de las ciencias de la computación, las matemáticas y la ingeniería. (Aplicación) Capítulos 1, 2 y 3 Exposiciones del profesor, Talleres teórico prácticos. Lectura de artículos. Lectura de capítulos de libro. Casos de estudio. Discusión de videos. Exámen
(C) Diseño (C1) Utilizar estándares de codificación en la implementación de componentes de software. (Aplicación). (C2) Identificar componentes, interacciones, relaciones e interfaces entre componentes. (Análisis). Capítulos 1, 2 y 3 Exposiciones del profesor. Talleres de programación. Talleres de aplicativos de la computación gráfica. Lectura de capítulos. Seguimiento de tutoriales en línea. Proyecto y talleres
(F) Comunicación efectiva (F1) Producir textos de manera efectiva teniendo en cuenta la estructura, coherencia, flujo, ortografía y correcto uso del lenguaje. (Aplicación). (F2) Comunicarse de manera efectiva de acuerdo al público objetivo haciendo uso correcto del lenguaje, estilo, tiempo y expresión corporal. (Aplicación). (F3) Utilizar recursos gráficos para comunicar y expresar una idea. (Aplicación). (F4) Defender ideas con precisión y claridad. (Evaluación). Capítulos 1, 2 y 3 Presentaciones orales de avances. Escritura de reportes. Búsqueda y lectura de artículos. Videos. Presentaciones y reportes
(H) Desarrollo profesional. (H1) Reconocer la importancia del conocimiento tanto en amplitud como en profundidad. (Compresión). Capítulo 1 Búsqueda y lectura de artículos y videos. Preparación del artículo en una presentación. Preparación de una discusión. Tarea y discusión de los artículos.
(I) Uso de herramientas y técnicas (I1) Utilizar herramientas de desarrollo de software. (Aplicación). (I2) Utilizar herramientas de diseño, modelamiento y simulación. (Aplicación). (I3) Combinar herramientas de software y hardware para resolver un problema. (Síntesis). (I4) Demostrar flexibilidad para adaptarse a diferentes paradigmas y lenguajes de programación. (Valuación). Capítulos 1, 2 y 3 Talleres de programación. Talleres de aplicativos de la computación gráfica. Lectura de capítulos. Seguimiento de tutoriales en línea. Proyecto y talleres.
(J) Modelamiento y diseño de sistemas computacionales (J1) Reconocer la importancia del modelamiento cuando se resuelve un problema. (Compresión). (J2) Relacionar conceptos y principios teóricos para la resolución efectiva de un problema. (Síntesis). Capítulos 1, 2 y 3 Exposiciones del profesor, Talleres teórico prácticos. Lectura de artículos. Casos de estudio. Proyecto

Contribución al Desarrollo de Competencias Genéricas

La tabla muestra que aspectos de las competencias de Comunicación Escrita, Lectura Crítica y Razonamiento Cuantitativo son evaluados a través de los factores ABET correspondientes. Por otra parte, las competencias de Ciudadanía e Inglés se favorecen gracias a la metodología del curso y también, gracias a los factores ABET correspondientes.

Resultados de Programa
A B C D E F G H I J K
Ciudadanía U U
Comunicación escrita E
Lectura crítica E
Inglés U
Razonamiento cuantitativo E E E

E- Se evalúa. U - Se usa

Contribución a los objetivos educacionales

La Carrera de Ingeniería de Sistemas y Computación plantea los siguientes objetivos educacionales, El estudiante graduado de la carrera será capaz de:

  1. EO1. Ejercitar la práctica de la Ingeniería de Sistemas y Computación profesionalmente.
  2. EO2. Diseñar y operar sistemas de computación que contribuyen a la solución de problemas relacionados a la disciplina, otra área de la ciencia y la ingeniería u otras disciplinas.
  3. EO3. Contribuir al bienestar de las comunidades desde posiciones prominentes en la industria, academia, sector público o como un emprendedor.
  4. EO4. Ser distinguido por su bases sólidas en computación, su sentido de ciudadanía responsable, su profesionalismo y liderazgo.
  5. EO5. Continuar su desarrollo profesional o involucrarse en estudios de posgrado.
Resultados de Programa
A B C D E F G H I J K
EO1 X X X X
EO2 X X X X
EO3 X X
EO4 X X X X
E05 X

A través de los factores ABET declarados en la fórmula del curso, éste contribuye a los objetivos educacionales del programa y de esta manera se relaciona con los planes educativos del programa y de la Universidad. La imagen muestra la relación completa de los factores ABET con los EO. Esta la puse para que se orienten en que casillas deben marcar en la tabla de arriba, luego la borro:.

Reglas del curso

Calificación y Balance de Evaluación del Curso

Instrumento Porcentaje A B C D E F G H I J K
Examen 12 % 12 %
Proyecto 32 % 5 % 10 % 17 %
Reportes 12 % 12 %
Presentaciones 12 % 12 %
Tarea 18 % 18 %
Talleres 14 % 14%

Uso de material en exámenes

Está permitido el uso de todo tipo de material analógico o electrónico.

Asistencia

Obligatoria.

Bibliografía

  1. John F. Hughes, Andries van Dam, Morgan McGuire, David F. Sklar, James D. Foley, Steven K. Feiner, Kurt Akeley. Computer Graphics: Principles and Practice (3rd Edition)Jul 20, 2013. ISBN-13: 078-5342399523. ISBN-10: 0321399528.
  2. Jung Hyun Han. 3D Graphics for Game Programming. Feb 17, 2011. ISBN-13: 978-1439827376. ISBN-10: 1439827370.
  3. Donald D. Hearn, M. Pauline Baker, Warren Carithers. Computer Graphics with Open GL (4th Edition) Nov 19, 2010. ISBN-13: 978-0136053583. ISBN-10: 0136053580.
  4. Dave Shreiner, Graham Sellers, John Kessenich, Bill Licea-Kane. OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 4.3 (8th Edition). ISBN-13: 978-0321773036. ISBN-10: 0321773039.
  5. Randi J. Rost, Bill Licea-Kane, Dan Ginsburg, John Kessenich, Barthold Lichtenbelt, Hugh Malan, Mike Weiblen. OpenGL Shading Language (3rd Edition)Jul 30, 2009, ISBN-13: 978-0321637635. ISBN-10: 0321637631.
  6. Dan Ginsburg, Budirijanto Purnomo, Dave Shreiner, Aaftab Munshi. OpenGL ES 3.0 Programming Guide (2nd Edition)Mar 10, 2014. ISBN-13: 978-0321933881. ISBN-10: 0321933885.
  7. Eric Haines, Pat Hanrahan, Robert L. Cook, James Arvo, David Kirk, Paul S. Heckbert, Andrew S. Glassner. An Introduction to Ray tracing (The Morgan Kaufmann Series in Computer Graphics)Jun 1, 1989. ISBN-13: 978-0122861604. ISBN-10: 0122861604.
  8. Gustavo N. RUBIANO O. Fractales para profanos. Segunda reimpresión, 2002. ISBN-10: 9588051991. ISBN-13: 978-9588051994.
  9. George Chapungu. Digital image processing basics. May 29, 2012. ASIN: B0088WC39I.
  10. P Patrick Felicia. Unity 5 from Zero to Proficiency (Foundations): A step-by-step guide to creating your first game. Feb 25, 2016. ISBN-10: 1518699898. ISBN-13: 978-1518699894.
  11. Frank Luna. Introduction to 3D Game Programming with DirectX 12 (Computer Science). March 24, 2016. ISBN-10: 1942270062. ISBN-13: 978-1942270065.
  12. Moreno Sánchez, I., & Navarro Newball, A. ” Comunicación cultural y TIC: La representación accesible de la cultura Chimú.” Historia Y Comunicación Social, 18, 541-554 ISSN: 1137-0734. 2013. http://dx.doi.org/10.5209/rev_HICS.2013.v18.43987.
  13. ANDRES ADOLFO NAVARRO NEWBALL, FRANCISCO JULIAN HERRERA BOTERO, DIEGO FERNANDO LOAIZA BUITRAGO, ” Anatomy guided bottom up creature skinning.” Revista S&T: Sistemas & Telemática. ISSN: 1692-5238. v.9 fasc.17 p.9 - 21 ,2011.
  14. ANDRES ADOLFO NAVARRO NEWBALL, GEOFF WYVILL, BRENDAN MCCANE, “Efficient mesh generation using subdivisión surfaces.” Revista S&T: Sistemas & Telemática/ ISSN: 1692-5238. v.6 fasc.12 p.111 - 126 ,2008.
  15. ANDRES ADOLFO NAVARRO NEWBALL, FRANCISCO JULIAN HERRERA BOTERO, ANTONIO ALEJANDRO MATTA GÓMEZ, DIEGO FERNANDO LOAIZA, “Rebuilding the Past from the City of Santiago de Cali, Colombia, South America. An Example of Virtual Heritage Preservation” The 8th International Symposium on Virtual Reality, Archaeology and Intelligent Cultural Heritage. Short and Project Papers from VAST2007. ISBN: 978-963-8046-89-5. ed: Epoch, p.62 - 68 ,2007.
  16. ANDRES ADOLFO NAVARRO NEWBALL, FRANCISCO JULIAN HERRERA BOTERO, CESAR AUGUSTO MARIN, “Using an interactive module to enhance and understand 3D cavity navigation: a patient’s view.” Journal Of Telemedicine And Telecare. ISSN: 1357-633X. v.13 fasc.S1 p.13 - 15 ,2007.
  17. Perea-Tanaka, Carlos F.; Moreno, Isidro; Prakash, Edmond C.; Navarro-Newball, Andres A. “Towards tantalluc: Interactive mobile augmented reality application for the Museo de América in Madrid.” Computing Colombian Conference (10CCC), 2015 10th , vol., no., pp.164-171, 21-25 Sept. 2015, doi: 10.1109/ColumbianCC.2015.7333427. ISBN 978-1-4673-9464-2.
  18. A.A. Navarro- Newball (2010). Graphics Lab, Computer Science Department, University of Otago, Dunedin, New Zealand. Thesis: Londra, A Dog Facial Animation Model. Supervisors: Prof. Geoff Wyvill; Dr. Brendan McCane.
  19. A.A. Navarro- Newball (1998). Computer Science Department, University of Hull, Hull, UK. Dissertation: The Implementation of a Windows 95 based virtual environments knee arthroscopy training system (PC VEKATS). Supervisor: Mr. Derek Wills
  20. ACM Digital Library.
  21. IEEE Xplore.
  22. Springer link.
  23. Directx 12 Programming Guide. https://msdn.microsoft.com/en-us/library/windows/desktop/dn899121(v=vs.85).aspx.

Instalaciones

Salón de clase con computador y proyector. Laboratorio de Ingeniería de Sistemas y Computación.

Material de este semestre

 
materias/computaciongrafica.txt · Última modificación: 2016/09/04 16:01 por anavarro
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki