Atenção: esse artigo tem um vídeo complementar. Clique e assista!

Artigo no estilo: Curso

De que se trata o artigo:

Esta é a terceira e última parte de uma série de três artigos que trataram do desenvolvimento de animações e jogos 3D em Java. Neste artigo, serão abordados classes e recursos relacionados à reprodução de som e técnica de billboard, bem como será estudado o modelo de visualização da API Java 3D. Estes recursos serão utilizados na finalização do jogo de xadrez iniciado no artigo anterior.


Para que serve:

Para o estudo do modelo de visualização e dos recursos da API Java 3D relacionados à reprodução de sons e técnica de billboard, e como guia para empregá-la na criação de animações e jogos 3D em Java.

Em que situação o tema útil:

O tema é relevante tanto para desenvolvedores que desejam ampliar e tornar mais interessantes os cenários de interação de suas aplicações, quanto para aqueles que desejam desenvolver animações e jogos com interfaces gráficas tridimensionais.

Desenvolvimento 3D em Java – Parte 3:

Apesar de grande parte da informação de uma aplicação 3D ser transmitida visualmente, a reprodução de sons permite o enriquecimento da experiência de interação com o usuário. Neste artigo, as classes e recursos relacionados à reprodução de sons serão estudados, além da técnica de billboard e do modelo de visualização da API, que permite que um mesmo universo virtual possa ser visualizado de diferentes formas, por meio de diferentes dispositivos.
Autores:Leandro Luque e Rodrigo Rocha Silva

Nos dois artigos anteriores desta série foram abordados as principais funcionalidades e recursos da API Java 3D para o desenvolvimento de aplicações e jogos com interface gráfica tridimensional. Neste último artigo, será abordada a reprodução de sons, a implementação da técnica de billboard, o modelo de visualização e uma comparação da Java 3D com outras APIs Java, que podem ser utilizadas com o mesmo fim.

Estes tópicos serão abordados em função de necessidades para o jogo de xadrez, cujo desenvolvimento foi iniciado no artigo anterior. Inicialmente, será estudada uma forma de adicionar sons ao jogo.

Reprodução de sons

Embora grande parte da informação de uma aplicação com interface gráfica tridimensional seja transmitida visualmente, a reprodução de sons permite o enriquecimento da experiência de interação com o usuário.

O suporte ao uso de sons em aplicações Java 3D é implementado por classes do pacote javax.media.j3d. Embora a implementação que acompanha a API não esteja madura, nem livre de bugs, por meio dela é possível definir comportamentos sonoros trabalhosos de serem criados com APIs não direcionadas a ambientes tridimensionais, como a reprodução de sons espaciais, que permitem, por exemplo, que quanto mais próximo se esteja de uma fonte sonora, maior seja a intensidade do som.

Caso estes comportamentos não sejam necessários, pode-se fazer uso de alguma API mais madura, como é o caso da Java Media Framework (JMF) ou da JavaSound API, para a reprodução de sons.

Assim como para fontes de luz, existem na API diferentes tipos de fontes de som: ambiente (BackgroundSound), pontual (PointSound) e direcional (ConeSound). Todas elas são implementadas por subclasses de Sound, classe abstrata que define o comportamento comum a sons, como o arquivo de mídia que deve ser reproduzido, a intensidade, o número de repetições, entre outros.

Para que a reprodução de som em uma aplicação qualquer seja possível, deve existir um dispositivo de áudio associado, o que pode ser feito através de classes que implementam a interface AudioDevice.

Uma implementação de dispositivo de áudio, conhecida como JavaSoundMixer, baseada na JavaSound API, acompanha o Java 3D. No entanto, segundo documentações do código-fonte, a implementação está incompleta e precisa ser reescrita. Em versões anteriores, o dispositivo HeadspaceMixer acompanhava a API, o que não ocorre mais por restrições de licença.

Apesar de não ser distribuído com a Java 3D, um dispositivo de áudio baseado na Java bindings for OpenAL API (JOAL), conhecido como JOALMixer, pode ser copiado do site oficial do Java3D. Para utilizar este dispositivo, deve-se copiar o JOAL (https://joal.dev.java.net) e instalar o OpenAL (http://connect.creativelabs.com/openal/default.aspx). Adicione os arquivos DLL do JOAL à variável java.library.path – ou os copie para a pasta do seu projeto, caso esteja utilizando alguma IDE –, e defina os arquivos .jar como parte da biblioteca.

No caso de se estar trabalhando com um universo simples (SimpleUniverse), o método createAudioDevice() pode ser utilizado para a criação do dispositivo de áudio. Para tanto, deve-se definir a propriedade de sistema “j3d.audiodevice” como sendo igual à classe do dispositivo de áudio que será utilizado (Listagem 1).

Após especificar o dispositivo de áudio, deve-se carregar um arquivo de mídia, que pode ter os seguintes formatos:

...
Quer ler esse conteúdo completo? Tenha acesso completo