Java3D, jogl, alguem?

7 respostas
Paulo_Silveira

Ola pessoal

Estou em um projeto que comecou e esta usando java3d.
O problema eh que nos assustamos com depoimentos como este:
http://weblogs.java.net/pub/wlg/278

Tem gente que fala que a Sun vai largar o java3d.
Tem gente que fala que ela vai eh apoiar opengl bindings, isso eh, algo como o JOGL, que no fundo eh apenas um punhado de classes que chamam uma outra classe com trocentos de metodos nativos.

Sinceramente, eu detesto esse tipo de binding. O java3d tem uma solucao bem elegante para programar 3d, e vamos ter de voltar ao paradigma opengl se isso acontecer.

Gostaria de saber de alguem que particpa da comunidade 3d do java, se sabe o que esta rolando.

7 Respostas

Jair_Rillo_Junior

Paulo
eu sempre tive vontade de mexer com Java3D, alias, uma das coisas que eu coloquei em mente mais pra frente era estudar Java3D, antes eu tenho outros objetivos como me especializar melhor em J2EE e começar ir a fundo no J2ME, mas o Java3D deve ser muito show, gostaria um dia de aprender, ver programinhas graficos, jogos e etc…

agora com sua noticia e sobre os bindings de OpenGL acho que perde um pouco o lance de ser multiplataforma ou estou enganado?

se alguem tiver alguns exemplos (nao codigos e sim resultado pronto) em java 3d poderia postar os links

valeu

louds

O grande problema do java3d é ser high-level demais. É quase impossivel usar as reais capacidades do hardware dado que tudo vai tar acontecendo por traz com o java3d fazendo sabesse lá oq…

É legal usar para somente non-realtime rendering com j2se.

Com java3d, por exemplo, vc não consegue utilizar o hardware para fazer coisas locas como executal algoritmos extremamente paralelisaveis

Paulo_Silveira

“louds”:
O grande problema do java3d é ser high-level demais. É quase impossivel usar as reais capacidades do hardware dado que tudo vai tar acontecendo por traz com o java3d fazendo sabesse lá oq…

por tras ele usa directx ou opengl basicao, entao usa a capacidade de aceleracao, mas realmente nao usa toda. sem contar para efeitos especiais.

mas o j3d ja faz coisas bem impressionantes, e voce nao fica com asco de ver o codigo, diferente desses bindings de opengl

“louds”:

Com java3d, por exemplo, vc não consegue utilizar o hardware para fazer coisas locas como executal algoritmos extremamente paralelisaveis

lougs, realtime eh pra joguinho 99%. os micros pra joguinho soh te um processaodr 99% das vezes, entao nao ia ajudar muito…

ou eu nao entendi

Andre_Breves

Os OpenGL bindings vão ser num primeiro momento, porque com certeza vão criar engines sofisticadas em cima do JOGL, ou portar as existentes em OpenGL.

louds

Paulo, com as placas 3D de hoje, realtime rendering definitivamente ta deixando de ser somente para jogos.

Um exemplo muito bom são as caves digitais, o pessoal de uma universidade americana criou uma utilizando 1 cluster de 8 maquinas com placas nvidia e o resultado foi muito bom.

O pessoal da tecgraf lá no rio usa rt-rendering para projetos de visualização da petrobras usando aceleradoras comuns.

Quando a computação paralela usando placas de video, isso é algo que finalmente ta se tornando realidade.
Em 96, ou 97, teve uma palestra para a siggraf sobre como voce poderia realizar calculos arbitrarios em cada pixel utilizando multi-pass rendering, e as varias operações de alpha channel, z, color e stencil buffers.

Com a ultima geração de placas voce tem suporte a floating-point de ate 64bits na pipeline toda e no framebuffer.

Agora basta voce pensar em qualquer algoritmo onde 1024x768 calculos podem ser executados em paralelo que voce tem uma ideia do que tou falando.

Tem gente usando isso para simulações de física com sucesso. Basicamente basta voce portar seu código de C para HSDL.

cv1

Alguém lembra daquele emulador de Playstation (que nem chegou a sair, direito), que usava a 3Dfx pra fazer parte da emulação da CPU?.. é algo mais ou menos assim que eu entendi do seu post, louds… mas é possível pegar os resultados de volta facilmente com as placas de hoje?

Diacho, com tantos recursos que as placas de video tem hoje, nao seria nada mal os Lightwaves, Mayas e SoftImages da vida usarem o rendering da placa, pegar os dados de volta e aplicar o radiosity (que certamente nao dah pra fazer em realtime decentemente ainda) em cima… :slight_smile:

louds

com java3d não tenho a mais vaga ideia, mas com opengl é bico, voce simplesmente renderiza tua cena numa textura e acabo.

Um exempo simples do potencial disso, todo mundo lembra duma operação básica da geometria analítica, o produto escalar, em r3 ele é:
[x,y,z] . [a,b,c] = x * a + y * b + z * c

Uma GFX 5200, que custa uns 400 reais, consegue realizar +/- 600 milhões de dot products por segundo.

Em um p4, usando sse2, voce usa 3 muls, 2 adds, 8 loads e 4 stores para 4 produtos, oque custa 3 * 6 + 2 * 4 + 8 * 6 + 4 * 6 = 98 ciclos.
Arredodando para 100, oque da 25 ciclos/dotp, isso significa que 1 P4 3.0Ghz, que custa uns 1500 reais conseguiria fazer, no máximo, 120m dotp/s.

Criado 5 de setembro de 2003
Ultima resposta 5 de set. de 2003
Respostas 7
Participantes 5