[Projeto] Ray Tracing em Java  XML
Índice dos Fóruns » Interface Gráfica
Autor Mensagem
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 25319
Localização: Curitiba/PR
Offline

Oi pessoal.

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.

Este é o screenshot do resultado:


Essa aplicação usa apenas Java2D básico. Na verdade, apenas a função drawLine para desenhar um único pixel.
A imagem é gerada pixel-a-pixel.

Quem quiser conhecer o código fonte, está no meu GitHub:
https://github.com/ViniGodoy/raytracer

Quem só quiser baixar o .jar para ver rodando na máquina, está aqui:
https://github.com/ViniGodoy/raytracer/raw/master/out/artifacts/raytracer/raytracer.jar

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++.

This message was edited 5 times. Last update was at 17/11/2013 00:59:24


@ViniGodoy - Lattes

Novo no fórum? Leia nosso How to.

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
juliocbq
GUJ Expert

Membro desde: 13/11/2008 12:10:18
Mensagens: 4974
Offline

E o arquivo das formas geometricas? Não são meshs geradas de algum programa 3d?

**Edit, olhei o código fonte lá. São apenas pontos num espaço 3d sem muitas firulas. Ficou muito bom. E o tutorial é explêndido.

This message was edited 1 time. Last update was at 02/06/2013 20:27:22

ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 25319
Localização: Curitiba/PR
Offline

Como são círculos e planos, não precisei de nenhum arquivo de mesh. Os dois são facilmente descritos matematicamente.

@ViniGodoy - Lattes

Novo no fórum? Leia nosso How to.

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
juliocbq
GUJ Expert

Membro desde: 13/11/2008 12:10:18
Mensagens: 4974
Offline

O tal do raytracing sempre foi algo que me chamava a atenção. Esse aqui na minha opinião é um dos grandes.

http://www.luxrender.net/en_GB/index
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 25319
Localização: Curitiba/PR
Offline

Tem esses também:
http://raytracey.blogspot.com.br/
http://www.youtube.com/watch?v=pk-xJLCDcvY

@ViniGodoy - Lattes

Novo no fórum? Leia nosso How to.

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Marky.Vasconcelos
Moderador
[Avatar]

Membro desde: 11/04/2007 18:18:20
Mensagens: 6596
Localização: São Paulo/SP
Offline

Grande Viny,

Deu erro aqui no ubuntu mas irei testar de casa o render, pela foto já estou impressionado.


marcos@marcos-AY675AA-AC4-s5320br:~/Downloads$ export PATH=/home/marcos/dev/programs/jdk1.6.0_23/jre/bin:$PATH
marcos@marcos-AY675AA-AC4-s5320br:~/Downloads$ java -jar Raytracing.jar
Exception in thread "main" java.lang.UnsupportedClassVersionError: br/com/vinigodoy/sample/SampleFrame : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:5
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:24
Could not find the main class: br.com.vinigodoy.sample.SampleFrame. Program will exit.

Github Facebook +Mark @MarkyHitchhiker WP: MarkyTech's

Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais

DefaultTableModel?! PARE! Não faça isso! Faça melhor!

Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)

Develop games is fantastic, with words you can make worlds!!!

DON'T PANIC!
MarkyHitchhiker's Blog!
[WWW] [MSN]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 25319
Localização: Curitiba/PR
Offline

É uma aplicação Java 7, Marky.

@ViniGodoy - Lattes

Novo no fórum? Leia nosso How to.

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Danielrricci
Thread.start()
[Avatar]

Membro desde: 12/04/2009 10:50:20
Mensagens: 49
Localização: Ouro Preto / MG
Offline

Opa Vini! Este tutorial está aqui no guj ou no pontov?
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 25319
Localização: Curitiba/PR
Offline

Danielrricci wrote:Opa Vini! Este tutorial está aqui no guj ou no pontov?


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 - Lattes

Novo no fórum? Leia nosso How to.

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 25319
Localização: Curitiba/PR
Offline

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:

This message was edited 1 time. Last update was at 16/06/2013 12:54:08


@ViniGodoy - Lattes

Novo no fórum? Leia nosso How to.

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
j0nny
GUJ Master
[Avatar]

Membro desde: 19/09/2009 00:01:57
Mensagens: 1244
Localização: Blumenau - SC
Offline

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?

@jntsdaniel
github.com/jonatasdaniel

---

AndOrm - Framework ORM para Android
http://github.com/jonatasdaniel/andorm
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 25319
Localização: Curitiba/PR
Offline

j0nny wrote: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.

This message was edited 1 time. Last update was at 23/08/2013 12:02:46


@ViniGodoy - Lattes

Novo no fórum? Leia nosso How to.

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
j0nny
GUJ Master
[Avatar]

Membro desde: 19/09/2009 00:01:57
Mensagens: 1244
Localização: Blumenau - SC
Offline

ViniGodoy wrote:
j0nny wrote: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.

@jntsdaniel
github.com/jonatasdaniel

---

AndOrm - Framework ORM para Android
http://github.com/jonatasdaniel/andorm
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 25319
Localização: Curitiba/PR
Offline

j0nny wrote:
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/

This message was edited 1 time. Last update was at 23/08/2013 12:18:57


@ViniGodoy - Lattes

Novo no fórum? Leia nosso How to.

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
j0nny
GUJ Master
[Avatar]

Membro desde: 19/09/2009 00:01:57
Mensagens: 1244
Localização: Blumenau - SC
Offline

ViniGodoy wrote:
j0nny wrote:
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.

@jntsdaniel
github.com/jonatasdaniel

---

AndOrm - Framework ORM para Android
http://github.com/jonatasdaniel/andorm
[WWW]
 
Índice dos Fóruns » Interface Gráfica
Ir para:   
Powered by JForum 2.1.8 © JForum Team