Ano: 2003/2004 - Semestre: 1 Cursos: LESI e LMCCMétodo de Avaliação Esta disciplina será avaliada
por uma componente prática sob a forma de um trabalho. Os alunos devem
formar grupos de 2 ou 3 elementos e escolher um dos enunciados apresentados.
O trabalho prático será
avaliado de forma contínua, e portanto encontra-se dividido em três
etapas. Cada etapa corresponde a uma etapa de desenvolvimento do projecto. As
duas primeiras etapas são comuns a todos os projectos, sendo a terceira
da escolha do grupo dentro das opções aqui apresentadas. Para
cada etapa deve ser produzido um relatório escrito segundo as indicações
fornecidas para cada etapa. Para cada etapa existe uma data limite para a sua
entrega.
Note-se no entanto que não existe uma avaliação individual
por etapa, sendo a avaliação realizada sobre o trabalho no seu
todo, ou seja, no conjunto das três etapas. Para as duas primeiras etapas
é somente indicado se o resultado apresentado pelo grupo é suficiente
ou se terá de ser submetido de novo.
Nas duas primeiras etapas não
é necessário uma apresentação oral do trabalho sendo
somente necessário entregar o seguinte material:
- um relatório impresso e
encadernado;
- um CD contendo o relatório,
código fonte e executável.
O relatório das duas primeiras
etapas deve ser visto como um capítulo do relatório final.
A terceira etapa implica a entrega
do relatório e CD, tal como nas etapas anteriores, e uma discussão
oral com o grupo que deve envolver todas as etapas do trabalho. Na discussão
do trabalho devem comparecer todos os elementos do grupo para discutir o trabalho
oralmente.
Nas duas primeiras etapas admite-se
a utilização de excerptos de código disponível na
internet. A terceira fase deve obrigatóriamente ser da autoria exclusiva
do grupo. Nos relatórios, só no caso especifico das figuras é
que se permite que estas não sejam originais.
Caso uma etapa não seja entregue
até à data limite anunciada, o grupo pode entregar essa mesma
etapa até à data limite da etapa seguinte com uma penalização
de 15% sobre a nota final do trabalho. O mesmo se aplica caso uma etapa tenha
de ser submetido de novo. Após essa data, o trabalho não será
aceite correspondendo à não avaliação do grupo na
disciplina. A última fase não tem tolerância, devendo ser
entregue até à respectiva data limite.
A avaliação terá
em conta os seguintes critérios:
- Qualidade do trabalho
- Qualidade
do relatório escrito
- Empenho dos alunos na discussão
oral
A ordem dos factores apresentados
acima nãoimplica uma relação de importância entre
os mesmos. Os alunos de um mesmo grupo poderão ter notas diferenciadas
consonante o seu desempenho na discussão oral do trabalho.
Template para relatório da
etapa 1 (tempRel1.zip)
Template para relatório da
etapa 2 (tempRel2.zip)
Trabalhos Práticos Etapa 1 - Model Loader ::
Data Limite - 14 de Novembro
Desenvolver uma aplicação
que permita carregar e visualizar modelos gráficos a partir de ficheiros
de gráficos segundo o formato OBJ, MAX ou TrueSpace (um dos formatos,
à escolha do grupo). A aplicação deve ainda, através
da consola, fornecer informação sobre o número total de
vértices e polígonos dos modelos carregados.
A aplicação deve ser
invocada a partir da linha de comando, com um parâmetro que representa
o nome de um ficheiro de configuração. O ficheiro de configuração
determinará não só quais os ficheiros onde se encontram
os modelos gráficos a carregar, mas também a sua distribuição
espacial e escala.a aplicar aos modelos.
No ficheiro de configuração,
cada linha indica um ficheiro de gráficos e a respectiva translação, rotação
e escala. A ausência da informação relativa à translação
e escala implica utilizar uma translação (0,0,0), uma rotação de 0 graus, e uma escala
(1,1,1). O formato para cada linha é o seguinte:
nome do ficheiro tx ty tz ang rx ry rz ex ey
ez
por exemplo:
porsche.obj 10 10 0 45.0 0.0 1.0 0.0 0.1 0.1 0.1
o que corresponde a carregar o ficheiro
porsche.obj, e aplicar ao modelo a translação (10,10,0), uma rotação de 45 graus em torno do eixo dos Y e a escala
(0.1,0.1,0.1).
O código para leitura e interpretação
dos ficheiros pode ser obtido na Internet.
Etapa 2 - Octrees com View
Frustum Culling :: Data Limite - 19 de Dezembro
Esta etapa tem como ponto de partida
a aplicação desenvolvida na etapa anterior. Uma das técnicas
mais simples de optimização consiste em determinar à priori
quais os polígonos que são visiveis a partir da câmara,
ou seja que se encontram dentro do volume de visualização, e não
enviar polígonos não visiveis para a placa gráfica. Esta
técnica é geralmente utilizada em conjunto com octrees (arvores
octais que permitem uma fácil partição espacial) por forma
a permitir eliminar um número significativo de polígonos com um
número reduzido de testes. Desta forma as células da octree são
testadas recursivamente para determinar a sua visibilidade e só os polígonos
dentro de células visiveis são enviadas à placa gráfica.
Pretende-se assim que os modelos
previamente carregados sejam inseridos numa octree, ou árvore octal.
Durante a visualização, a aplicação deve realizar
view frustum culling.
Factor de valorização:
Utilização de Vertex Buffer Object.
Etapa 3 ::
Datas para Apresentação - 25/Fev a 1/Mar. (folha de inscrições na recepção do DI)
Cada grupo deve escolher uma das
seguintes versões. Esta etapa deve ser totalmente implementada pelo grupo
sem recorrer a código de terceiros. Todas as versões devem apresentar
no seu relatório testes significativos com dados conclusivos em relação
ao desempenho obtido.
Versão A - Occlusion
Culling NV_occlusion_query
Em ambientes virtuais complexos as
aplicações desenham frequentemente polígonos que, embora
contidos em cé�[37;1Hlulas da octree dentro do volume de visualização,
não contribuem para o resultado final da imagem. Por exemplo, se a câmara
se encontrar dentro de um quarto não há necessidade de desenhar
polígonos do outro lado das paredes, já que na imagem final estes
polígonos não são visiveis. Occlusion culling é
ecanismo que consiste em determinar quais os polígonos, ou células
da octree, que realmente são visíveis. Pretende-se adicionar à
aplicação desenvolvida nas etapas anteriores este mecanismo recorrendo
à extensão NV_occlusion_query da Nvidia.
Versão B - Occlusion
Culling PLP e cPLP com Item buffer
Os algoritmos PLP e cPLP (conservative
PLP) permitem realizar Occlusion Culling contemplando duas situações:
- performance garantida através
da limitação do número de polígonos a desenhar,
sem no entanto garantir que a imagem está correcta (PLP)
- qualidade de imagem garantida
realizando occlusion culling completo (cPLP).
Pretende-se determinar a performance
relativa destes dois algoritmos adicionando estes dois algoritmos ao resultado
das etapas anteriores.
Versão C - Sombras
com Luz Dinâmica e Mapas de Profundidade
A Iluminação fornecida
pelas placas gráficas é claramente insuficiente para obter resultados
satisfatórios de um ponto de vista de percepção do ambiente
virtual. Uma das insuficiências da Iluminação normal é
a ausência de sombras num vértice provocadas por outros polígonos.
Pretende-se portanto determinar se
um determinado vértice está ou não em sombra, recorrendo
a mapas de profundidade, e modificar as suas propriedades de cor respectivamente.
A aplicação deverá aplicar este processo a todos os vértices
do ambiente virtual dentro do volume de visualização e permitir
a visualização com e sem a utilização de sombras.
Versão D - Níveis
de Detalhe
A percepção de pormenor
dos objectos presentes no mundo é sem dúvida influenciada pela
distância a que os objectos se encontram da câmara. Um objecto distante
pode ser representado com um parte dos polígonos originais sem que isso
afecte a sua aparência. O número de polígonos/vértices
pode variar continua ou discretamente de acordo com a variação
da distância ao utilizador. Pretende-se nesta etapa adicionar esta funcionalidade
à aplicação desenvolvida nas etapas anteriores, de forma
a adicionar níveis de detalhe contínuos, de acordo com os algoritmos
de Hughes Hoppe, ou Michael Garland. A aplicação deve permitir
ainda o controle dos níveis de detalhe através de teclas.
Versão E - Impostores
Para ambientes virtuais constituídos
por objectos independentes (carros, árvores, estátuas, prédios,...)
é possível substituir os polígonos de um objecto por um
impostor, ou seja a imagem desse mesmo objecto. Para que este processo seja
de facto uma optimização é portanto necessário que
a ilusão 3D seja mantida sem que seja necessário recriar a imagem
do objecto em cada frame. Tal verifica-se quando esta técnica se aplica
a objectos longiquos. Pretende-se com esta etapa adicionar a hipotese de criar
impostores para objectos distantes e estudar a relação (alteração
no desempenho da aplicação) / (número de vértices
que o impostor substitui).
Etapa 3 (Época Especial)::
Datas para Apresentação - 13/Set a 16/Set.
Cada grupo deve escolher uma das
seguintes versões. Esta etapa deve ser totalmente implementada pelo grupo
sem recorrer a código de terceiros. Todas as versões devem apresentar
no seu relatório testes significativos com dados conclusivos em relação
ao desempenho obtido.
Versão A - Sombras com Volume Shadows
A Iluminação fornecida por omissão
pelas placas gráficas é claramente insuficiente para obter resultados
satisfatórios de um ponto de vista de percepção do ambiente
virtual. Uma das insuficiências dos modelos de iluminação locais é
a ausência de sombras num vértice provocadas por outros polígonos.
Pretende-se portanto determinar se
um determinado vértice está ou não em sombra, recorrendo
a "shadow volumes", e modificar as suas propriedades de cor respectivamente.
A aplicação deverá aplicar este processo a todos os vértices
do ambiente virtual dentro do volume de visualização e permitir
a visualização com e sem a utilização de sombras.
Versão B - Gerador de Terrenos com Perlin Noise
Pretende-se a implementaç�[55;1Hão de um gerador de terrenos utilizando "Perlin Noise". O
gerador deverá ter uma interface gráfica desenhada em GLUI, por forma a permitir a fácil manipulação dos parâmetros da geração.
A aplicação deverá ainda utilizar o biblioteca DevIL para permitir carregar e armazenar os terrenos sob a forma de mapa de altun A interactividade da aplicação deverá permitir ao utilizador "andar" e "voar" no terreno. A utilização de técnicas de aceleração como
Vertex Buffers é um factor de bonificação no trabalho.
|