Computação Gráfica I
2011/1
Trabalho II - Pescaria com Robô...
Professores Isabel Harb Manssour e Márcio Sarroglia Pinho
Objetivos
Consolidar o conhecimento sobre a representação
de objetos num espaço 3D e sua visualização através do desenvolvimento de um
jogo. Exercitar conceitos básicos de Computação Gráfica 3D, como visualização de
objetos hierárquicos, aplicação de transformações geométricas, detecção de
colisão e seleção de objetos.
Descrição
Este trabalho, que deverá ser feito em dupla ou individualmente,
consiste em desenvolver um jogo de pescaria em 3D usando OpenGL.
Neste jogo, o usuário deverá tentar
"descobrir" um objeto escondido debaixo de uma caixa de metal, sem
tampa, colocada sobre uma mesa(amarela no exemplo abaixo), junto com
outras caixas de metal idênticas(azuis no exemplo abaixo), porém
vazias. A tampa das caixas deve ficar sempre virada para baixo.
Deve haver um tempo limite para a tarefa.
Para descobrir em qual caixa está
escondido o objeto o usuário deverá usar um braço de robô articulado
para levantar a caixa. Ao levantar o objeto permanece onde está.
Para poder "pegar" a caixa, na ponta do braço existe um imã que atrai a caixa quando ambos estão muito próximos.
O robô deve ter uma forma semelhante a do exemplo da figura abaixo.
Regras a ser seguidas na elaboração do
jogo
- Neste robô a base é fixa e o Braço A permite que o usuário
movimente o braço para cima, para baixo, para esquerda e para direita.
- Os movimentos do braço devem ser limitados, de maneira que este não faça uma volta de 360 graus.
- Para se aproximar dos objetos, o Braço B possui um movimento
de translação em relação ao Braço A, mas não pode se "desconectar" do Braço A. Deve haver um limite para os movimentos do braço B.
- Deverão ser modelados três ou quatro objetos utilizando-se
em cada um, pelo menos 3 primitivas gráficas (cubo, esfera, cilindro,
etc). Por exemplo, mesinha composta por cilindros, casinha composta por
cubo e cone, etc.
- Cada vez que o jogo inicia apenas um destes objetos modelados ficará escondido embaixo de uma das caixas de metal.
- Tanto o objeto que será escondido, como a caixa sob a qual
este ficará escondido, deverão ser determinados aleatoriamente, isto é,
o programa deverá fazer a associação de um objeto a um cubinho de
maneira aleatória cada vez que o jogo inicia.
- Deve ser possível reiniciar o jogo a qualquer momento, sem ter que sair da aplicação.
- Caso o tempo disponível para encontrar o objeto acabe,
o jogo apresentar uma mensagem ao usuário perguntando se este deseja ou
não continuar a jogar. Caso afirmativo, o jogo deve reiniciar.
- No momento que o usuário consegue "pegar" uma caixa, ele
deve levantar o braço e a caixa de metal deve acompanhar o movimento do
braço, permtindo que o usário "largue"a caixa em outro local do cenário.
- Se depois que a caixa de metal for erguida, não aparecer o
objeto, o usuário deverá "descartá-la", pressionado uma tecla, para
tentar erguer outra caixa. Neste momento a caixa deve desaparecer do
cenário.
- Caso haja um objeto debaixo da caixa, o jogo irá reiniciar quando o usuário largar a caixa, pressionando uma tecla.
- Deverá ser feito um controle do tempo, pois o jogo termina
depois de um período de tempo especificado no programa.
- A contagem de
tempo deve ser suspensa depois que o objeto for encontrado.
Cálculo da Distância entre o Imã e as Caixas de Metal
Para realizar o cálculo da distância entre os obejtos é preciso calcular as coordenadas de um ponto em cada objeto.
Veja nesta página como calcular a coordenada de um objeto depois de ter aplicado neste as transformações geométricas.
Visualização da cena
O programa deve possuir
comandos de visualização 3D da cena que permitam ao usuário fazer
zoom-in e zoom-out e girar em X/Y , de maneira que ele possa visualizar
melhor a cena de vários "ângulos" e consiga encontrar o objeto mais
rapidamente.
Resumo
Resumindo, ao iniciar o jogo, o programa deve escolher aleatoriamente
um objeto, associá-lo, também de forma aleatória, a uma das caixas que
está sobre a mesa e a seguir exibir uma janela com a visualização 3D. O
usuário poderá movimentar o braço mecânico articulado para levantar as
caixas e tentar encontrar o objeto escondido.
Apresentação
Os trabalhos
deverão ser entregues pelo Moodel até antes do início da aula do dia da
entrega. Durante o horário da aula os trabalhos deverão ser
apresentados no laboratório. Durante a apresentação, TODOS os alunos
devem estar presente.
Avaliação
Os trabalhos serão avaliados pelo correto funcionamento do programa,
domínio dos conceitos empregados, técnicas de programação empregadas
(estrutura do CÓDIGO DOCUMENTADO, estruturas de dados) e organização da
apresentação. Todos os trabalhos deverão ser entregues e apresentados
na data marcada.
IMPORTANTE
- NÃO SERÃO ACEITOS TRABALHOS FORA DO PRAZO!!
- Trabalhos copiados resultarão em nota zero para todos os alunos envolvidos.
- Trabalhos feitos com a ajuda de terceiros resultarão em nota zero e são passíveis de processos legais.
- Os
alunos que não souberem responder prontamente as perguntas feitas pelos
professores sobre a implementação do trabalho também terão nota zero no
trabalho.
FIM.