para java -"de programação" -real -d -componentes -windows -pessoas

Propaganda
Instituto Superior de Engenharia de Lisboa
Área Departamental de Engenharia de Electrónica e Telecomunicações e de Computadores
Licenciatura em Engenharia Informática e de Computadores
Computação Gráfica
!
Segundo trabalho, Semestre de Inverno de 2013/2014
Neste trabalho os alunos desenvolverão competências relativas aos modelos de iluminação local (Phong)
e global usando o algoritmo de ray tracing.
Desenvolva uma aplicação 2D, CGRayTracing, em Java, para geração de imagens através do
algoritmo de ray tracing. As imagens geradas representam uma cena composta por elementos
geométricos elementares, tais como esferas, planos e caixas vistos a partir de um local. A figura
Figura 1 mostra exemplos de imagens geradas com este algoritmo.
!
!
!
Figura 1: Exemplo de imagens geradas com algoritmo de ray tracing
Na realização deste trabalho pretende-se que os alunos completem, ou rescrevam, uma aplicação
base, fornecida em anexo, de forma a ser capaz de gerar imagens com o algoritmo de iluminação
global de ray tracing. Na aplicação fornecida, uma cena é descrita através dos tipos apresentados no
diagrama UML estático de classes da figura Figura 2. Durante a realização do trabalho é expectável
que este modelo de dados possa ser alterado.
!
Figura 2: Diagrama UML estático de classes de uma cena
!
CG/1314i – Carlos Guedes
! /!2
1
Computação Gráfica
Segundo trabalho
Em anexo é ainda disponibilizado um conjunto de ficheiros com cenas, codificados em JSON (http://
www.json.org). A aplicação base inclui ainda a implementação JSON para Java disponível em http://
www.json.org/java/, que gera uma representação em memória do conteúdo do documento JSON. O
tipo JsonSceneLoader usa essa representação para criar um objecto do tipo Scene com a informação
presente no ficheiro.
A aplicação base fornecida implementa as seguintes funcionalidades:
!
•
Leitura da cena a partir de um ficheiro de texto (resource) em formato JSON
•
Geração dos raios primários, relativos ao plano de projecção
Pretende-se que implemente (a ordem é meramente indicativa):
•
Intersecção raio/esfera e raio/plano
•
Uso do modelo de iluminação local de Phong para cálculo de cor na intersecção raio/esfera
•
Componente ambiente
•
Componente difusa
•
Componente especular
•
Zonas de sombra
•
Suporte para várias fontes de luz (apenas luzes pontuais)
•
Reflexão especular e controlo de recursividade
•
Uso de caixas (alinhadas com os eixos)
•
Leitura do ficheiro (05-cornell wire box.json) e intersecção raio/caixa
!
Ligações úteis no desenvolvimento do trabalho:
Sobre o algoritmo de RayTrace
•
http://www.siggraph.org/education/materials/HyperGraph/raytrace/rtrace0.htm
•
http://www.siggraph.org/education/materials/HyperGraph/raytrace/rt_java/
raytrace.html
Intersecção entre raio e formas geométricas
•
http://www.scratchapixel.com/lessons/3d-basic-lessons/lesson-7-intersectingsimple-shapes/
•
!
!
http://www.siggraph.org/education/materials/HyperGraph/raytrace/rtinter3.htm
A avaliação do trabalho tem em conta todos os aspectos do software desenvolvido, nomeadamente:
cumprimento de requisitos, estruturação, qualidade e documentação do código produzido.
A entrega deste trabalho consiste na entrega de um ZIP com o código desenvolvido e por um
documento (sem capa, índice, resumo, etc..) com considerações sobre o trabalho desenvolvido. Este
documento deve ter o máximo de duas folhas. O documento deve incluir um cabeçalho, tal como este
enunciado, com identificação do grupo e respectivos membros.
Bom trabalho
CG/1314i – Carlos Guedes
! /!2
2
Download