TÓPICOS DE INFORMÁTICA
AVANÇADA II
Processo de Desenvolvimento de Ambientes Virtuais
Java3D
Prof. Régis Albuquerque
CRIAÇÃO DE AMBIENTES VIRTUAIS
Para criar um mundo virtual interativo, é
necessário modelar um ambiente composto por
múltiplos objetos e habilitá-los com
características virtuais.
A maioria dos sistemas de construção de mundos
virtuais compartilha alguns conceitos básicos e
permitem aos desenvolvedores criar simulações
bastante realistas.
2
JAVA3D
•Java 3D é uma API 2D e 3D para a linguagem Java baseada
em grafos de cena.
•Foi construída tendo como base o OpenGL.
•o Java 3D tem a preocupação de possibilitar a utilização de
conceitos da POO, como o Polimorfismo, para a criação da
aplicações em ambientes tridimensionais.
•O grafo de cena é estruturado como uma árvore contendo vários
elementos que ditam o modo como a cena será construída e
exibida, além de comportamentos que poderão ser observados ao
longo do tempo (como animações, respostas a interação do
usuário, colisões, etc).
3
JAVA3D - INTRODUÇÃO
JAVA:
Linguagem de programação
Orientada a objetos
Independente de arquitetura (multiplataforma)
Portável
Robusta
Segura
Interpretada
Etc...
4
JAVA3D - INTRODUÇÃO
JAVA
Compilada e interpretada
O compilador transforma o programa em
bytecodes (instruções de máquina compreendidas
pela Java Virtual Machine)
O interpretador transforma os bytecodes em
linguagem de máquina
5
6
7
JAVA3D - INTRODUÇÃO
Plataforma
Ambiente onde um programa é executado, incluindo
software e hardware
Como plataforma, Java possui dois componentes
JVM (Java Virtual Machine - interpretador Java runtime Java)
API (Java Application Programming Interface)
8
JAVA3D - INTRODUÇÃO
Java Media Framework API
Suporta tecnologias gráficas e multimídia
Áudio
Vídeo
2D
Animação
3D
Um dos componentes da API Java Standard
Extension é Java 3D
9
JAVA3D - INTRODUÇÃO
O que é a API Java 3D?
Hierarquia de classes Java
Interface para o desenvolvimento de sistemas
gráficos tridimensionais
Construtores de alto nível
Criação e manipulação de objetos geométricos,
especificados em um universo “virtual”
Grande flexibilidade para criar universos virtuais
Representação de cenas: “grafo de cena”
Detalhes de rendering gerenciados automaticamente
10
JAVA3D - INTRODUÇÃO
Programa Java 3D
Cria objetos Java 3D e posiciona-os em um grafo de
cena
Grafo de cena
Combinação de objetos 3D em uma estrutura de
árvore
Especifica o conteúdo do universo virtual e como este
é visualizado
11
JAVA3D - INTRODUÇÃO
Programas Java 3D podem ser escritos como
Aplicação
Applet
Suporte para Java 3D nos navegadores está
disponível através de um plugin que pode ser
obtido
no site da Sun (java.sun.com)
Ou ambas
Classe MainFrame
12
JAVA3D - HISTÓRICO
Idéia
Construir uma API que fosse independente de
plataforma
“Prima” de VRML
Alguns componentes familiares
Muitos componentes novos
1998
13
JAVA3D - HISTÓRICO
Especificação da API Java 3D
Intel, Silicon Graphics, Apple e Sun Microsystems
Sun colocou a sua implementação para download
Java 3D
Baseada em OpenGL e Direct3D (depende da
plataforma na qual o programa é executado)
14
JAVA3D – APLICAÇÕES
Exemplos de aplicações onde Java 3D é usado
Desenvolvimento de jogos
Comércio eletrônico
Visualização 3D dos produtos
Loja virtual
Representação 3D
Interação
Visualização de dados
Elaboração de interfaces
15
JAVA3D – GRAFO DE CENA
Uma aplicação Java 3D é projetada a partir de
um grafo de cena
Grafo de cena:
Possibilita a criação de um universo virtual
Simples de construir
Não é necessário ter experiência em programação 3D
Contém obejtos gráficos
Geometria, luz, som, entre outros
16
JAVA3D – EXEMPLO DE UM GRAFO DE
CENA
17
GRAFO DE CENA - DENIFIÇÃO
Consiste em objetos 3D (nodes) organizados em
uma estrutura do tipo árvore, composta de:
Nodos (ou vértices): instâncias das classes Java
3D
Arcos (ou arestas): relacionamento entre as
instâncias.
Relacionamentos:
Pai-Filho
Nodo do tipo grupo (pode ter um ou mais filhos, mas apenas
um pai)
Nodo do tipo folha (não pode ter filhos e tem apenas um pai)
Referência
Associa um objeto com o grafo de cena
18
GRAFO DE CENA
EXEMPLO CONCRETO
(PROJETO DE UM ESCRITÓRIO)
19
PRIMEIRO PROGRAMA JAVA3D
Passos para a criação do grafo de cena
Criar um objeto GraphicsConfiguration
Criar um objeto Canvas3D
Construir e compilar pelo menos um subgrafo de
conteúdo
Criar um objeto SimpleUniverse, que referencie o
objeto Canvas3D criado e automaticamente cria os
objetos VirtualUniverse e Locale,e contrói o subgrafo
de visualização
Inserir o sub-grafo de conteúdo no universo virtual
20
OLÁUNIVERSO – BILIOTECAS
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.GraphicsConfiguration;
import com.sun.j3d.utils.applet.MainFrame;
import
com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;
21
OLAUNIVERSO – CORPO DA CLASSE
public class OlaUniverso extends Applet
{
public BranchGroup criaGrafoCena()
{
...
}
public OlaUniverso()
{
...
}
public static void main(String[] args) {
new MainFrame(new OlaUniverso(), 256,256);
}
}
22
OLAUNIVERSO – CRIAGRAFOCENA()
public BranchGroup criaGrafoCena()
{
BranchGroup objRoot = new BranchGroup();
Transform3D rotateY = new Transform3D();
rotateY.rotY(.6);
TransformGroup objTrans = new TransformGroup(rotateY);
objRoot.addChild(objTrans);
objTrans.addChild(new ColorCube(0.4));
objRoot.compile();
return objRoot;
}
23
OLAUNIVERSO – OLAUNIVERSO()
public OlaUniverso()
{
setLayout(new BorderLayout());
GraphicsConfiguration config =
SimpleUniverse.getPreferredConfiguration();
Canvas3D c = new Canvas3D(config);
add("Center", c);
SimpleUniverse u = new SimpleUniverse(c);
BranchGroup scene = criaGrafoCena();
u.getViewingPlatform().setNominalViewingTransform();
u.addBranchGraph(scene);
}
24
EXECUÇÃO - OLAUNIVERSO
25
SIMPLEUNIVERSE
Uma das classes mais importantes é a
SimpleUniverse;
É responsável pela configuração de um
ambiente mínimo para executar um
programa Java 3D;
Fornece as funcionalidades necessárias para
a maioria das aplicações.
Quando uma instância de SimpleUniverse
é criada automaticamente são criados todos os
objetos necessários para o sub-grafo de
visualização, tais como Locale, ViewingPlatform e
Viewer.
26
GRAPHICSCONFIGURATION
GraphicsConfiguration é uma classe que faz
parte do pacote awt
É responsável pela descrição das características
do dispositivo gráfico (impressora ou monitor).
Sua estrutura varia de plataforma para
plataforma fornecendo, por exemplo, a resolução
do dispositivo.
27
CANVAS3D
A classe Canvas3D fornece o canvas ou seja, uma
área de desenho, onde é realizada a visualização
3D.
28
BRANCHGROUP
A classe BranchGroup serve como ponteiro para a
raiz de um sub-grafo de cena;
Instâncias desta classe são os únicos objetos que
podem ser inseridos em Locale.
Um sub-grafo de cena que tem um BranchGroup
como raiz pode ser considerado como uma
compile unit.
Pode ser compilado, inserido em um universo
virtual (associando-o com Locale) e desassociado
deste universo em tempo de execução.
29
TRANSFORM3D E TRANSFORMGROUP
As transformações geométricas de escala,
rotação e translação, são especificadas
através de uma instância de Transform3D
Uma instância de Transform3D representa uma
matriz 4x4 de números reais (float).
Objetos da classe TransformGroup, por sua vez,
especificam uma transformação, através de um
objeto Transform3D, que será aplicada a todos
os seus filhos.
Ao serem aplicadas as transformações, deve-se
considerar que os efeitos num grafo de cena são
cumulativos.
30
BOUNDINGSPHERE
A classe BoundingSphere define uma região (ou
volume) limitada por uma esfera que é
especificada a partir de um ponto central e um
raio.
A esfera é associada com o limite para o
objeto RotatorInterpolator, que é usado para
fazer a animação do cubo.
31
EXERCÍCIO
Criação de Grafo de Cena do Ambiente Virtual
Idealizado.
32