IA725 - Computação Gráfica I

Calendário de Atividades

Primeiro Semestre de 2022


Aula
Dia
Tópico
Leitura/Vídeo
Exercícios
1
14/março
Fluxo de Renderização (OpenGL) Hughes: Seções 1.1, 1.6, 1.7, 1.8, 1.9, 1.10, 1.13, 3.1 e 38.3 (1) Instruções para instalação de tutoriais (o pacote baixado já contém todos os arquivos, arquivos-cabeçalho e bibliotecas, necessários para gerar executáveis em Windows (Visual Studio) e Ubuntu)
(2) Teste o ambiente instalado com os programas Tutorial 01, Tutorial 03, Tutorial 16, Tutorial 22 que usam API GLUT para sistemas de janelas.
(3) Para aqueles que não tem Visual Studio, pode instalar MinGW-w64 e fazer a instalação dos tutoriais em Windows seguindo as instruções em linhas de comando para S.O. "Ubuntu".
(4) Caso ocorram problemas nas instalações, instale manualmente o ambiente de desenvolvimento de aplicativos gráficos baseados em OpenGL: driver de OpenGL (para acessar GPU), Freeglut - The Free OpenGL Utility Toolkit/GLFW - Graphics Library Framework (para ter uma simples API de janelas), The OpenGL Extension Wrangler Library (para acessar funções de OpenGL de versão >= 1.0 em Windows - alternativa para glfw é glad), AntTweak Bar (para complementar as ferramentas de interações de glut), ImageMagick (para processar imagens), FreeType (para processas e renderizar fontes), The Open-Asset-Importer-Lib (para processar arquivos de dados vetoriais 3D em diferentes formatos), GLM - OpenGL Mathematics (para cálculos vetoriais e matriciais) e faça testes com os projetos (auto-contidos) disponíveis no Moodle.
2
(1) Instalação do driver de OpenGL.
(2) Vídeos de instalação de um ambiente de desenvolvimento de aplicativos gráficos em: Windows; Mac; Ubuntu.
(3) Hughes: Capítulo 16.
(4)Rendering Pipeline Overview.
(5)OpenGL API Documentation.
(6) Freeglut 3.0.0/GLFW 3.3
3
21/março
Revisão de Conceitos Matemáticos Hughes: Capítulo 7 Lista de exercícios no Moodle (Recomendados: 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.9, 7.11 e 7.17)
4
(1) Points, Vectors and Coordinate Systems (why are points and vectors different?)
(2) Homogeneous Coordinates
(3)Ray-sphere intersection
(4)Signed 2D triangle area from the cross product of edge vectors
5
28/março
Modelagem Geométrica Hughes: Capítulo 8; Seções 22.1 - 22.3; 23.2; 24.1 - 24.4, 24.6 (1) Execute os programas Tutorial 04, Tutorial 05, Tutorial 10, Tutorial 22, Tutorial 27 e Tutorial 30.
(2) Implemente três programas: uma mesa de tampo quadrado (ocre/sienna), um icosaedro de ordem 2 (verde claro), e um bule de Utah (terracota), centrados na origem.
(3) Faça a captura das imagens dos modelos renderizados, no mínimo 3 por modelo.
6
(1)Modern OpenGL Tutorial 07 (Dados originais do bule de Utah)
(2) OpenGL Cylinder, Prism & Pipe
(3) OpenGL Sphere
(4) Towards Uniform Online Spherical Tesselation (Section 3)
(5) Extrato de OpenGL SuperBible (Geometry Shaders e Tesselation Shaders)
(6) Extrato de Cookbook
(7) Formato Wavefront Material Template Library (MTL)
(8) Dados (indexados) de uma esfera de 162 vertices
(9) Dados de um cubo
(10) Three Approaches to Rendering Surface Patches
(11) OpenGL Vertex Array
7
4/abril
Transformações Geométricas Hughes: Capítulos 10 e 11 (1) Execute os programas Tutorial 07, Tutorial 08, Tutorial 11.
(2) Implemente uma cena de uma mesa sobre a qual estão o bule de Utah e o icosaedro tesselado em ordem 2.
(3) Implemente o manipulador arcball para girar a mesa, junto com os objetos apoiados nela, conforme os eventos de interações do usuário via mouse (glutMotionFunc), como demonstra Tutorial 15.
(4) Capture a cena renderizada em 3 diferentes tomadas.
8
(1) OpenGL Transformation
(2) How to generate constant time interval for uniform movement?(glut)
(3) Quaternions, Interpolation and Animation
9
11/abril
Técnicas de Interação Hughes: Seção 2.6, Capítulo 21
10
(1) Arcball Rotation Control ( codes)
(2) Response Times: The 3 Important Limits
11
18/abril
Transformações Projetivas Hughes: Seções 13.1-13.4, 13.6-13.9; Capítulo 12 (opcional) (1) Execute os programas Tutorial 12, Tutorial 13.
(2) Adicione à cena da mesa com o icosaedro tesselado em ordem 2 e o bule de Utah duas funcionalidades: (a) seleção de tipo de projeção, paralela e perspectiva, via glutCreateMenu; (b) navegação por meio do cenário de forma análoga às interações (glutSpecialFunc) implementadas no Tutorial 14 com a inclusão de mais duas chaves de controle: GLUT_KEY_F1 e GLUT_KEY_F2 para move a câmera em relação ao vetor Up in- e decrementalmente. (3) Capture 2 imagens da cena renderizada, uma de vista paralela e outra de vista perspectiva.
12
(1) OpenGL Projection Matrix
(2) Camera and Clipping Plane
(3) Unity Camera Controls, Part 1: Core Functionality e Unity Camera Controls, Part 2: Mouse Controls
13
25/abril
Exclusão (Culling) e Recorte (Clipping) Hughes: Seções 13.5, 13.6, 15.6.3, 36.5 (1) Implemente e analise o código apresentado em Grasshopper.
(2) Adicione à cena de mesa com icosaedro subdividido em ordem 2 e o bule de Utah o controle interativo do plano de clip via a rolagem do mouse (glutMouseWheelFunc).
(3) Capture 2 imagens de cena recortada, uma na vista paralela e outra na vista perspectiva.
14
(1) Vertex Post-Processing.
(2) Clip Planes.
15
2/maio
Modelos de Cor Hughes: Capítulo 28 (1) Execute o programa Tutorial 09 e Tutorial 32
(2) Modifique fragment shader do Tutorial 09 de forma similar ao vídeo para ver impactos sobre as cores renderizadas.
(3) Implemente uma função de edição das componentes H,S,V da cor do bule de Utah na cena da mesa com o bule e o icosaedro por meio das seguintes interações (glutKeyboardFunc): H aumenta o ângulo e h reduz o ângulo no disco de cor em 10 unidades (croma); S aumenta o branco e s reduz o branco em 10 unidades (saturação), e V aumenta o brilho e v reduz o brilho em 10 unidades (luminância)
(4) Capture a cena renderizada com o triângulo e o icosaedro em 3 diferentes cores.
16
(1) RGB to HSV and HSV to RGB
(2) OpenGL Tutorial 24 - Color
(3) Using GLSL mix() to combine colors in OpenGL
17
09/maio
Modelos de Iluminação Local e Tonalização Hughes: Seções 6.2, 6.3, 6.5, 14.9, 14.10, 14.11, 26.2, 16.3, 26.4. Tópicos avançados: Caps. 26 e 27) (1) Execute os programas Tutorial 17, Tutorial 18, Tutorial 19, Tutorial 20 e Tutorial 21.
(2) Adicione à cena da mesa com o icosaedro tesselado em ordem 2 e o bule de Utah uma fonte de luz branca móvel. Aplique o modelo de iluminação Blinn-Phong e os três tipos de tonalização (Flat, Gouraud e Phong) para "colorir" os três objetos da cena. Adicione esta nova funcionalidade como um item, contendo 3 subitens ao Menu criado anteriormente. Através das interações com as teclas (x/X,y/Y,z/Z) move-se a fonte de luz, e com as teclas (a/A,d/D,e/E) as propriedades ka, kd e ks do material do bule (glutKeyboardFunc), de forma análoga aos sliders implementados na demo. As letras minúsculas e maísculas de- e incrementam os valores atuais por passos pré-fixados. (3) Capture 3 imagens da cena renderizada, uma de cada modelo de tonalização.
18
(1) Advanced Lighting
(2) OpenGL Gouraud Shaded Triangle Demo using GLSL
(3) OpenGL - lighting with the Phong reflection model (pat 1 of 2)
(4) OpenGL - lighting with the Phong reflection model (pat 2 of 2)
(5) Gouraud and Phong demos (GLSL)
(6) OpenGL Interpolation Qualifiers
19
16/maio
Percepção Visual Hughes: Capítulo 5
20
(1) How your eyes trick your mind
(2) Gestalt Principles of Perception - With Examples
(3) Motion Induced Blindness
21
23/maio
Renderização e Rasterização Hughes: Capítulo 15. Tópicos avançados: Caps. 30, 31 e 32 Lista de exercícios no Moodle (Recomendados: 15.2 e 15.3)
22
(1) What is Rendering? Rasterization, Ray Tracing, Radiosity.
(2) What is the difference between Ray Tracing and Rasterization?
(3) The Beauty of Bresenham's Algorithm
23
30/maio
Texturização Hughes: Capítulo 20 (1) Execute os programas Tutorial 16, Tutorial 25, Tutorial 26 e Tutorial 27.
(2) Adicione à cena da mesa com a esfera e o bule de Utah uma textura de madeira para a mesa, uma textura bump para o icosaedro de ordem 2, e um bule de superfície bem polida e lisa (opcional, de material refletor).
(3) Capture 3 imagens da cena renderizada em três diferentes tomadas de câmera.
24
(1) OpenGL - normal maps
(2) OpeGL Tutorial 51: Cube Map Reflections
(3) Case Study: Vector Displacement Mapping in Real-Time
(4) Mathematics of glTexGen
(5) Panorama to Cubemap (imagens panorâmicas equiretangulares)
25
06/junho
Sombra Hughes, Seção 5.6, 14.3, 15.4.8, 15.4.9, 15.6.5, 31.14, 36.1.1 (1) Execute os programas Tutorial 23 e Tutorial 24, Tutorial 40, Tutorial 43 e Tutorial 47
(2) Adicione à cena da mesa com o icosaedro tesselado e o bule de Utah sombras em relação à fonte de luz branca. Adicione um quadrado debaixo da mesa para renderizar a sombra da mesa.
(3) Capture 3 imagens da cena renderizada em 3 diferentes tomadas da câmera.
26
(1)Shadow Filtering
(2)Shadow Acne
(3)Fragment Processing and the Framebuffer
(4)Shadows
(5) OpenGL - depth and stencil buffers
(6) Stencil Testing
(7) GPU Gems: Capítulo 9
(8) GPU Gems 3: Capítulo 11
27
13/junho
Visibilidade Hughes: Capítulos 36 e 37
28
(1) Binary space partitioning tree
(2) Binary space partitioning tree tutorial
29
20/junho
Processadores Gráficos Modernos Hughes: Capítulo 38 (1) Execute os programas Tutorial 28, Tutorial 33, Tutorial 35, Tutorial 36, Tutorial 37 e Tutorial 41
(2) Lista de exercícios no Moodle (Recomendado: Faça uma análise comparativa entre as 3 técnicas quanto às aplicações e às estratégias adotadas para otimizações: instancing, transform feedback e deferred shading).
30
(1)Instancing
(2)Transform Feedback
(3)Deferred shading
(4)OpenGL 3D Game Tutorial 44: Gaussian Blur
(5)NVIDIA Nsight Graphics
31
11/julho
Avaliação individual (escrita)

Voltar para a página do curso.