DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Desenvolvimento 3D em Java - Java Magazine 83

Esta é a primeira parte de uma série de três artigos que tratam do desenvolvimento de animações e jogos 3D em Java. Neste artigo, será apresentada uma introdução a API Java 3D, principalmente no que se refere às classes e recursos relacionados à produção e tratamento de objetos geométricos, animações e interação com o usuário.






Desenvolvimento 3D em Java
Aprenda a criar animações e jogos 3D em Java – Parte 1
Conheça recursos da linguagem Java para a criação de gráficos tridimensionais


O interesse de usuários e desenvolvedores de software por interfaces mais amigáveis, intuitivas e com melhor interatividade vem aumentando rápida e continuamente nos últimos anos, o que pode ser observado pela crescente atenção voltada para conceitos de ergonomia e usabilidade, bem como para tecnologias como JavaFX, Adobe Flex, Microsoft Silverlight, Ajax, sensores de movimento e toque, realidade aumentada, entre outras.
Neste contexto, interfaces gráficas tridimensionais (3D) desempenham um papel importante, uma vez que, se utilizadas com bom senso, bem planejadas e desenvolvidas, ampliam e tornam mais interessantes os cenários de interação de uma aplicação.
Em aplicações com fins educativos, ou que podem ser empregadas com esse fim, o uso de recursos tridimensionais pode ampliar as perspectivas da relação entre professores, estudantes e objetos de estudo. Para chegar a tal conclusão, basta comparar o potencial de uso, em aulas de geografia, de alguns atlas eletrônicos antigos, como o PC Globe – alguém se lembra dele? –, com ferramentas como o Google Earth ou Virtual Earth.
Para profissionais como engenheiros ou arquitetos, o uso de aplicações que permitem a produção de modelos tridimensionais – como AutoCAD ou SketchUp – traz a possibilidade de simulação e visualização de peças, estruturas ou imóveis, antes da sua produção.
No caso de jogos, as interfaces gráficas tridimensionais tornaram-se um requisito para a maioria dos usuários – afinal, são poucos hoje os adeptos dos antigos jogos bidimensionais (2D) no estilo Atari, embora eles despertem uma certa nostalgia.
Em outros tipos de aplicação, como comércios eletrônicos, o potencial de uso de interfaces gráficas tridimensionais poderia ser mais explorado, como para a criação de showrooms de produtos ou de ambientes virtuais para interação entre clientes.
Muitos entusiastas e personalidades da história da Web, como seu inventor, Tim Berners-Lee, acreditam em uma Web tridimensional em um futuro próximo, na qual as atuais páginas “planas” serão substituídas por ambientes virtuais interativos. Iniciativas como ExitReality (www.exitreality.com), RocketOn (www.rocketon.com/a/intro.php) e Club Cooee (www.clubcooee.com) são exemplos do que, em breve, pode-se esperar da Web.
Portanto, o conhecimento de conceitos, técnicas e tecnologias para o desenvolvimento de aplicações 3D é hoje importante para designers e desenvolvedores ampliarem as possibilidades de interação de suas aplicações e buscarem Interfaces Humano-Computador (IHC) melhores e mais criativas.
O desenvolvimento de interfaces gráficas tridimensionais em Java pode ser feito através de várias APIs, como Java 3D, LWJGL (Lightweight Java Game Library), JOGL (Java Binding for OpenGL), jMonkeyEngine, ogre4j, Espresso3D, Xith3D, entre outras.
Neste artigo, o primeiro de uma série de três, será apresentada uma introdução a API Java 3D. Serão abordadas nesta introdução as principais classes e recursos relacionados à produção e tratamento de objetos geométricos, animações e interação com o usuário. No segundo artigo, será estudado mais sobre animação e interação com o usuário, como também recursos relacionados à visualização, ao carregamento de modelos tridimensionais e a aparência de geometrias, bem como será iniciado o desenvolvimento de um jogo. Por fim, no último artigo, o jogo será finalizado e a API Java 3D será comparada com algumas outras APIs que podem ser utilizadas para o desenvolvimento de aplicações tridimensionais em Java.
Java 3D
Atualmente na versão 1.5.2, a API Java 3D já possui mais de 12 anos. Embora já tenha sido “congelada” mais de uma vez – a última em 2008, quando a Sun anunciou o “congelamento” do projeto para dedicar-se ao JavaFX –, é inadequado considerá-la obsoleta, pois trata-se de uma API madura e robusta, que provavelmente será a base para a produção de gráficos tridimensionais em JavaFX.
A versão atual da API tem duas variantes: uma implementada sobre o OpenGL e outra sobre o DirectX . Por padrão, a renderização é feita pelo OpenGL, embora possa ser configurada a renderização através do DirectX. A partir da versão 1.5, foi adicionado suporte para renderização através do JOGL, API Java que executa sobre o OpenGL.
Instalação
A versão 1.5.2 da API Java 3D está disponível para os sistemas Solaris (tanto SPARC, quanto x86/amd64), Linux (tanto x86, quanto amd64), Windows (tanto x86, quanto amd64) e Apple OS X (tanto PPC, quanto x86), conforme requisitos mínimos especificados na Tabela 1. Para todos os sistemas operacionais listados, é necessária a versão do JDK 1.5.0 ou posterior.

Sistema Operacional    Vídeo (Hardware e Software)
Solaris SPARC 9 ou posterior    •    Frame Buffer com suporte a OpenGL 1.3 ou posterior (OpenGL 1.2 irá funcionar com limitações na funcionalidade de mapeamento de texturas);
•    OpenGL 1.3 ou posterior para Solaris (www.sun.com/software/graphics/opengl/).
Solaris x86/amd64 10 ou posterior    •    NVidia Frame Buffer com suporte a OpenGL 1.3 ou posterior.
Linux x86/amd64    •    Adaptador gráfico com suporte à extensão GLX 1.3 ou posterior e a OpenGL 1.3 ou posterior (OpenGL 1.2 irá funcionar com limitações na funcionalidade de mapeamento de texturas).
Windows 2000, XP (x86/amd64) ou Vista    •    Adaptador gráfico com suporte a OpenGL 1.3 ou posterior ou Directx 9.0 ou posterior.
Mac OS X (PPC/x86) 10.3 ou posterior (10.4 para sistemas Apple baseados em Intel)    •    Suporte a OpenGL 1.3 ou posterior;
•    Java Binding for OpenGL (JOGL).
Tabela 1. Requisitos mínimos para a versão 1.5.2 da API Java 3D.
Para utilizá-la, desenvolvedores devem copiar a API do site https://java3d.dev.java.net/, onde estão disponíveis versões executáveis e compactadas para várias plataformas. Para instalá-la através da versão executável, basta seguir os passos da instalação.
Além da opção de desenvolver programaticamente uma aplicação Java 3D, ferramentas como J3DWorkbench (http://eclectic3d.net/), Jake 2 (http://bytonic.de/html/jake2.html) e J3DEditor (https://j3dfly.dev.java.net/) podem ser utilizadas como IDEs para desenvolver aplicações, sem que seja necessário escrever código – ou escrevendo pouco código. Nesta série de artigos, para que o leitor possa conhecer melhor a API, não será adotada nenhuma IDE.
Características
Java 3D é uma API que permite a criação de aplicações Java que fazem uso de recursos tridimensionais através do uso de uma hierarquia de classes com alto nível de abstração, não exigindo do desenvolvedor conhecimento sobre detalhes de implementação de hardware gráfico ou de algoritmos de computação gráfica.
As classes principais da API encontram-se no pacote javax.media.j3d, conhecido como Java 3D core. Outras classes utilitárias importantes são encontradas no pacote com.sun.j3d, conhecido como Java 3D utility.
Para permitir a criação de animações e jogos, a configuração padrão da API cria vários threads – definidos, por padrão, com prioridade 5  –, que gerenciam, entre outras coisas, a interação com o usuário e a atualização da interface gráfica. Assim sendo, o desenvolvedor não precisa se preocupar com esses aspectos, ficando isso sob a responsabilidade da API.
A integração do Java 3D com interfaces AWT e Swing, bem como com o JavaFX (www.interactivemesh.org/testspace/j3dmeetsjfx.html) se dá sem maiores problemas. A API fornece uma classe, Canvas3D (subclasse de java.awt.Canvas), que pode ser adicionada a um container, como um JFrame. Por tratar-se de um componente pesado (heavyweight), deve-se ter cautela quanto ao posicionamento de componentes Swing leves (lightweight) sobre um Canvas3D. Nos próximos artigos da série, detalhes sobre renderização, criação de aplicações em janela cheia e o objeto Canvas3D serão abordados.
"


ATENÇÃO! A exibição deste artigo foi interrompida.


  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!






    3 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Luiz Argenton
A listagem 17 o atributo região não está sendo usado...
[há +1 mês] - Responder

 

Luiz Argenton
Qual o link para pegar o código do cubo mágico? ou algum link para pegar o código da listagem 20 completo.
[há +1 mês] - Responder

 

Devmedia - Equipe De Moderacao
Luiz, o código fonte desse artigo e dos demais encontram-se na página principal da revista.
[há +1 mês] - Responder
 



Publicidade
Autor
Equipe Devmedia

Noticias/Dicas/Artigos publicados.




Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
2   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03