Java3D.... Rola ou não rola?

11 respostas
Zakim

a API java3d tem crescido mto… porem, não vejo mto incentivo nela aqui no brasil…
estou desenvolvendo um projeto utilizando java3D

gostaria de saber de vcs.

o que acham?

11 Respostas

Daniel_Quirino_Olive

Boa sorte.

Zakim

muito obrigado! vc não sabe o quanto contribuiu para com este forum! :?

J

Talvez ele tenha querido dizer que java 3d é difícil e você vai precisar de sorte.

Ou talvez ele só postou isso para aumentar o número de mensagens. Daqui a pouco vai virar “Super Forum Spammer”.

Daniel_Quirino_Olive

Exatamente, porque modelar uma cena em J3D é um pouquinho mais complicado do que em OpenGL, uma vez que, no caso do primeiro, você precisa definir a hierarquia dos objetos em cena, o que pode ser um pouco complicado se você tiver uma cena composta por vários objetos.

Como se alguém ou eu mesmo me importasse com isso, mas parece que você se liga muito neste lance de “nossa! olha quantas mensagens eu tenho!”, pena que a maioria das suas tenham uma relevância tão grande quanto a minha que você julgou.

Mas, enfim, sua participação é muito importante para nós, muito obrigado pela sua mensagem :stuck_out_tongue:

ViniGodoy

Daniel Quirino Oliveira:

Exatamente, porque modelar uma cena em J3D é um pouquinho mais complicado do que em OpenGL, uma vez que, no caso do primeiro, você precisa definir a hierarquia dos objetos em cena, o que pode ser um pouco complicado se você tiver uma cena composta por vários objetos.

Há controvérsias. O que tenho lido por aí é que para sistemas maiores, e até onde já pude sentir, você fatidicamente vai recair na árvore do Java3D, mesmo que acabe implementando ela em C++.

Mas, há um certo consenso de que Java 3D é lento. Muito lento. Já vi até alguns benchmarks que apontam nesse sentido. E basta baixar os jogos feitos nessa tecnologia para ver a diferença.

Aplicações gráficas, em especial jogos, são exatamente o lugar onde até mesmo algoritmos de alinhamento de memória e otimizações punk desse tipo fazem sentido. Ou seja, as empresas estão dispostas a investir, e investir muito em performance, então, o C++ irá certamente superar a performance do Java.

Também tem que levar em conta que o C++ tem tecnologias muito amadurecidas e extremamente performáticas, como a própria Ogre e a STL. E aplicações gráficas são exatamente o tipo do lugar onde cara fentossegundo faz diferença.

Por fim, vale lembrar que, novamente no caso de jogos, não há mercado para o java entre as principais plataformas, como X-Box, Playstation e Wii. E isso exclui o programador java de praticamente 75% dessa industria de entretenimento.

Daniel_Quirino_Olive

ViniGodoy:
Daniel Quirino Oliveira:

Aplicações gráficas, em especial jogos, são exatamente o lugar onde até mesmo algoritmos de alinhamento de memória e otimizações punk desse tipo fazem sentido. Ou seja, as empresas estão dispostas a investir, e investir muito em performance, então, o C++ irá certamente superar a performance do Java.

Também tem que levar em conta que o C++ tem tecnologias muito amadurecidas e extremamente performáticas, como a própria Ogre e a STL. E aplicações gráficas são exatamente o tipo do lugar onde cara fentossegundo faz diferença.

Não leve este papo de “alguma coisa irá sempre ser mais rápida do que a outra coisa” muito a sério. Isso depende de muitos fatores que, às vezes, nem são inerentes à aplicação em si.

Sobre J3D ser lento, isso se deve muito ao fato de que até algum tempo atrás J3D não utilizava aceleração de hardware provida pela plataforma (Direct3D no Windows, por exemplo), mas parece que isso mudou bastante hoje (não acompanho mais J3D desde 2004, logo não sou uma fonte muito confiável). Mas que montar uma cena usando árvores é uma coisa complicada, ah! isso é! :smiley:

Zakim

realmente, sinto como se fosse muito pesado trabalhar com Java3D, mesmo sem as outras possiveis alternativas!
peguei este projeto como desafio, mas a cada dia que passa a aplicação vai ficando mais pesada.

Não sei porque acontece, mas toda vez que ponho ela pra rodar, o CPU chega a 100%…

Será ainda uma tecnologia java imatura para o contexto computação grafica e realidade virtual?

ViniGodoy

Daniel Quirino Oliveira:

Não leve este papo de “alguma coisa irá sempre ser mais rápida do que a outra coisa” muito a sério. Isso depende de muitos fatores que, às vezes, nem são inerentes à aplicação em si.

E onde eu disse isso? Não falei em sempre.

Deixei bem claro que aplicações gráficas são o lugar onde o investimento de performance costuma a ser altíssimo. É esse investimento que faz a diferença.

Creio que se você for fazer uma aplicação 3D simples, realmente vai ser bastante interessante fazer em Java. Eu já vi algumas coisas na net envolvendo boyds, floyds e outros autômatos de IA em java 3D que tem ótima performance.

Agora… se você vai fazer um jogo, por exemplo, vai estar concorrendo com empresas que investem muito dinheiro (muito mesmo), em profissionais treinados e qualificados na arte de otimizar. Aí, nesse caso, quanto mais controle no hardware e na arquitetura gráfica você der ao profissional, mais rápida a aplicação tem o potencial de ser.

A arquitetura de árvore do Java3D é interessante para a maior parte das aplicações, entretanto, ela está nivelando pelo caso comum. Usando o OpenGL diretamente, você tem a possibilidade (embora não seja nem fácil e nem barato) de tornar a arquitetura adaptada ao caso específico do seu aplicativo.

neofito

Zakim:
realmente, sinto como se fosse muito pesado trabalhar com Java3D, mesmo sem as outras possiveis alternativas!
peguei este projeto como desafio, mas a cada dia que passa a aplicação vai ficando mais pesada.

Não sei porque acontece, mas toda vez que ponho ela pra rodar, o CPU chega a 100%…

Será ainda uma tecnologia java imatura para o contexto computação grafica e realidade virtual?

Olá,

Se você vai usar Java3D e precisa muito de performance, não se esqueça de usar java 6, que é mais rápido. Uma outra opção pode ser o JOGL, que é bem rápido.

:wink:

ViniGodoy

neófito:

Se você vai usar Java3D e precisa muito de performance, não se esqueça de usar java 6, que é mais rápido. Uma outra opção pode ser o JOGL, que é bem rápido.

De onde surgiu essa informação? Existe algum benchmark sobre isso?
Digo porque boa parte da performance do Java3D está na placa de vídeo e na arquitetura adotada, não tanto na VM em si.

Vale lembrar que o Java3D é um pacote separado, e não tem versão nova dele a cada versão da VM.

Mas o que você falou é real. Melhor usar a JOGL ou a LWJGL. Se for para fazer jogo, tem ainda a JMonkeyEngine - que é baseada em LWGL, mas tem um melhor suporte a situações tipicamente encontradas em jogos.

Existe também esse benchmark muito interessante de um jogo FPS chamado Jake. Eles obtiveram bons resultados com o Java, mas também ressalvam algumas coisas como o deperdício de tempo causado pelo JNI e os problemas no modo full screen do java:
http://www.bytonic.de/html/benchmarks.html

É bom ver na tabelinha deles que o C supera o Java em todas as versões do jogo e em todos os computadores.

neofito

ViniGodoy:
…De onde surgiu essa informação? Existe algum benchmark sobre isso?
Digo porque boa parte da performance do Java3D está na placa de vídeo e na arquitetura adotada, não tanto na VM em si.

Tudo bem, tudo bem… só quis dizer que com o java 6 as coisas são mais rápidas. E sim, o Java3D não vem com a JRE.

:smiley:

Criado 29 de junho de 2007
Ultima resposta 1 de jul. de 2007
Respostas 11
Participantes 5