Planificación de Computación Gráfica (2021)

     IMPRIMIR PLANIFICACIÓN

    Información básica

    Carrera
    Ingeniería en Informática
    Departamento
    Informática
    Sitio Web
    http://e-fich.unl.edu.ar/
    Plan de Estudios
    Plan 2006
    Carácter Período
    Cuatrimestral 2° Cuatrimestre
    Docente Responsable
    Pablo José Novara

    Equipo docente

    Nombre y Apellido
    Mainero, Francisco Ruben
    Novara, Pablo José
    Yones, Cristian Ariel

    Carga horaria

    Carga horaria total 101 hs
    Teoría 32 hs
    Resolución de ejercicios 31 hs
    Proyecto y diseño 6 hs
    Evaluaciones 15 hs
    Formación experimental 0 hs
    Resolución de problemas de ingeniería 10 hs
    Otras actividades 7 hs

    Contenidos mínimos

    Análisis de modelos y formas de representación gráfica de estructuras geométricas bidimensionales y tridimensionales, conceptos y algoritmos de computación gráfica, dispositivos gráficos, geometría y algoritmos para generar y organizar objetos 2-D y 3-D, transformaciones, Iluminación y sombreado, color y texturas, proceso de renderizado de imágenes realistas.

    Objetivos

    Que el alumno conozca los principios y fundamentos de la computación gráfica, la arquitectura de un sistema gráfico y los componentes más usuales de un pipeline de renderizado, domine algunas técnicas computacionales para modelar, manipular y representar objetos bidimensionales y tridimensionales y sea capaz de desarrollar programas con interfaces gráficas 2D y 3D que utilicen dichas técnicas.

    Conocimientos específicos previos para cursar la asignatura

    Trigonometría, algebra lineal, algebra de vectores y matrices, espacios vectoriales, funciones, continuidad y derivadas en curvas y superficies.

    Programación estructurada y orientada a objetos con C/C++.

    Inglés: aunque se proveen apuntes y algunas fuentes en Castellano, es altamente recomendable que el alulmno pueda buscar y/o utilizar fuentes en Inglés.

     

    Metodología de enseñanza

    Se seleccionaron contenidos ejemplificadores de situaciones encontradas en la práctica profesional y algunos temas formativos de base, necesarios para aprender los conceptos y técnicas más avanzados.

    La materia comprende técnicas en constante cambio; por lo que se dará mayor fuerza a sus fundamentos teóricos, de modo que sirvan al alumno en cualquier situación futura. Además, en razón de esta velocidad de cambio (y en consecuencia de la velocidad con que se puede desactualizar un material de estudio) el estudiante debe poder estudiar de fuentes en Inglés. Sin embargo, se proveen a modo de paliativo apuntes de cátedra, conteniendo el desarrollo completo de los contenidos exigidos, y además se rescatan algunos apuntes en castellano de otras universidades.

    Por cada unidad generalmente habrá dos clases: primero una clase de teoría y luego una segunda clase práctica. Las clases teóricas son participativas, se declaran los objetivos y se presentan y discuten los contenidos de cada tema, incluyendo ejemplos prácticos tanto didácticos y/o académicos, como reales. Se le recomienda fuermente al alumno leer el material teórico que proporciona la cátedra antes de la clase. Las clases prácticas generalmente comienzan con una breve introducción donde se explicitan los mecanismos de implementación para la práctica y las herramientas adicionales necesarias, y finalizan (en lo posible) con la defensa/exposición de la misma. Durante las mismas, la producción del software queda a cargo del alumno (aunque generalmente partiendo de una base entregada por la cátedra), y el alumno es supervisado y evaluado durante el proceso.

    Dado que el parcial evalúa solo teoría, y por ello la forma de resolverlos y aplicar los contenidos puede ser diferente a la práctica, se preveen además algunas clases de teoría en las que no se dictarán temas nuevos, sino que se utilizarán para discutir las respuestas esperadas a preguntas de exámenes de años anteriores.

    Sobre el final del cuatrimestre los alumnos, por grupos, deben producir y exponer un trabajo final de su elección, que puede tener el estilo de los prácticos (donde el alumno deberá desarrollar un programa) o ser puramente teórico (presentando algún contenido nuevo o que integre los conocimientos adquiridos).

    Programa Analítico

    Introducción a la Computación Gráfica

    Presentación general del contenido de la materia. Motivación y desarrollo histórico de la Computación Gráfica. Campos de aplicación. Perspectiva histórica y tendencias. Herramientas de hardware y dispositivos de visualización e interacción. Rendering Pipeline. API’s, bibliotecas y GUI’s portables. Presentación de OpenGL y GLUT.

    Interpolación

    Interpolación vs. aproximación. Interpolación lineal. Conjuntos convexos. Envoltorio convexo. Coordenadas baricéntricas. Interpolación Bilineal. Interpolación hiperbólica o de perspectiva correcta. Interpolación esférica lineal de versores. Cuaterniones. Rotación definida por cuaterniones. Interpolación de rotaciones.

    Modelado de la Iluminación y el Color

    Fundamentos de la teoría del color. Receptores del ojo humano y percepción del color. Reproducción del color, diagrama CIE, gamut, gamma. Espacios RGB, CMY y HSV. Colores aditivos y sustractivos. Modelos de iluminación y sombreado de superficies. Iluminación local y global. Modelos BDRF y fenomenológicos. Modelo de Phong. Normales e Interpolación de la iluminación. Sombreado: Facetado, Gouraud, Phong. Modelado de colores y transparencias. Color y alfa. Mezcla (blending) y transparencias. Modelado de luces y materiales en OpenGL. Modelado de la fuente de luz. Modelo de Phong en OpenGL. Neblina (fog).

    Geometría del Espacio y Transformaciones

    Transformaciones en OpenGL. Ventana del dispositivo de salida. Teoría básica de las transformaciones. Pilas de matrices. Matrices model, view, projection. Composición de transformaciones. Transformaciones jerárquicas. Transformaciones en general. Espacio lineal; vectores; combinación e independencia lineal; transformación lineal; matriz de transformación. Espacio afín; puntos como ubicaciones y vectores como desplazamientos; combinación e independencia afín; expansión afín; transformación afín. Espacio Euclídeo; métrica; transformaciones rígidas y de similaridad; orientación. Espacio proyectivo; subespacios lineales como puntos, vectores en el espacio físico y vectores como dirección; coordenadas homogéneas y representación matricial; transformaciones afines en el plano proyectivo; transformaciones proyectivas en general. Proyección ortogonal y perspectiva; modelo de la cámara de cajón (pinhole camera); horizonte; proyección de paralelas - puntos de fuga. Manipulación virtual de la cámara: zoom, pan, dolly. Proyección de sombras. Transformación dual de las normales.

    Rasterización

    Framebuffer y concepto de rasterización. Rasterización de segmentos rectilíneos. Algoritmo DDA (Digital Diferencial Analyzer). Algoritmos de Bresenham o punto medio. Rasterización de circunferencias. Rasterización de curvas en general. Algoritmo de subdivisones para rasterización. Relleno de curvas y polígonos cerrados. Antialiasing. Muestreo, supersampling y multisampling.

    Métodos en el Espacio de la Imagen

    Ocultamiento en image-precision, z-buffer. Manipulación de buffers. Operaciones con fragmentos. Operaciones Logicas. Mezcla. Stencil-buffer. Buffer de Acumulación. Técnicas de renderizado multipaso. Imágenes en OpenGL. Lectura / Escritura. Lectura del z-buffer. Posición 3D del cursor. Siluetas. Sombras. Práctica: Técnicas de renderizado multipaso: Visibilidad, Stencil, Motion-blur.

    Texturas

    Texturas. Modelado de la terminación superficial y otros usos. Imágenes 1, 2 y 3 dimensionales. Proyección e interpolación de las imágenes. Extensión por clamping y wrapping. Modos de mezcla de la imagen con el color de la superficie. Filtrado y mipmapping. Modos de mapeo manual, plano, cúbico, cilíndrico, esférico y ambiental. Efectos especiales. Bumb-mapping y displacement-mapping.

    Curvas y Superficies

    Introducción al modelado geométrico. Level-sets. Metaballs. Imágenes médicas voxelizadas. Operaciones booleanas de sólidos o CSG. Métodos de representación de la frontera (B-Rep). Superficies analítcas. Triangulaciones. Curvas paramétricas. Curvas de Bézier. Polinomios de Bernstein. Algoritmo de De-Casteljau. Derivadas de curvas. Reparametrización. Subdivisión. Elevación del grado. Control local vs. global. Splines interpolantes. Catmull-Rohm, Overhauser y otras técnicas. NURBS. B-Splines y forma polar. Parametrizacion, Knot-Vector. Superficies paramétricas. Producto cartesiano, Bezier, NURBS. Superficies bilineales, regladas, Coons, por barrido, revolución y lofted. Curvas y superficies por subdivisión iterativa.

    Intersecciones y Ordenamiento Espacial

    Intersecciones. Segmentos y triángulos en el espacio. Planos y tetraedros. Circunferencias y esferas. Descarte masivo. Envoltorios. Ordenamiento espacial. Divide and conquer. Árboles binarios: BSP tree, KD-tree, octree. Algoritmos de visibilidad (model-precision). Diagrama de Voronoï y triangulación Delaunay. Circunferencia por tres puntos. Esfera por cuatro puntos. Algoritmos de búsqueda lineal en conjuntos convexos.

    Bibliografía

    Bibliografía básica

    Samuel R. Buss
    3D Computer Graphics. A Mathematical Introduction with OpenGL
    Cambridge University Press

    ISBN: 978-0-521-82103-2
    Descripción:

    Libro de cabecera para casi todas las teorías.

    Dave Shreiner - The Khronos OpenGL ARB Working Group
    OpenGL Programming Guide: The Official Guide to Learning OpenGL
    Addison-Wesley Professional


    Descripción:

    Fuente para el aprendizaje de la práctica con OpenGL.

     

    Bibliografía complementaria

    Donald Hearn, M. Pauline Baker
    Computer Graphics with OpenGL
    Pearson Prentice Hall

    ISBN: 0-13-015390-7

    Edward Angel
    Interactive Computer Graphics, A Top-Down Approach Using OpenGL
    Pearson Addison Wesley

    ISBN: 0-321-32137-5

    Tomas Akenine-Möller, Eric Haines, Naty Hoffman
    Real-Time Rendering
    A K Peters, Ltd

    ISBN: 978-1-56881-424-7

    Cronograma de actividades

    Presentación de la Materia y Teoría Introductoria. Semana 1 Tipo: T Duración: 4 hs
    Docente/s responsable/s: Pablo José Novara
    Descripción:
    Observaciones:
    Práctica Introductoria Semana 1 Tipo: EP Duración: 3 hs
    Docente/s responsable/s: Francisco Ruben Mainero, Pablo José Novara, Cristian Ariel Yones
    Descripción:
    Observaciones:
    Teoría: Interpolación Semana 2 Tipo: T Duración: 4 hs
    Docente/s responsable/s: Pablo José Novara
    Descripción:
    Observaciones:
    Teoría: Modelado del Color y la Iluminación Semana 2 Tipo: T Duración: 3 hs
    Docente/s responsable/s: Pablo José Novara
    Descripción:
    Observaciones:
    Práctica: Iluminación Semana 3 Tipo: EP Duración: 4 hs
    Docente/s responsable/s: Francisco Ruben Mainero, Cristian Ariel Yones
    Descripción:
    Observaciones:
    Teoría: Espacios y Transformaciones Semana 3 Tipo: T Duración: 3 hs
    Docente/s responsable/s: Pablo José Novara
    Descripción:
    Observaciones:
    Práctica: Transformaciones Semana 4 Tipo: EP Duración: 4 hs
    Docente/s responsable/s: Francisco Ruben Mainero, Cristian Ariel Yones
    Descripción:
    Observaciones:
    Consultas y resolución de ejercicios de examen Semana 4 Tipo: PI Duración: 3 hs
    Docente/s responsable/s: Pablo José Novara
    Descripción:
    Observaciones:
    Teoría: Intersecciones y Ordenamiento espacial Semana 5 Tipo: T Duración: 3 hs
    Docente/s responsable/s: Pablo José Novara
    Descripción:
    Observaciones:
    Teoría: Rasterización y Antialiasing Semana 5 Tipo: T Duración: 3 hs
    Docente/s responsable/s: Pablo José Novara
    Descripción:
    Observaciones:
    Práctica: Rasterización Semana 6 Tipo: EP Duración: 4 hs
    Docente/s responsable/s: Francisco Ruben Mainero, Cristian Ariel Yones
    Descripción:
    Observaciones:
    Teoría: Espacio de la Imagen Semana 6 Tipo: T Duración: 3 hs
    Docente/s responsable/s: Pablo José Novara
    Descripción:
    Observaciones:
    Práctica: Espacio de la Imagen Semana 7 Tipo: EP Duración: 4 hs
    Docente/s responsable/s: Francisco Ruben Mainero, Cristian Ariel Yones
    Descripción:
    Observaciones:
    Consultas y resolución de ejercicios de examen Semana 8 Tipo: PI Duración: 4 hs
    Docente/s responsable/s: Pablo José Novara
    Descripción:
    Observaciones:
    Teoría: Texturas Semana 8 Tipo: T Duración: 3 hs
    Docente/s responsable/s: Pablo José Novara
    Descripción:
    Observaciones:
    Práctica: Texturas Semana 9 Tipo: EP Duración: 4 hs
    Docente/s responsable/s: Francisco Ruben Mainero, Cristian Ariel Yones
    Descripción:
    Observaciones:
    Teoría: Curvas de Bezier y Splines Semana 9 Tipo: T Duración: 3 hs
    Docente/s responsable/s: Pablo José Novara
    Descripción:
    Observaciones:
    Prácticas: Curvas Semana 10 Tipo: EP Duración: 4 hs
    Docente/s responsable/s: Francisco Ruben Mainero, Cristian Ariel Yones
    Descripción:
    Observaciones:
    Teoría: NURBS y Superficies Semana 10 Tipo: T Duración: 3 hs
    Docente/s responsable/s: Pablo José Novara
    Descripción:
    Observaciones:
    Práctica: Superficies Semana 11 Tipo: EP Duración: 4 hs
    Docente/s responsable/s: Francisco Ruben Mainero, Cristian Ariel Yones
    Descripción:
    Observaciones:
    Consultas, y resolución de ejercicios de examen Semana 11 Tipo: PI Duración: 3 hs
    Docente/s responsable/s: Pablo José Novara, Cristian Ariel Yones
    Descripción:
    Observaciones:
    Parcial Integrador para Promoción Semana 12 Tipo: E Duración: 4 hs
    Docente/s responsable/s: Pablo José Novara, Cristian Ariel Yones
    Descripción:
    Observaciones:
    Coloquio post-parcial. Entregas de prácticos atrasados. Semana 12 Tipo: C Duración: 3 hs
    Docente/s responsable/s: Pablo José Novara, Cristian Ariel Yones
    Descripción:
    Observaciones:
    Recuperatorio del parcial Semana 13 Tipo: E Duración: 4 hs
    Docente/s responsable/s: Pablo José Novara, Cristian Ariel Yones
    Descripción:
    Observaciones:
    Asignación de Proyectos y Recuperatorio de Trabajos Prácticos Semana 13 Tipo: P/D Duración: 3 hs
    Docente/s responsable/s: Francisco Ruben Mainero, Pablo José Novara, Cristian Ariel Yones
    Descripción:
    Observaciones:
    Consultas sobre el proyecto final Semana 14 Tipo: P/D Duración: 3 hs
    Docente/s responsable/s: Francisco Ruben Mainero, Pablo José Novara, Cristian Ariel Yones
    Descripción:
    Observaciones:
    Consultas y Coloquio Integrador de Promoción Semana 14 Tipo: C Duración: 4 hs
    Docente/s responsable/s: Francisco Ruben Mainero, Pablo José Novara, Cristian Ariel Yones
    Descripción:
    Observaciones:
    Defensa de Proyectos Finales Semana 15 Tipo: E Duración: 4 hs
    Docente/s responsable/s: Francisco Ruben Mainero, Pablo José Novara, Cristian Ariel Yones
    Descripción:
    Observaciones:
    Defensa de Proyectos Finales Semana 15 Tipo: E Duración: 3 hs
    Docente/s responsable/s: Francisco Ruben Mainero, Pablo José Novara, Cristian Ariel Yones
    Descripción:
    Observaciones:

    Requerimientos para regularizar

    Todos los trabajos prácticos y el trabajo final (tf) aprobados

    Requerimientos para promover

    Regular + 70% mínimo en parcial + coloquio oral aprobado.

    Notas:
    * Todo examen parcial o defensa de trabajo práctico puede ser recuperado, de resultar insuficiente el original. Toda calificación es la mayor de entre la original y la de su recuperatorio.
    * La nota final del alumno promocionado se calculará como:
          40%*parcial + 40%*coloquio + 20%*tf

    Examen final

    Alumnos regulares

    Examen oral, de teoría y métodos prácticos (sin programación)

    Alumnos libres

    1. Práctica a preferencia del alumno:
        Opción a) Práctico de programación en computadora a resolver en tres horas de examen.
        Opción b) Entrega tardía (evaluada y aprobada) de cada práctico y/o TF adeudados.
    2. Examen oral, de teoría y métodos prácticos (sin programación).

    Evaluaciones

    Fecha Tipo Modalidad Descripción
    10-11-2021 Parcial Escrita Parcial Integrador para Promoción.

    Interpolación, Color e Iluminación, Transformaciones, Rasterización, Texturas, Curvas y Superficies, Intersecciones y Ordenamiento Espacial, Técnicas del espacio de la Imagen.

    12-11-2021 Trabajo Práctico Oral Entrega de prácticos atrasados.

    Oportunidad para presentar y defender TPs que no hayan sido presentados o aprobados previamente en sus correspondientes clases prácticas.

    17-11-2021 Recuperatorio Escrita Recuperatorio del parcial.

    Se mantiene la lista de temas original del parcial integrador.

    24-11-2021 Coloquio Oral Coloquio para Promoción.

    Solo para quienes tengan posibilidad de promocionar de acuerdo a la nota del parcial (o su recuperatorio).

    01-12-2021 Otras Evaluaciones Oral Exposición y Defensa de Trabajos Finales.
    03-12-2021 Otras Evaluaciones Oral Exposición y Defensa de Trabajos Finales.

    Información complementaria

    Recomendaciones para el estudio

    El contexto de esta materia en la carrera la hace particularmente difícil; por lo tanto el alumno debe utilizar un tiempo extra similar al del dictado para comprender los temas y fijar los conocimientos. La mayoría de los alumnos no pueden absorber los conocimientos al ritmo que son expuestos en una clase teórica sin una lectura previa del material, por lo que se sugiere fuertemente la lectura crítica de los apuntes antes de la correspondiente clase. Esto es para aprovechar el tiempo de la clase teórica, que de otro modo resulta muy densa. Los conocimientos se adquieren en la lectura, pero se asientan con las explicaciones y la práctica. Del otro modo las explicaciones no responden a preguntas presentes del alumno sino a futuras preguntas que pueden surgirle cuando estudie o produzca el software y así, las clases teóricas resultan aburridas y prácticamente inútiles.

    Materiales y Aula Virtual

    Todo el material que la cátedra provea (apuntes de teoría, presentaciones utilizadas en las clases, grabaciones en video de clases de teoría, códigos fuentes para trabajos prácticos, ejemplos y enlaces adicionales, enunciados de examenes anteriores, etc) se publicará en la plataforma e-fic (http://e-fich.unl.edu.ar).

    En la misma también estarán disponibles un foro para recibir notificaciones por parte de la cátedra y un foro en el cual los alumnos podrán realizar consultas de cualquier índole relacionadas a los contenidos o a la organización del cursado. Es responsabilidad del alumno acceder regularmente, ya que será el medio por el cual se comunicará cualquier cambio en la planificación pueda llegar a requerirse durante el cursado.

     

    Sobre el desarrollo de los trabajos prácticos

    Los Trabajos Prácticos y el Trabajo Final se realizarán en grupos de dos o tres alumnos. Excepcionalmente se puede aceptar distinta cantidad. La cátedra puede disolver un grupo si considera inadecuada su conformación.

    La asistencia es optativa, sin ningún impacto en la calificación, pero los trabajos prácticos se entregan, analizan y evalúan durante las clases prácticas.

    En cuanto al software, cualquier IDE o compilador para C++ que cuente con las bibliotecas mencionadas, en cualquier sistema operativo, será suficiente. La cátedra proveerá las instrucciones para instalar las bibliotecas requeridas en el IDE ZinjaI, y los archivos de configuración de proyecto para este entorno para la mayoría de las prácticas, pero el alumno podrá optar por cualquier otro entorno C++ y solicitar a la cátedra ayuda para la puesta en marcha de los programas.

     

    Evaluaciones durante el cursado

    Habrá un único examen parcial de caracter integrador escrito. El examen se centra en la teoría pero pueden incluir la descripción de un método práctico. La aprobación de este examen solo es necesaria para acceder a la promoción, pero no para obtener la regularidad de la materia.

    Los prácticos se confeccionan y evalúan en clases, pudiendo completarse o mejorarse fuera del horario de clases. Por razones operativas, no se aceptará la defensa de más de dos prácticos por grupo por clase. De modo que los grupos pueden defender prácticos atrasados en cualquier clase práctica. Sin embargo se recomienda fuertemente trabajar cada semana sobre el práctico que corresponda según la planificación para ir en sincronía con la teoría y las explicaciones que se presentan en clases, y recuperar los prácticos pendientes no aprobados en la fecha especial que está previstas tal fin luego del parcial, o eventualmente en alguna de las fechas de consulta. Si no están todos aceptados al final del cuatrimestre, el alumno queda automáticamente libre. El trabajo diario en la práctica será evaluado en forma continua, considerando: calidad, eficiencia y estilo de la programación, documentación, presentación y defensa, grado de comprensión y explotación de los recursos y métodos proporcionados por la teoría subyacente, búsqueda de mejoras y alternativas más eficientes, etc. Aún cuando la confección es grupal, la calificación o aprobación es individual, a través de preguntas dirigidas y el análisis de los métodos de trabajo. El trabajo debe estar aceptable en términos de resultados y funcionamiento, pero aún así la calificación depende del trabajo y la exposición del alumno, y no del funcionamiento del programa.

    El trabajo final consiste en el desarrollo de un práctico o tema nuevo o integrador. El grupo puede desarrollar algún tópico de teoría más avanzado o complementario a los que cubre la materia, o mostrar un programa de producción propia que integre varios de los contenidos estudiados (juego, demo, simulación, etc.). En todos los casos debe hacerse una exposición y defensa frente a la clase en las fechas previstas (última semana de clases). Además, el grupo deberá presentar previamente (en la fecha prevista, una semana antes de la defensa) por escrito una descripción breve del trabajo que expondrá, la cual deberá ser aprobada por la cátedra y respetada en la defensa final. El trabajo se realiza y defiende en grupo, pero la evaluación es nuevamente individual, con los mismos parámetros que la práctica.

    Se pueden recuperar todas las instancias de prácticos y parciales, inclusive las aprobadas (para mejorar la calificación). En cada caso la nota es la mayor de entre la original y el recuperatorio. Los alumnos que quieran acceder a la promoción, además de aprobar el parcial, deben aprobar un coloquio oral integrador, en la fecha prevista en el cronograma. En caso de que el alumno no resulte promovido (o desee realizar el examen final para mejorar su calificación) la calificación será la resultante del examen final.

    Examen final

    El examen final para los alumnos regulares es un examen oral sobre la teoría y las metodologías prácticas, donde no se requiere que programen pero deben poder describir algún método de programación para un problema propuesto. El examen final para alumnos libres tiene antes una instancia de programación, que consiste en el desarrollo de un programa del mismo estilo que los prácticos propuestos en el curso y que deberá ser realizado íntegramente en el tiempo provisto. La segunda instancia es idéntica al examen para alumnos regulares.

    Si el alumno libre presenta y aprueba todos los prácticos (adeudados) y un trabajo final (si lo adeudaba) antes de la fecha de examen, se podrá obviar la primera etapa. Los trabajos prácticos y/o el trabajo final aprobados durante el cursado se considerarán ya aprobados. La fecha deberá ser negociada con la cátedra, para realizar la entrega y defensa entre un mes y una semana antes del examen teórico. Una vez aprobadas las prácticas, el alumno gozará del mismo tratamiento que un alumno regular en el examen de teoría y métodos.