Parte 1 Cena Simples Interativa com Câmara Fixa

Documentos relacionados
Parte 1 Cena Simples Interativa com Câmara Fixa

Matriz de transformação

CG 2015/2016 Primeiro Teste LEIC Alameda/Taguspark. Primeiro Teste

Iluminação. Aula 6. Sistemas Gráficos e Interactivos Instituto Superior de Engenharia do Porto. Paulo Gandra de Sousa

Sist. Coordenadas Câmera (SCC)

CG 2013/2014 Primeiro Teste LEIC Alameda/Taguspark

modelos rquicos Aula 5 Sistemas Gráficos e Interactivos Instituto Superior de Engenharia do Porto Paulo Gandra de Sousa

Computação Gráfica - OpenGl 02

Sumário. Introdução Câmera sintética Window-to-Viewport Exercício. 29-May-13 Leandro Tonietto!2

Computação Gráfica. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro. Aula 6. Projeções

CG com OpenGL. Paulo Gandra de Sousa Sistemas Gráficos e Interactivos Instituto Superior de Engenharia do Porto

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Alameda / Taguspark. Terceiro Teste 19 de Maio de 2012

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Taguspark / Alameda. Primeiro Teste 17 de Março de 2012

INF Fundamentos de Computação Gráfica /1

INF1339 Computação Gráfica Tridimensional. Waldemar Celes. 2 de Agosto de 2010

Projeções e Transformações em 3D

Câmara Virtual. Licenciatura em Engenharia Informática e de Computadores Computação Gráfica. Edward Angel, Cap. 5 Apontamentos CG

No enunciado existem duas páginas para rascunho devidamente identificadas. Estas não serão consideradas na avaliação.

Proposta de Estágio Ano letivo 2011 / 2012 Tema: myplace - participação no desenvolvimento de plataforma de customização de espaços em 3D

Desenho de uma matriz de retângulos Serve de base para o exercício das cores

CG 2013/2014 Segundo Teste LEIC Alameda/Taguspark

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Alameda/Taguspark. 1º Exame 29 Junho de 2010

SCC0504 Programação Orientada a Objetos Prof. Luiz Eduardo Virgilio da Silva / Estevam Arantes (Monitor) Projeto

Computação Gráfica - 04

2º Exame de Animação e Visualização Tridimensional

LISTA DE ATIVIDADES Semestre Letivo 2018/1

Câmara Virtual Simples

Ficha de trabalho 5 AMPLIAÇÃO

Primeira Prova 25 de abril de DURAÇÃO DA PROVA: 90m

CG 2015/2016 Segundo Teste LEIC Alameda/Taguspark. Segundo Teste. 18 de Novembro de 2015

Visualização. - Aula 4 -

Capítulo 3 Primeiros Passos em OpenGL Função Desenha Função Teclado Função Inicializa Programa Principal...

Aula 5 TECNOLOGIA EM JOGOS DIGITAIS PROGRAMACAO E INTEGRACAO DE JOGOS I. Marcelo Henrique dos Santos

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MATO GROSSO CAMPUS AVANÇADO TANGARÁ DA SERRA

Visualização Dinâmica de Cenas Híbridas

Where All Leaves Fall

Lista 2: Cinemática em uma Dimensão

Sistemas Gráficos e Modelos

COMPUTAÇÃO GRÁFICA E INTERFACES

Introdução a OpenGL. Renato Rodrigues Oliveira da Silva Danilo Medeiros Eler

Introdução Prática à Programação em OpenGL

Aula 4 TECNOLOGIA EM JOGOS DIGITAIS PROGRAMACAO E INTEGRACAO DE JOGOS I. Marcelo Henrique dos Santos

SCC0504 Programação Orientada a Objetos Projeto

Iluminação. Módulo 10. Sistemas Gráficos e Interação. Filipe Pacheco SGRAI 2017/18 DEI-ISEP 186. Instituto Superior de Engenharia do Porto

Universidade de Aveiro Departamento de Electrónica, Telecomunicações e Informática. Visualização 3D

Computação Gráfica OpenGl 03

MJ3I- PA - AMBIENTE VIRTUAL 3D PARA VISUALIZAÇÃO DE BRAÇOS ARTICULADOS NO IOS

Introdução à Programação C

COMPUTAÇÃO GRÁFICA - PROF. MSC. LEANDRO TONIETTO SELEÇÃO DE OBJETOS EM OPENGL - SELECT BUFFER

Universidade de Aveiro Departamento de Electrónica, Telecomunicações e Informática. Visualização 3D

Protótipo tipo de um ambiente virtual distribuído

Computação Gráfica OpenGL 05 3D

Computação Gráfica. Agostinho Brito. Departamento de Engenharia da Computação e Automação Universidade Federal do Rio Grande do Norte

Computação II Orientação a Objetos

Segunda Prova 20 de junho de DURAÇÃO DA PROVA: 90m

Transformações (Cap 4.3, 4.4 e 4.6 a 4.10)

Pipeline de Visualização Câmara Virtual

Modelos Geométricos Transformações

Trabalho n.º 1: FEUP Manic Miner - DJCO

LISTA DE ATIVIDADES Semestre Letivo 2018/1

Computação II Orientação a Objetos

Computação II Orientação a Objetos

Interactividade Básica com GLUT e Primitivas Geométricas

Instituto Tecnológico de Aeronáutica. Prof. Carlos Henrique Q. Forster Sala 121 IEC. Luiz Felipe Simões Hoffmann

FICHA TÉCNICA DO CURSO

Computação Gráfica. Desempenho

Licenciatura em Engenharia Informática e de Computadores Computação Gráfica. Animação e Colisões

Visibilidade. Licenciatura em Engenharia Informática e de Computadores Computação Gráfica. Edward Angel, Cap. 7 Apontamentos CG

Mini relatório Aplicação 3D. Projecto ivlab Data Versão 2.0. Participantes Catarina Santiago Gabriel Silva Ricardo Cardoso

Curso online de Fundamentos em Android. Plano de Estudo

Enquadramento e Conceitos Fundamentais

Manual do KSnakeDuel. Fabian Dal Santo Stas Verberkt Revisão: Lauri Watts Tradução: José Pires

ÍNDICE Montagem de conjunto... 2 Estrutura de produto... 3 Estratégias para criação da estrutura do produto...4 Quando devemos utilizar bottom-up

Transformações geométricas

Computação Gráfica LEI / LCC Departamento de Informática Universidade do Minho. Desempenho. Display Lists e Vertex Bufer Objects

António Costa. Paulo Roma Cavalcanti

Engenharia da Programação

2º Exame de Animação e Visualização Tridimensional

Manual de Utilização Interferómetro de Michelson-Morley

Fundamentos Matemá3cos para Computação Gráfica

USANDO O MODELLUS. Aula 3

Exame de 2ª Época Computação Gráfica

Seleção & feedback. Módulo 12. Sistemas Gráficos e Interação. Filipe Pacheco SGRAI 2017/18 DEI-ISEP 333. Instituto Superior de Engenharia do Porto

OpenGL 3.* INF Rendering em Tempo Real. Waldemar Celes Departamento de Informática, PUC-Rio

Fís. Fís. Monitor: João Carlos

VII Desenvolvimento e Toolkits. VII.2-Model View Controller

Computação Gráfica - 13

Animação comportamental. Controlo de grupos de objectos. Sistemas de partículas Comportamento de grupos (Flocks, Herds, Schools) Agentes autónomos

Computação II (MAB 225)

Fundamentos da Computação Gráfica

Tecnologias de Jogos de Vídeo

1.5 PROGRAMAÇÃO DE JOGOS EM AMBIENTE DE REA LIDADE AUMENTADA AMBIENTES INTEGRADOS DE DESENVOLVIMENTO DE JOGOS 19

Construct 2. Plataforma. Prof. Fellipe Aleixo

Cap. 4: Janelas, Visores & Recorte Gráfico

KODU. Como desenvolver o raciocínio lógico dos alunos

Estrutura de um programa gráfico

Ferramentas Web, Web 2.0 e Software Livre em EVT

OpenGL, GLU e GLUT. GLUT (OpenGL Utility Toolkit) OpenGL. Linguagem. OpenGL. Esqueleto de um programa em PyOpenGL

Modelos Hierárquicos. Módulo 9. Sistemas Gráficos e Interação. Filipe Pacheco SGRAI 2017/18 DEI-ISEP 154. Instituto Superior de Engenharia do Porto

Transcrição:

Computação Gráfica 205/6 Parte Cena Simples Interativa com Câmara Fixa Breve Introdução ao Tema O jogo Micro Machines foi o primeiro de uma série de jogos baseados nos famosos carros de brinquedo com o mesmo nome. Este jogo foi lançado originalmente em 99 tendo, até à última versão em 2006, sido lançadas versões para um vasto conjunto de plataformas. O jogador controla um carro de brincar em ambientes pouco convencionais, tal como uma cozinha ou um jardim. O carro tem de percorrer uma pista, evitando os mais diversos obstáculos. Ao embater ou passar por cima de obstáculos o carro perde velocidade ou torna-se mais difícil de controlar. É possível assistir a cerca de sete minutos de gameplay no canal NESguide do Youtube. Nos últimos anos têm aparecido inúmeras versões deste jogo, incluindo algumas reimplementações com o grafismo original, ilustrado na figura anterior, juntamente com a capa do jogo. Algumas destas versões podem ser jogadas online 2. https://www.youtube.com/watch?v=bmpzznee74i 2 http://www.classicgamesarcade.com/game/268/micro-machines-drivingracing-game.html

Trabalho a realizar O objectivo dos trabalhos de laboratório de Computação Gráfica deste ano é recriar este clássico numa versão 3D, recorrendo a C++ e OpenGL. A ideia é manter a jogabilidade original alterando a perspectiva gráfica para que os vários elementos do jogo tenham um aspecto 3D. Podem ver um exemplo para inspiração na figura seguinte. O trabalho está dividido em quatro partes que serão avaliadas individualmente ao longo do semestre. Em cada uma destas avaliações existem objectivos e tarefas específicas para que possam explorar as várias componentes do programa de Computação Gráfica. O resto deste documento refere-se à primeira parte do trabalho. As outras três partes serão publicadas ao longo do semestre. 2

Objectivos Os objectivos da primeira parte dos trabalhos de laboratório são compreender e implementar a arquitectura de uma aplicação gráfica interativa e explorar os conceitos básicos de modelação. A avaliação da primeira parte do trabalho será realizada na semana de 2 a 6 de Outubro e corresponde a 6 valores da nota do laboratório. A realização deste trabalho tem um esforço estimado de 4 horas por elemento do grupo, distribuído por três semanas. Não esquecer de preencher e submeter a timesheet correspondente com as horas despendidas pelo grupo na realização deste trabalho. Tarefas As tarefas para a primeira parte são:. Modelar a mesa usando um cubo e modelar a estrada definindo as suas bermas usando pequenos torus (toros, em Português), simulando cheerios. Definir uma câmara fixa com uma vista de topo sobre a cena utilizando uma projecção ortogonal (semelhante à vista 2D do jogo original). Neste primeiro laboratório, toda a pista deve ficar visível. [,5 valores] 2. Modelar o carro, três laranjas e cinco pacotes de manteiga, recorrendo a objectos geométricos tridimensionais simples (cubos, esferas e torus). O carro deve ser composto por mais do que um objecto geométrico, num mínimo de cinco objectos. A representação destes objectos deve alternar entre modelo de arames e sólida usando a tecla A. [2,5 valores] 3. Controlar o movimento do carro com o teclado utilizando as teclas das setas para virar para esquerda e direita, assim com o para acelerar para a frente ou para trás. O carro não deve atingir a velocidade máxima imediatamente após pressionar a tecla ou parar quando se larga. O carro deve ter um movimento uniformemente variado, considerando a velocidade e a aceleração escalares, sendo a direcção do movimento dada por um vector tridimensional. [2,0 valores] 3

Informação Importante A implementação do trabalho desenvolvido nos laboratórios de computação gráfica deve usar o ciclo de animação (update/display cycle). Este padrão de desenho, usado nas aplicações de computação gráfica interactiva, está ilustrado na figura abaixo e separa o desenho da cena no ecrã da actualização do estado do jogo em duas fases distintas. Na fase de display são cumpridos três passos base: limpar o buffer; desenhar a cena e forçar o processamento dos comandos. Na fase de update todos os objectos do jogo são actualizados de acordo com a física inerente. Para este trabalho pode-se aplicar apenas a equação do movimento linear uniforme. É ainda nesta fase que se processa a detecção de colisões e implementação dos respectivos comportamentos. Para além de dos acontecimentos de update e display existem mais um conjunto de acontecimentos, tais como teclas pressionadas ou soltas, temporizadores e redimensionamento,. Estes devem ser tratados pelas respectivas funções de callback de forma independente. Por fim, sublinhamos que deve ser aplicada uma programação orientada a objectos, com a estrutura de classes apresentada nos diagramas UML em anexo. Siga sempre boas práticas de programação que permitam a reutilização do código em entregas posteriores e facilitem a escalabilidade futura. 4

Sugestões. Desenhar os objectos em papel antes de escrever o código OpenGL ajuda muito a perceber que primitivas e transformações devem ser aplicadas. No anexo B pode encontrar um exemplo de um esboço em papel para um objecto (não usar este esboço). 2. As rodas do carro podem ser criadas recorrendo a torus. 3. Para esta avaliação não existem colisões entre os objectos nem as laranjas se movem. Estes serão objectivos de uma futura entrega. 4. Algumas das funções a estudar: - glviewport, glmatrixmode, glortho - gltranslate, glrotate, glscale - glpushmatrix, glpopmatrix - glutsolidcube, glutsolidsphere, glutsolidtorus - glutkeyboardfunc - gluttimerfunc - glutget(glut_elapsed_time) 5

Anexo A Diagramas UML A. Gestor de Jogo e classes associadas Vector3 #_x : double #_y : double #_z : double +Vector3() +Vector3(in x : double, in y : double, in z : double) +~Vector3() +getx() : double +gety() : double +getz() : double +set(in x : double, in y : double, in z : double) +operator=(in vec : const Vector3 &) : Vector3 +operator(in num : double) : Vector3 +operator+(in vec : const Vector3 &) : Vector3 +operator-(in vec : const Vector3 &) : Vector3 -_position Entity +Entity() +~Entity() +getpostion() : Vector3 +setposition(in x : double, in y : double, in z : double) : Vector3 +setposition(in p : const Vector3 &) : Vector3 Camera #_near : double #_far : double +Camera(in near : double, in far : double) +~Camera() +computeprojectionmatrix() +computevisualizationmatrix() GameObject +GameObject() +~GameObject() +update(in delta_t : double) LightSource -_ambient [4] : double -_diffuse [4] : double -_specular [4] : double -_cut_off : double -_exponent : double -_num : GLenum -_state : bool +LightSource(in number : GLenum) +~LightSource() +getstate() : bool +setstate(in state : bool) : bool +getnum() : GLenum +setposition(in position : const Vector4 &) +setdirection(in direction : const Vector3 &) +setcutoff(in cut_off : double) +setexponent(in exponent : double) +setambient(in ambient : const Vector4 &) +setdiffuse(in diffuse : const Vector4 &) +setspecular(in specular : const Vector4 &) -_ -_cameras -_light_sources GameManager +GameManager() +~GameManager() +display() +reshape(in w : GLsizei, in h : GLsizei) +keypressed() +ontimer() +idle() +init() -_game_objects 6

A2. Objecto do Jogo e classes associadas Entity +Entity() +~Entity() +getpostion() : Vector3 +setposition(in x : double, in y : double, in z : double) : Vector3 +setposition(in p : const Vector3 &) : Vector3 -_position GameObject +GameObject() +~GameObject() +update(in delta_t : double) Vector3 #_x : double #_y : double #_z : double +Vector3() +Vector3(in x : double, in y : double, in z : double) +~Vector3() +getx() : double +gety() : double +getz() : double +set(in x : double, in y : double, in z : double) +operator=(in vec : const Vector3 &) : Vector3 +operator(in num : double) : Vector3 +operator+(in vec : const Vector3 &) : Vector3 +operator-(in vec : const Vector3 &) : Vector3 StaticObject DynamicObject -_speed +StaticObject() +~StaticObject() +DynamicObject() +~DynamicObject() +update(in delta_t : double) +setspeed(in speed : const Vector3 &) +setspeed(in x : double, in y : double, in z : double) +getspeed() : Vector3 River Roadside +River() +~River() +Roadside() +~Roadside() Car Obstacle +Car() +~Car() +Obstacle() +~Obstacle() Butter Orange +Butter() +~Butter() +Orange() +~Orange() 7

A3. Câmara Virtual e classes associadas Entity +Entity() +~Entity() +getpostion() : Vector3 +setposition(in x : double, in y : double, in z : double) : Vector3 +setposition(in p : const Vector3 &) : Vector3 -_position Vector3 #_x : double #_y : double #_z : double +Vector3() +Vector3(in x : double, in y : double, in z : double) +~Vector3() +getx() : double +gety() : double +getz() : double +set(in x : double, in y : double, in z : double) +operator=(in vec : const Vector3 &) : Vector3 +operator(in num : double) : Vector3 +operator+(in vec : const Vector3 &) : Vector3 +operator-(in vec : const Vector3 &) : Vector3 GameManager +GameManager() +~GameManager() +display() +reshape(in w : GLsizei, in h : GLsizei) +keypressed() +ontimer() +idle() +init() -_cameras Camera #_near : double #_far : double +Camera(in near : double, in far : double) +~Camera() +computeprojectionmatrix() +computevisualizationmatrix() -_up -_center -_at PerspectiveCamera -_fovy : double -_aspect : double +computeprojectionmatrix() +computevisualizationmatrix() +PerspectiveCamera(in fovy : double, in aspect : double, in znear : double, in zfar : double) +~PerspectiveCamera() OrthogonalCamera -_left : double -_right : double -_bottom : double -_top : double +computeprojectionmatrix() +computevisualizationmatrix() +OrthogonalCamera(in left : double, in right : double, in bottom : double, in top : double, in near : double, in far : double) +~OrthogonalCamera() 8

A4. Fonte de Luz Vector3 -_direction -_position #_x : double #_y : double #_z : double +Vector3() +Vector3(in x : double, in y : double, in z : double) +~Vector3() +getx() : double +gety() : double +getz() : double +set(in x : double, in y : double, in z : double) +operator=(in vec : const Vector3 &) : Vector3 +operator(in num : double) : Vector3 +operator+(in vec : const Vector3 &) : Vector3 +operator-(in vec : const Vector3 &) : Vector3 LightSource -_ambient [4] : double -_diffuse [4] : double -_specular [4] : double -_cut_off : double -_exponent : double -_num : GLenum -_state : bool +LightSource(in number : GLenum) +~LightSource() +getstate() : bool +setstate(in state : bool) : bool +getnum() : GLenum +setposition(in position : const Vector4 &) +setdirection(in direction : const Vector3 &) +setcutoff(in cut_off : double) +setexponent(in exponent : double) +setambient(in ambient : const Vector4 &) +setdiffuse(in diffuse : const Vector4 &) +setspecular(in specular : const Vector4 &) -_light_sources GameManager +GameManager() +~GameManager() +display() +reshape(in w : GLsizei, in h : GLsizei) +keypressed() +ontimer() +idle() +init() 9

Anexo B Esboço de Objecto Importante: Não usar este esboço exemplificativo como base dos modelos a desenvolver no trabalho de laboratório. Os objectos apresentados devem ser desenhados pelos alunos. 0