Estava querendo desenvolver uma engine de RayTracing em Java desde o momento que um amigo me indicou um excelente tutorial do FlipCode. Esse domingo, tomei coragem e resolvi implementar.
Cheguei apenas a segunda parte do tutorial, pretendo desenvolver o resto no futuro.
A boa notícia é que em Java ficou muitíssimo mais rápido do que o original em C++.
Deu erro aqui no ubuntu mas irei testar de casa o render, pela foto já estou impressionado.
ViniGodoy
É uma aplicação Java 7, Marky.
Danielrricci
Opa Vini! Este tutorial está aqui no guj ou no pontov?
ViniGodoy
Não tem tutorial, não. Pelo menos ainda. Somente esse que indiquei, que não é meu.
Quero me aprofundar na técnica antes de escrever. Incluir translucidez, texturas, otimizações, efeitos de lentes, etc.
Eu falo sobre raytracing nas minhas aulas de cg. E fazia algum tempo que queria escrever um em Java.
ViniGodoy
Além de uma grande refatoração no código feita na semana passada, adicionei a refração da luz aos materiais do ray tracer, o que permite a construção de materiais translúcidos:
Muito legal o projeto Viny.
Estou fazendo meu TCC para visualização de arquivos DICOM no Android, e no final do projeto umas das metas é implementar ray tracing. Você acha que teria algum problema de performance usar sua lib no Android?
ViniGodoy
j0nny:
Muito legal o projeto Viny.
Estou fazendo meu TCC para visualização de arquivos DICOM no Android, e no final do projeto umas das metas é implementar ray tracing. Você acha que teria algum problema de performance usar sua lib no Android?
Com certeza. RayTracing não é uma técnica de real time (a menos claro, que usassemos o OpenCL efetivamente, o que não faço em minha implementação). Mesmo sem a transparência, vai ficar pesadinho. Mas vc pode baixar os códigos e testar.
Você já tem o leitor DICOM para Java? Estou trabalhando atualmente com imageamento médico, gostaria de saber mais sobre seu projeto. Mas hoje faço em C++ mesmo, usando QT. Numa dessas te ajudo com seu projeto.
j0nny
ViniGodoy:
j0nny:
Muito legal o projeto Viny.
Estou fazendo meu TCC para visualização de arquivos DICOM no Android, e no final do projeto umas das metas é implementar ray tracing. Você acha que teria algum problema de performance usar sua lib no Android?
Com certeza. RayTracing não é uma técnica de real time. Mesmo sem a transparência, vai ficar pesadinho. Mas vc pode baixar os códigos e testar.
Você já tem o leitor DICOM para Java? Estou trabalhando atualmente com imageamento médico, gostaria de saber mais sobre seu projeto. Mas hoje faço em C++ mesmo, usando QT.
Então, como é para Android, estou usando Java mesmo. Por enquanto estou usando a lib dcm4che (http://www.dcm4che.org/), já consegui os dados do paciente e tal, mas estou com bastante dificuldades em extraitr os dados das imagens em si para fazer a visualização.
ViniGodoy
j0nny:
Então, como é para Android, estou usando Java mesmo. Por enquanto estou usando a lib dcm4che (http://www.dcm4che.org/), já consegui os dados do paciente e tal, mas estou com bastante dificuldades em extraitr os dados das imagens em si para fazer a visualização.
Eu vou usar a DICOM sdl, mas para ser sincero, comecei o projeto na semana passada e ainda estou tomando pé. https://code.google.com/p/dicomsdl/
j0nny
ViniGodoy:
j0nny:
Então, como é para Android, estou usando Java mesmo. Por enquanto estou usando a lib dcm4che (http://www.dcm4che.org/), já consegui os dados do paciente e tal, mas estou com bastante dificuldades em extraitr os dados das imagens em si para fazer a visualização.
Eu vou usar a DICOM sdl, mas para ser sincero, comecei o projeto na semana passada e ainda estou tomando pé. https://code.google.com/p/dicomsdl/
Também comecei faz duas semanas, e travei nessa fase de leitar dos pixels e preciso exibir usando OpenGL.
j0nny
j0nny:
ViniGodoy:
j0nny:
Então, como é para Android, estou usando Java mesmo. Por enquanto estou usando a lib dcm4che (http://www.dcm4che.org/), já consegui os dados do paciente e tal, mas estou com bastante dificuldades em extraitr os dados das imagens em si para fazer a visualização.
Eu vou usar a DICOM sdl, mas para ser sincero, comecei o projeto na semana passada e ainda estou tomando pé. https://code.google.com/p/dicomsdl/
Também comecei faz duas semanas, e travei nessa fase de leitar dos pixels e preciso exibir usando OpenGL.
Apenas a título de curiosidade, consegui pegar meu array de bytes e gerar um bitmap no Android pra exibir minhas fatias do arquivo DICOM, usando para leitura a lib DCM4CHE, agora entro na fase de usar o OpenGL.
ViniGodoy
Estou pensando em continuar esse projeto, mas estou na dúvida se sigo em frente com Java ou troco para C++.
O grande problema é a falta de sobrecarga de operadores em Java.
Essa falta torna a programação de aplicações matemáticas como essa insuportavelmente verbosas e pouco legíveis.
Uma pena que não programem esse tipo de feature para futuras versões do Java.
ViniGodoy
Resolvi continuar com o Java. Fiz um reset das classes, e comecei numa nova arquitetura, muito mais flexível, robusta, e com uma matemática mais elegante e correta. Ainda não implementei reflexos, sombras e nem translucidez, mas o projeto já conta com super sampling (anti-aliasing - com vários algoritmos), imagem em perspectiva com a câmera ajustável, iluminação direcional e ponto baseadas em BRDFs.
Para quem está acompanhando o projeto por aqui, aqui vai um link recente. Adicionei possibilidade de fazer trace de outros objetos, além de a possibilidade de realizar sobre eles transformações lineares (girar, mover, esticar, etc):