Contents
- 1 Introdução
- 2 Fundamentos de Computação Gráfica
- 3 Luz e Técnicas Avançadas de Computação Gráfica
- 4 Desenvolvimento de Animações utilizando Modelos Hierárquicos
- 4.1 Utilização de OpenGL para Animação
- 4.1.1 15. O que é OpenGL e Instalação de OpenGL em diversas Plataformas usando GLUT
- 4.1.2 16.Criando sua Primeira Janela com OpenGL
- 4.1.3 17. Criando Objetos em 2D com OpenGL
- 4.1.4 18. Primeiros Objetos Coloridos em OpenGL
- 4.1.5 19. Rotação Simples de Objetos
- 4.1.6 20. Conceitos Básicos usando Objetos Sólidos
- 4.1.7 21. Modelos de Arame e Facetas em 3D
- 4.1.8 22. Normais e efeitos de Iluminação
- 4.2 Desenvolvimento de Aplicações Avançadas com Game Engines e Modelos Hierárquicos
- 4.2.1 26. Modelos Hierárquicos em Computação Gráfica
- 4.2.2 27. Princípios da Modelagem e Simulação da Movimentação Articulada Humana e Animal
- 4.2.3 28.Tutoriais de Modelagem de Modelos Hierárquicos com Blender
- 4.2.4 29.Tutoriais de Implementação de Animações com Modelos Hierárquicos em Unity3D e Unreal4
- 4.2.5 30. Realidade Virtual e VRML
- 4.1 Utilização de OpenGL para Animação
- 5 Estratégia de Ensino
- 6 Avaliação
- 6.1 Estratégia e Critérios de Avaliação
- 6.2 Exemplos de Trabalhos
- 6.2.1 Sistema Gráfico Interativo com Modelos de Arame 3D (SGI)
- 6.2.2 Shader estendendo o SGI
- 6.2.3 Renderização Realista de Cena utilizando Raytracer
- 6.2.4 Renderização Realista de Cena utilizando Game Engine/Modelador 3D Avançado
- 6.2.5 Animação com Modelos Hierárquicos utilizando OpenGL
- 6.2.6 Animação com Modelos Hierárquicos utilizando Game Engine
- 7 Toques para o Professor
- 8 Agradecimentos
Introdução
Estrutura do Material
Este material codifica a experiência de vários anos de desenvolvimento de material de ensino para a disciplina INE 5341/INE 5420 – Computação Gráfica no Curso de Ciências da Computação na Universidade Federal de Santa Catarina e reflete as experiências com os alunos e os resultados obtidos no ensino dessa disciplina. O material foi elaborado para ser um material-texto de uma disciplina de Computação Gráfica em um Curso de Ciências ou Engenharia da Computação ou para ser usado em partes em uma disciplina de Introdução à Computação Gráfica em um curso de Sistemas de Informação ou de Engenharia. Buscando uma utilização didática e flexível, o material foi dividido em quatro partes, que podem ser utilizadas de forma relativamente independente:
Módulo I. Fundamentos de Computação Gráfica
Nesta parte do material, são apresentados os conceitos fundamentais de geometria computacional e suas aplicações na Computação Gráfica. São abordados desde conceitos básicos de visualização gráfica de dados no computador até a representação de entidades complexas, como por exemplo, estruturas tridimensionais em perspectiva e representação de superfícies curvas paramétricas.
Módulo II. Luz e Técnicas Avançadas de Computação Gráfica
Na segunda parte do material, serão vistos os conceitos fundamentais da visualização realista de objetos em Computação Gráfica. Para tanto será vista a teoria das cores e os conceitos de iluminação de objetos e também os algoritmos para iluminação, luz, reflexo e sombra. O aluno aprenderá os algoritmos básicos para rasterização, z-Buffering e iluminação e verá como estender o seu sistema gr´fico interativo de forma a obter shading nas visualizações.
Este módulo é finalizado com uma visão geral sobre Raytracing, com um tutorial para utilização de um raytracer de código livre (POV-Ray) e um tutorial com uma ferramenta de design & modelagem 3D de código livre (Blender). Ambos os tutoriais serão voltados ao uso destas ferramentas para elaboração da representação detalhada e realista de uma cena.
Serão realizados dois trabalhos:
- Shader
- Alternativa 1: Estender o SGI programando rasterização, z-Buffer e shading manualmente
- Alternativa 2: Usar a ferramenta Shader Maker
- Modelagem Realista de uma Cena
- Alternativa 1: Realizar uma modelagem com a linguagem de descrição de cena do POV-Ray
- Alternativa 2: Modelar em Blender
Módulo III. Desenvolvimento de Animações utilizando Modelos Hierárquicos
Nesta parte do material, será visto os conceitos básicos para o desenvolvimento de aplicações gráficas modernas, de efeito visual convincente, através da utilização da API OpenGL e de suas interfaces de utilização de alto nível, como GLUT, JUN, SDL e JavaGL. Todo o material tratado aqui é desenvolvido de forma a propiciar ao usuário subsídios para o desenvolvimento de aplicações portáveis, independentes de plataforma, que possam ser utilizadas tanto em ambiente MS Windows, como em Linux ou MacOS.
São abordadas também técnicas para o desenvolvimento de aplicações avançadas, através da abordagem de técnicas para a modelagem e implementação de estruturas gráficas hierárquicas, as quais propiciam o desenvolvimento de animações complexas e a simulação de movimentação de animais e outras estruturas articuladas de forma natural e sistemática.
Ao final desta seção será vista ainda uma breve introdução à Realidade Virtual através da utilização de VRML.
Como usar este material ?
Como citamos no início deste capítulo, estas partes, dependendo do nível de conhecimento do leitor, podem ser utilizadas de forma independente. A parte II pode ser utilizada pelo leitor interessado em Raytracing, Raycasting, sua teoria e formas e ferramentas de aplicação, sem necessidade dos outros capítulos. O leitor com algum conhecimento de Computação Gráfica básica e interesse no desenvolvimento de aplicações poderá começar diretamente pela parte III, com uma eventual consulta ou outra à parte I. O leitor com bons conhecimentos de Computação Gráfica básica interessado no desenvolvimento de jogos ou simulações poderá consultar a parte IV diretamente. Vamos a seguir explicar brevemente o conteúdo de cada uma das seções do material.
Fundamentos de Computação Gráfica
Esta parte do material destina-se ao estudante de graduação em um curso de Ciência da Computação, o qual necessita de conhecimentos fundamentados nestas técnicas, que lhe propiciem subsídios para o desnevolvimento de aplicações de forma independente dos recursos fornecidos por APIs avançadas hoje existentes e que também deverá possuir conhecimentos sobre o funcionamento interno dessas APIs, caso passe a utilizá-las. Para um curso de Sistemas de Informação, este material pode ser utilizado como material introdutório, com o qual se realiza um apanhado mais superficial, sem a necessidade de o aluno implementar todos os exercícios sugeridos. Para ambas as formas de aplicação, é necessário porém, que o aluno possua bons conhecimentos de Álgebra Linear, Geometria Analítica e noções de Derivadas.
Esta parte é dividida em oito capítulos, os quais são organizados em nível crescente de dificuldade. Iniciamos por conceitos básicos de representação, passando por técnicas de Geometria Plana aplicadas à Computação Gráfica 2D, avançamos até a representação em perspectiva de estruturas tridimensionais sob a forma de modelos de arame. Ao fim de cada capítulo sugerimos um exercício de implementação das técnicas vistas e comentamos como realizar este exercício sob os diversos paradigmas de programação atualmente em uso. Cada exercício constrói sobre a implementação realizada no capítulo anterior, de forma que estes capítulos devem obrigatoriamente ser trabalhados pelo estudante de forma sistemática e seqüencial. Ao final desta parte do material, o estudante terá implementado um sistema gráfico interativo, capaz de representar um mundo tridimensional constituído por objetos geométricos tridimensionais e superfícies curvas.
A seguir abordaremos brevemente o conteúdo de cada capítulo.
1. Conceitos Básicos
Neste capítulo veremos: O que é computação Gráfica?; Frame Buffer; Display File; Viewport; Sistema de Coordenadas Normalizado (2D) e Transformação de Viewport (2D) e Técnicas de Implementação de um Display File em 2D.
2. O Sistema Gráfico Básico em 2D
Neste capítulo veremos: Translação 2D; Escalonamento 2D e Rotação 2D, além do Sistema de Coordenadas Homogêneo.
3. Clipping (Recorte)
Aqui vamos abordar: Recorte de Pontos; Recorte de Linhas pela Equação Paramétrica da Reta; Algoritmos de Cohen-Sutherland e Liang-Barski; Algoritmo da Subdivisão do Ponto Médio; Cohen-Sutherland e Recorte de Polígonos e outros objetos complexos, recorte externo.
4. Curvas Paramétricas em 2D
Neste capítulo veremos: curvas de Hermite, Bézier e Spline. Veremos ainda os Algoritmos Incrementais utilizando Forward Differences.
5. Estruturas de Dados e Operações Básicas 3D
Aqui repetiremos o que foi visto para as transformações em 2D para o caso 3D: Translação e Escalonamento em 3D; Rotação em 3D (passos por eixo de rotação) e Rotação arbitrária em 3D.
6. Perspectiva em Computação Gráfica 3D
Aqui vamos abordar: Projeções Paralelas (Isométrica e Cavaleira); Projeções em Perspectiva utilizando Ponto de Fuga; Volume de Coordenadas Normalizado e Plano de Projeção Normal e sua transposição para a Viewport e o Display File em 3D.
7. Superfícies Curvas Bicúbicas 3D
Neste capítulo veremos: Superfícies de Bézier em 3D e Superfícies Complexas: B-Splines Bicúbicas em 3D.
Luz e Técnicas Avançadas de Computação Gráfica
Esta parte do material destina-se ao leitor interessado em aprender as técnicas de simulação de efeitos de iluminação, reflexo e sombra.
Esta parte é dividida nos seguintes capítulos:
Fundamentação Teórica e Algoritmos de Iluminação
8. O que é Raytracing ?
9. Conversão de Varredura (Scan Conversion)
10. Buffer de Profundidade – z-Buffering
11. Teoria das Cores
Ferramentas de Iluminação e Shading
12. Modelando a Iluminação de um Objeto
13. Principais Raytracers e Ferramentas de Design e Modelagem 3D
14. Tutorial de Raytracing usando POV-Ray/Tutorial de Modelagem e Iluminação 3D usando Blender
Desenvolvimento de Animações utilizando Modelos Hierárquicos
Esta parte do material destina-se ao estudante que deseja aprender a utilizar modernas ferramentas de desenvolvimento de aplicações para Computação Gráfica, como jogos de computador, ferramentas de visualização científica avançada para aplicações meteorológicas, médicas e de simulação física e aplicações de Realidade Virtual.
Este módulo será dividido em três partes:
- Fundamentação Teórica de Modelos Hierárquicos e Animação
- Utilização de OpenGL para Animação
- Utilização de Game Engines para Animação
Esta parte complementa com ferramentas práticas e de programação eficiente a teoria adquirida pelo aluno na parte anterior. Apesar de ser possível montar-se uma disciplina de Computação Gráfica iniciando-se pelo primeiro capítulo desta parte do material, desencorajamos fortemente que se o faça, para evitar que se produza alunos que saibam utilizar um conjunto de técnicas avançadas, mas sem conhecimento algum dos princípios que regem o funcionamento dessas mesmas. Em um curso de Ciência da Computação, a nossa sugestão é que se limite esta parte do material a 30% da carga horária da disciplina e se estimule os alunos a pesquisar os recursos da API de forma autônoma. Em um curso de Sistemas de Informação, onde a parte inicial foi tratada de forma mais superficial, pode-se concentrar a carga horária nesta parte do material.
Utilização de OpenGL para Animação
Aqui vamos introduzir os conceitos básicos da API OpenGL, a biblioteca gráfica originalmente desenvolvida pela Silicon Graphics que se tornou o standard para desenvolvimento de aplicações complexas e possuidoras de realismo convincente. Para isto vamos apresentar inicialmente a estrutura básica de um programa OpenGL, sua filosofia de funcionamento e a interface independente de plataforma de alto nível mais utilizada para aplicações OpenGL, o GLUT. Com estas ferramentas vamos desenvolver passo a passo uma aplicação gráfica para visualização de dados de reconstruções tridimensionais de tomografias computadorizadas, que utilizará todas as funcionalidades mais importantes de OpenGL. Como parte integrante da introdução das técnicas de desenvolvimento, estaremos apresentando a teoria da iluminação e reflexão e as técnicas de utilização desta para prover realismo à representação gráfica. Paralelamente estaremos apresentando também as APIs de alto nível SDL, para desenvovlimento de jogos de alta performance, e JavaGL e SmalltalkGL, para desenvolvimento de aplicações OpenGL através da utilização destas linguagens orientadas a objetos.
15. O que é OpenGL e Instalação de OpenGL em diversas Plataformas usando GLUT
16.Criando sua Primeira Janela com OpenGL
17. Criando Objetos em 2D com OpenGL
18. Primeiros Objetos Coloridos em OpenGL
19. Rotação Simples de Objetos
20. Conceitos Básicos usando Objetos Sólidos
21. Modelos de Arame e Facetas em 3D
22. Normais e efeitos de Iluminação
Desenvolvimento de Aplicações Avançadas com Game Engines e Modelos Hierárquicos
Esta parte do material destina-se ao estudante que deseja desenvolver aplicativos que simulem a movimentação de objetos complexos, constituídos por muitas partes articuladas, como é comum em ambientes de simulação, em jogos de computador e em visualizações de Zoologia e Cinesiologia e outras áreas da Anatomia Humana e Animal.
Aqui vamos nos concentrar nas técnicas para implementação de Modelos Hierárquicos (MHs) em OpenGL. Os MHs já foram abordados na primeira parte do material e aqui analisaremos os requisitos para desenvovler aplicações baseadas nestes modelos colocados por OpenGL e como implementar estas aplicações. A seguir analisaremos diversos modelos de movimentação articulada humana e animal e seus princípios matemáticos e implementaremos uma animação de movimentação animal ou robótica.
Nesta parte apresentamos ao aluno as técnicas para o desenvolvimento de animações e ela pode ser considerada opcional em uma disciplina de um curso de graduação. Nossa experiência porém, a de que justamente possibilitar ao aluno aprender a implementar animações não só o motiva, como também lhe propicia subsídios para mais tarde ser capaz de programar jogos de computador e animações científicas complexas e grandemente amplia o seu horizonte no que concerne a aplicabilidade prática do conteúdo de uma disciplina de Computação Gráfica. Como a teoria em si é bastante simples, exigindo apenas do aluno bons conhecimenos de Estruturas de Dados, para o ensino desta parte do material podem ser reservados apenas 10% da carga horária de uma disciplina, devendo-se porém, observar que a implementação de animações realistas toma bastante tempo de modelagem e programação, devendo ser reservado tempo suficiente ao final da disciplina para que o aluno possa desenvolver adequadamente os exercícios propostos.
Esta parte é dividida nos seguintes capítulos:
26. Modelos Hierárquicos em Computação Gráfica
27. Princípios da Modelagem e Simulação da Movimentação Articulada Humana e Animal
28.Tutoriais de Modelagem de Modelos Hierárquicos com Blender
29.Tutoriais de Implementação de Animações com Modelos Hierárquicos em Unity3D e Unreal4
30. Realidade Virtual e VRML
Estratégia de Ensino
A disciplina terá um enfoque eminentemente prático. A metodologia de ensino é baseada no contraponto entre aulas teóricas e aulas práticas: Para tanto todo novo assunto será introduzido em uma aula teórica que terá a duração de 2 horas, acompanhada ou não pelo estagiário de docência (ED) designado para a disciplina. Este conteúdo teórico será fixado através de uma aula de caráter prático, com duração de também 2 horas, com auxílio de um estagiário de docência, onde serão realizadas em laboratório atividades de modelagem e implementação com o objetivo de fixar o conteúdo, além da discussão em grupo de problemas de compreensão e implementação encontrados pela turma.
A ferramenta de EAD Moodle (disponível em moodle.ufsc.br) será utilizada para guiar e organizar o ensino, sendo o repositório oficial de material de aula, conforme descrito abaixo. O fórum do Moodle da disciplina será utilizado para intermediar a comunicação entre professor, ED e alunos. Para efeitos da avaliação da participação do aluno na disciplina, as suas estatísticas de utilização da ferramenta de EAD poderão ser levadas em consideração.
Organização do Atendimento a Alunos
Para o melhor atendimento aos alunos o ED oferecerá um horário de monitoria que será divulgado no fórum da disciplina. Este horário será único e fixo, devendo os alunos da disciplina se dirigirem primariamente ao ED neste horário para a solução de problemas referentes ao conteúdo da disciplina. O horário de monitoria será escolhido de tal forma que se situe em um ponto da semana onde o aproveitamento para os alunos seja máximo, possibilitando-lhes ter tempo de tentar resolver exercícios e trabalhos antes de procurar a monitoria. Fica a critério do ED atender a alunos fora deste horário quando solicitado, cabendo esta decisão ao julgamento do ED.
Observe-se que o INE/UFSC não possui mais recursos para pagamento de bolsa de monitoria para esta disciplina, sendo o horário de monitoria um serviço adicional oferecido aos alunos no sentido de promover melhores condições de aprendizado. Quem carrega o ônus do financiamento do horário de monitoria é o laboratório da UFSC ao qual o ED pertence, que aloca horas do tempo de trabalho em laboratório do ED para que este esteja à disposição dos alunos para atendimento.
É importante que o aluno tenha consciência disso e procure utilizar o horário de monitoria de forma objetiva e parcimoniosa. Sugerimos sempre comparecer à monitoria com dúvidas concretas e objetivas, somente depois de ter tentado resolver os exercícios e trabalhos, de forma a tornar mais eficiente e direcionado o trabalho do monitor que poderá direcionar seu suporte à resolução de dúvidas concretas.
Para todos os assuntos organizacionais da disciplina e todas as dúvidas sobre conteúdo que a monitoria não tenha sido capaz de sanar, o prof. da disciplina estará à disposição dos alunos. Para tanto deve ser encaminhado um e-mail solicitando horário ou marcando um horário pelo telefone 3721 9516 (Aldo) ou 3721 7546 (Jean), citando-se a disciplina e o assunto da consulta. Infelizmente, em função da quantidade bastante grande de compromissos do professor, não há atendimento a alunos sem horário previamente marcado.
Avaliação
Os critérios de avaliação da disciplina praticados na UFSC estão descritos em detalhes no Plano de Ensino de cada semestre. Neste link está o Plano de Ensino 2017.1. Esta seção fornece a filosofia geral de avaliação sugerida para a disciplina.
Estratégia e Critérios de Avaliação
A avaliação regular dos alunos se dará através de um conjunto de até 5 notas:
- 1 prova teórica individual, a ser realizada como e-Exam através do sistema do Moodle de Provas. Peso: 30% da nota semestral. Exemplos de questões para esta prova/simulações da prova podem ser realizadas no Moodle Grupos da UFSC, onde na seção de Cursos Livres existe o Curso Quizes de Computação Gráfica. No Moodle da Disciplina oferecemos todo semestre versões mais atualizadas de simulação da prova.
- 4 trabalhos práticos realizados em equipes de 2 alunos, valendo 70% da nota semestral. As equipes serão formadas no início do semestre e sua composição não se alterará mais. A avaliação dos trabalhos práticos realizar-se-á através de defesa.
A média da nota dos trabalhos práticos será composta pela média ponderada do 1º trabalho (40% da nota de trabalhos) e pelas duas melhores notas dentre os três trabalhos restantes (30% da nota de trabalhos cada um):
- Sistema Gráfico Interativo Básico: Implementação, usando a linguagem C++ e sem utilização de APIs gráficas, de um sistema gráfico interativo (SGI) que deverá possuir a capacidade da representação de modelos de arame em 3D e realizar todas as transformações (trabalho obrigatório). Este trabalho será realizado e avaliado na íntegra no ambiente do Moodle Virtual Programming Lab (VPL) no Moodle UFSC. Peso: 40% da nota de trabalhos.
- Pixel Shading: Um Projeto de Implementação de um Pixel Shader com base no Sistema Gráfico Interativo anterior, estendendo-o, ou então, a critério do professor, com base em um ambiente como Shader Maker, nesse caso empregando-o mais tarde no trabalho de Modelos Hierárquicos. Peso: 30% da nota de trabalhos.
- Renderização: Realização da modelagem realística de uma cena utilizando:
- a linguagem de descrição de cenas de um Raytracer de domínio público ou
- a API de uma game engine previamente indicada pelo professor,
com base em fotos de uma locação disponibilizadas pelo professor. Peso: 30% da nota de trabalhos.
- Animação: Um Projeto de Implementação envolvendo a implementação de uma animação através da técnica de Modelos Hierárquicos de um animal animado seguindo princípios de movimentação de animais dados em aula e, caso se tenha utilizado um ambiente de desenvolvimento de shaders, exportando empregando a iluminação ali programada. Poderá ser utilizada:
- a API OpenGL, com implementação em C++ ou, alternativamente, a API WebGL, com implementação em HTML5 e JavaScript ou
- a API de uma game engine previamente indicada pelo professor,
Peso: 30% da nota de trabalhos.
Os trabalhos de implementação do Sistema Gráfico Interativo Básico deverão obrigatoriamente satisfazer os seguintes requisitos:
- terem sido entregues no VPL
- terem sido desenvolvidos de forma a executarem no VPL
- terem sido desenvolvidos utilizando-se as linguagens de programação “C” ou C++
- serem baseados em código devidamente documentado e escrito de acordo com boas práticas de programação.
- o trabalho do Sistema Gráfico Interativo Básico, para fins de uniformidade de código, caso o aluno deseje utilizar um framework para GUI, deverá ser desenvolvido utilizando-se exclusivamente GTK++ como framework para desenvolvimento de interfaces, sendo aceita a modelagem de interface em Glade.
Havendo bom aproveitamento dos alunos (parâmetro: média das notas dos trabalhos da turma > 7,0), a Prova poderá não ser realizada, caso em que a nota dos trabalhos, respeitados os seus pesos individuais, perfazerá a nota semestral.
Para avaliação do SGI será analisada a existência das 10 funcionalidades exigidas como requisito durante o semestre e cada uma delas valerá 1 ponto.
A avaliação dos trabalhos práticos ocorrerá através de defsa, na qual participará obrigatoriamente todaa equipe envolvida no desenvolvimento dos trabalhos.
Para a avaliação do trabalho de modelagem realística de uma cena utilizando ou (a) a linguagem de descrição de cenas de um Raytracer de domínio público ou (b) uma game engine, serão utilizados os seguintes critérios, valendo até dois pontos cada um, dependendo do grau com que houverem sido atingidos:
- Uso da técnica de Radiância/Radiosidade
- Emprego de mais de uma fonte de luz
- Modelagem realista de pelo menos um objeto composto utilizando geometria construtiva ou uma técnica de modelagem hierárquica
- Uso de textura sobre objetos
- Emprego de transparência em superfícies envidraçadas e reflexos/espelhos
Para avaliação dos demais trabalhos práticos, os critérios de avaliação são os abaixo:
- Compreensão do Problema: entendeu o que era para fazer ? (2 pontos)
- Solução: soube encontrar uma solução ? (2 pontos)
- Conhecimento teórico: compreendeu as implicações teóricas da solução escolhida ? (2 pontos)
- Algoritmos: possui compreensão dos algoritmos empregados e sabe descrevê-los ? (2 pontos)
- Código: compreende a implementação, sabendo detalhar aspectos de seu funcionamento ou de falhas que estão ocorrendo ? (2 pontos)
A defesa dos trabalhos práticos, é considerada Prova Oral nos termos do Regimento da UFSC e o não comparecimento injustificado implica em conceito nulo nestes trabalhos.
Para efeitos de defesa, os trabalhos práticos dos alunos deverão estar disponíveis no Moodle da disciplina. Todas as defesas serão realizadas na presença de uma Testemunha e as perguntas e suas respostas protocoladas por esta testemunha. Esta testemunha será preferencialmente o estatiário de docência mas poderá ser algum aluno de pós-graduação ou professor do INE.
Para efeitos de defesa, os trabalhos práticos dos alunos deverão constar no VPL correspondente ao trabalho. Deverão compilar e executar neste ambiente.
Dado que a disciplina apresenta pelo menos 50% da carga horária consistindo de aulas práticas, conforme deliberação do Colegiado do Curso de Ciências da Computação de 18 de março de 2008, ela não prevê a realização de avaliação no final do semestre (recuperação) de que trata o parágrafo 2º do artigo 70 da Resolução 17/CUn/97.
Exemplos de Trabalhos
Sistema Gráfico Interativo com Modelos de Arame 3D (SGI)

Sistema Gráfico Interativo desenvolvido por um aluno da disciplina.
Shader estendendo o SGI
![]() |
![]() |
![]() |
Implementação de Shader estendendo o SGI realizada por alunos do semestre 2004.1 |
Renderização Realista de Cena utilizando Raytracer

Trabalho de Renderização Avançado do aluno Dalton S.R.F. (2005.1)
Renderização Realista de Cena utilizando Game Engine/Modelador 3D Avançado
Animação com Modelos Hierárquicos utilizando OpenGL
![]() |
![]() |
Implementação de Animações com Modelos Hierárquicos utilizando OpenGL realizada por alunos dos semestres 2001.1 e 2002.1 |
Animação com Modelos Hierárquicos utilizando Game Engine
Vamos trabalhar com Game Engines (Unity3D e Unreal Engine 4) para fazer jogos com caracteres animados. Para modelar as animações, vamo susar ferramentas de design gráfico adequadas (Blender) e modelos hierárquicos baseados em esqueletos – bone rigging (veja aqui em Blender, Unity3D e Unreal4).
Modelagem Esqueletal utilizando Ferramentas de Design Gráfico

Modelagem esqueletal de um Pokémon (Eevee) em Blender (alunos de 2016.2)
Criação de um Jogo com Personagem Animado através de Modelagem Esqueletal
![]() |
![]() |
![]() |
![]() |
Implementação de Animações com Modelos Hierárquicos utilizando modelagem em Blender e implementação na Game Engine Unity3D (semestre 2016.2) |
Toques para o Professor
O conteúdo deste material parece ser extremamente extenso e por demais abrangente para ser utilizado em sua totalidade em uma disciplina de um curso de graduação. A nossa experiência na utilização deste conteúdo na disciplina INE 5341/INE 5420 – Computação Gráfica da UFSC há mais de 18 anos é exatamente o contrário!
O material foi o fruto de muitos anos de ensino desta disciplina e ele reflete exatamente o que um grupo de alunos motivados e adequadamente orientados em uma disciplina de 4 horas semanais em um Curso de Ciências da Computação podem realizar com sucesso e sem problemas. O material, como já dissemos anteriormente, foi desenvolvido justamente para atender às necessidades de mateial didático da disciplina que viemos ministrando nos últimos anos todos os capítulos dele são ministrados em sua totalidade durante um semestre e para todos os capítulos os alunos implementam um programa-exemplo ou um exercício.
Este material é para a realização de um curso eminentemente prático, onde os alunos devem implementar tudo o que é visto no material, mas, se o professores preferir, pode distribuir os capítulos das Partes I e II sob a forma de seminários e focar o trabalho de implementação nas Partes III e IV. A nossa sugestão de didática é que se divida a turma em equipes de dois até no máximo três alunos e que se mantenham estas equipes inalteradas durante todo o semestre, para permitir que se crie na equipe uma cultura de desenvolvimento em grupo de projetos de software. Estes projetos vão ficando cada vez mais complexos à medida que o semestre avança. Para a realização de trabalhos de implementação sugerimos que se realizem três grandes projetos: a) um sistema gráfico interativo, implementando “no braço” todas as técnicas da Parte I e terminando com um sistema interativo capaz de posibilitar a visualização e navegação de mundos complexos constituídos por objetos 3D baseados em modelos de arame; b) a codificação de uma cena para renderização com um raytracer, utilizando temas de alguma novela de fantasia ou então baseada em dados colhidos através da fotografia e medição de objetos arquitetônicos do campus de sua universidade, como mostra a See Trabalho de Renderização de Modelagem 3D usando Raytracer POVRay do Prédio da FEPESE/UFSC por alunos da disciplina de Computação Gráfica e c) a implementação de uma animação de algum animal ou robô utilizando um modelo hierárquico utilizando código OpenGL e técnicas de modelos hierárquicos, integrando assim o material das Partes III e IV em um único trabalho. Como cada projeto destes, principalmente o da Parte I, exige que se implemente de forma incremental o programa que será o trabalho final, sugerimos que cada capítulo, uma vez definido o que se deseja obter como projeto para aquela Parte, seja passado como um pequeno exercício a ser entregue e que poderá ser usado para garantir que os alunos estejam em dia com a materia e para acompanhar o aprendizado dos mesmos.

Trabalho de Renderização de Modelagem 3D usando Raytracer POVRay do Prédio do CTC/UFSC por alunos da disciplina.
Agradecimentos
Este texto foi o fruto de vários anos de trabalho realizado em colaboração com toda a equipe do The Cyclops Project e com as várias turmas de INE 5341/INE 5420 que usufruíram deste material enquanto estava em fase de preparação e forneceram os beta-testers mais motivados possíveis para a nossa interpretação dos algoritmos clássicos da Computação Gráfica e de nossa metodologia de ensino, aqui refletida e todas estas pessoas merecem nossos agradecimentos.
Algumas pessoas se destacaram por contribuições especiais ao material aqui compilado, seja por terem ajudado a codificar ou a testar parte dele ou por terem como estagiários de docência do CPGCC da UFSC testado a didática do material. Estas pessoas queremos citar nominalmente: Brian Schmitz Tani, Daniel “Caju” Duarte Abdala, Herculano DeBiasi, John Anderson Freitas, Lidiane Pereira dos Reis, Mariana Kessler Bortoluzzi, Pedro de Paula Filho, Rafael Andrade, Rafael Simon Maia e Tiago Stein D´Agostini.