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 Terceiro trabalho, Semestre de Inverno de 2014/2015 Neste trabalho os alunos desenvolverão competências relativas ao modelo de iluminação local de 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, e uma ou mais fontes de luz. 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 reescrevam, 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 esta estrutura de classes sofra alterações. Figura 2: Diagrama UML estático de classes de uma cena CG/1415i – Carlos Guedes 1/3 Computação Gráfica Terceiro trabalho Em anexo é também disponibilizado um conjunto de ficheiros com cenas (e.g. cenas usadas para gerar as imagens da figura Figura 1, 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, assim como um tipo (JsonSceneLoader) que 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 em formato JSON • Geração dos raios primários, relativos ao plano de projecção • Cálculo de intersecção raio/esfera • Apresenta no plano de projecção a cor amarela caso tenha intersecção, e preto caso contrário Pretende-se que implemente as seguintes funcionalidades. Em parênteses está indicado o nome do ficheiro de cena que devem criar para demonstrar a funcionalidade indicada. 1. (scene-01-ambient-diffuse.json) Uso do modelo de iluminação local de Phong para cálculo de cor na intersecção raio/esfera, com a componente ambiente e difusa, usando fonte de luz pontual 2. (scene-02-specular.json) Uso da componente especular do modelo de iluminação local de Phong 3. (scene-03-shadows.json) Zonas de sombra 4. (scene-04-planes.json) Uso de planos, com leitura do ficheiro e intersecção raio/plano 5. (scene-05-reflections.json) Reflecção especular, por exemplo num dos planos, com controlo de recursividade 6. (scene-06-lights.json) Suporte para várias fontes de luz (pontuais) 7. (scene-07-boxes.json) Uso de caixas, alinhadas com os eixos de coordenadas, e intersecção raio/caixa 8. (scene-08-directional-and-spotlight.json) Suporte para vários tipos de luz, adicionando luzes direcionais e spotlight CG/1415i – Carlos Guedes 2/3 Computação Gráfica Terceiro trabalho 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-­‐intersecting-­‐simple-­‐ 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 acompanhado de algumas imagens exemplificativas do trabalho desenvolvido. Este documento deve ter o máximo de duas folhas (pode ter mais imagens em anexo). O documento deve incluir um cabeçalho, tal como o deste enunciado, com identificação do grupo e respectivos membros. Bom trabalho CG/1415i – Carlos Guedes 3/3