API Java 3D - Mario Dantas Blog

Propaganda
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
Download