ATENÇÃO: a primeira parte deste
segundo trabalho é o apontamento de obejtos, que deveria
ter sido entregue há duas semanas atrás...... Ainda estou
aceitando a entrega...
OPÇÃO I - Mesa com Realidade Aumentada
Objetivo
Construir um programa que gerencie uma mesa com características
de Realidade Aumentada. A mesa deverá ter obejtos reais que poderão
interagir com objetos virtuais.
Por "interagir" entenda-se que estes objetos reais
poderão tanto bloquear a visão de obejtos virtuais quanto
serem bloqueados por estes objetos dependendo de suas posições
relativas.
Especificação
O programa deverá gerenciar pelo menos os seguintes item:
-
Dois objetos virtuais controlados por marcadores reais: Estes objetos
virtuais poderão ser movidos pelo usuário através
de marcadores impressos em pedaços de papel. Este objeos não
devem ter um correspondente real, apenas o marcardor.
-
Dois objetos reais fixos e registrados: Estes objetos reais
poderão bloquear a visão de obejtos virtuais ou reais que
estiverm no ambiente. É necessário criar um "fantasma" para
cada um destes objetos. Este objetos não devem ter marcadores
presos em sua superfície;
-
Um objeto móvel registrado: Este objeto real poderá
bloquear a visão de objetos virtuais ou reais que estiverm no ambiente.
É necessário criar um "fantasma" para este objeto. Este objetos
devem
ter marcadores presos em sua superfície. O usuário deve poder
pegar este obejto e movê-lo para qualquer posição da
mesa. O movimento não deve ficar restrito à superfície
da mesa, ou seja, este objeto pode ser levantado pelo usuário;
-
Um objeto virtual autônomo: Este objeto deve se deslocar sobre
a mesa de forma autônoma;
-
Dois objetos virtuais fixos: Este objetos devem exibir informações
sobre dois objetos reais da mesa.
Ferramentas
Deverá ser usada a biblioteca ARTOOLKIT: http://www.hitl.washington.edu/research/shared_space/download/
OPÇÃO II - Gerenciador de Exibição em Múltiplas
Telas
Objetivo
Construir um programa que gerencie a exibição
de um cenário em várias telas.
Especificação
Este programa deverá desenvolver um servidor responsável
pela sincronização de até 10 clientes.
Os clientes deverão gerar a imagem correspondente à
sua tela, enviar uma mensagem avisando servidor e exibir o cenário
ao receberem o comando de resposta do servidor.
Para a divisão do cenário em várias telas, deverá
ser usado o exemplo apresentado em aula: http://www.inf.pucrs.br/~pinho/CG/Aulas/OpenGL/MultipleScreens/MultipleScreens.html.
Um dos clientes deverá ser o responsável pela interação
no ambiente virtual. Esta interação deverá permitir:
-
Zoom/Unzoom;
-
Deslocamento do Observador em X, Y e Z;
-
Giroda Cabeça do Observador ao redor do eixo vertical (Y).
A configuração de cada cliente deverá ser feita na
"linha de comando" de ativação do programa.
Programa deverá conter um
Exemplo de Algoritmo de Sincronização
void Render()
{
// Inicio da rotina que redesenha as imagens em OpenGL
glClear(.......);
................
// Fim dos comandos OpenGL
SendMSG(ID, "ACABOU"); // Avisa o servidor
que o desenho terminou
do
{
if (!HaMSG())
// verifica se há MSG do Servidor
continue;
ReceiveMSG(&msg);
// Le uma MSG do Servidor
if (msg == OK)
break;
if (msg == ERRO)
.........
} while(1);
// Exibe as imagens na tela
glutSwapBuffers();
}