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:

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:

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();
}