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.
V
ViniGodoy
É uma aplicação Java 7, Marky.
D
Danielrricci
Opa Vini! Este tutorial está aqui no guj ou no pontov?
V
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.
V
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?
V
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.
J
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.
V
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/
J
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.
J
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.
V
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.
V
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):