Anda di halaman 1dari 13

Java 3DTM API

Profa. Isabel Harb Manssour


(http://www.inf.pucrs.br/~manssour/Java3D)

1. Introduo

XVI SIBGRAPI 1212-15 de Outubro de 2003

Roteiro
1. 2. 3. 4.

Introduo Conceitos de Computao Grfica


Linguagem Java A API Java 3D Histrico Aplicaes Instalao e Utilizao

Introduo Criando Universos Virtuais Realismo, Interao e Animao

Comentrios Finais

Introduo
Conceitos de Computao Grfica

Introduo
Conceitos de Computao Grfica

Transformaes geomtricas
Operaes matemticas que permitem alterar uniformemente o aspecto de objeto(s), mas no a sua topologia Tipos
Escala Rotao Translao

Transformaes geomtricas: Escala


Ex, Ey, Ez: fatores de escala
Ex 0 0 0 0 Ey 0 0 0 0 Ez 0 0 0 0 1

[x

'

y'

z ' 1 = [x

z 1]

Introduo
Conceitos de Computao Grfica

Introduo
Conceitos de Computao Grfica

Transformaes geomtricas: Translao

Transformaes geomtricas: Rotao


Deve-se definir o plano sobre o qual a rotao ser realizada (em torno de qual eixo se proceder a rotao)
1 0 0 0 cos 0 0 sen cos 0 0 0 0 1 cos 0 sen 0 0 sen 1 0 0 0 cos 0 0 0 0 1 cos sen 0 0 sen cos 0 0 0 0 0 0 1 0 0 1

Tx, Ty, Tz: constantes de deslocamento

[x

'

y'

z'

1 = [x

z 1]

1 0 0 Tx

0 1 0 Ty

0 0 1 Tz

0 0 0 1
Rx =

0 sen

Ry =

Rz =

Introduo
Conceitos de Computao Grfica

Introduo
Conceitos de Computao Grfica

Transformaes geomtricas
Em geral so acumuladas feita uma combinao das matrizes em uma s (multiplicando-as)

Projeo no plano da imagem


3D (x,y,z) 2D (x,y) (x,z) (y,z)

Proje Projeo Paralela

Introduo
Conceitos de Computao Grfica

Introduo
Conceitos de Computao Grfica

Projeo no plano da imagem

Projeo no plano da imagem


3D (x,y,z) 2D (x,y') (x,z) (y,z)

3D

2D

Proje Projeo Perspectiva

Introduo
Conceitos de Computao Grfica

Introduo
Linguagem Java

Cmera Sinttica
Observador Virtual
Define de que local se deseja que a cena seja exibida (de cima, de baixo, do lado esquerdo, do lado direito, etc) Necessidade da existncia deste observador: um mesmo conjunto de objetos no universo 3D, visto de diferentes lugares tem, para quem os observa, diferentes coordenadas para cada posio

Java
Linguagem de programao Orientada a objetos Independente de arquitetura (multiplataforma) Portvel Robusta Segura Interpretada Etc...

Introduo
Conceitos de Computao Grfica

Introduo
Linguagem Java

Java
Compilada e interpretada O compilador transforma o programa em bytecodes (instrues de mquina compreendidas pela Java Virtual Machine) O interpretador transforma os bytecodes em linguagem de mquina

Linguagem Java
A API Java 3D Histrico Aplicaes Instalao e Utilizao

Introduo
Linguagem Java

Introduo
Linguagem Java

Java
Compilada e interpretada

Introduo
Linguagem Java

Introduo
Linguagem Java

Plataforma
Ambiente onde um programa executado, incluindo software e hardware

Conceitos OO
Abstrao
Capturar as informaes essenciais das entidades/objetos

Como plataforma, Java possui dois componentes


JVM (Java Virtual Machine - interpretador Java runtime Java) API (Java Application Programming Interface)

Projeto de um sistema OO
Identificar as abstraes/entidades Identificar os servios de cada uma Identificar os relacionamentos entre essas entidades

Encapsulamento
Esconder como as coisas funcionam (data hiding) por trs de uma interface externa

Introduo
Linguagem Java

Introduo
Linguagem Java

Exemplo:
Professor
- nome: String - matricula: int - cargaHoraria: int

Herana
Capacidade de reusar cdigo pela especializao de solues genricas j existentes

Atributos

superclasse direta de B superclasse indireta de C

Classe

+ setNome (n: String) + getNome ( ): String + setMatricula (m: int) + getMatricula( ): int + setChsemanal (c: int) + getChsemanal( ): int + getChmensal( ): float

Mtodos

subclasse direta de A superclasse direta de C


public class classeA {} public class classeB extends classeA {} public class classeC extends classeB {}

subclasse direta de B subclasse indireta de A

Introduo
Linguagem Java

Introduo
Linguagem Java

Exemplo:
Professor
- nome: String - matricula: int - cargaHoraria: int + setNome (n: String) + getNome ( ): String + setMatricula (m: int) + getMatricula( ): int + setChsemanal (c: int) + getChsemanal( ): int + getChmensal( ): float

Pacote
Recurso interessante que permite agrupar classes relacionadas (que tenham afinidades funcionais) Estruturam sistemas de grande porte, facilitando a localizao das classes Java dispe de uma grande quantidade de pacotes:
java.lang, java.util, ...

p1
nome: Maria matrcula: 110 cargaHorria: 12

p2
nome: Jos matrcula: 123 cargaHorria: 40

Objetos
Professor p1, p2; p1 = new Professor(); p1.setNome(Maria); ... p2 = new Professor(); p2.setNome(Jose); ...

Devem ser importados


import javax.swing.JOptionPane;

Introduo
Linguagem Java

Introduo
Linguagem Java

Interface grfica com o usurio


java.awt: Abstract Windowing Toolkit (classes bsicas); javax.swing: Swing Components - fornece melhores alternativas aos componentes definidos na classe java.awt

Interface grfica com o usurio


Layouts

Introduo
Linguagem Java

Introduo
Linguagem Java

Interface grfica com o usurio


Containers e Componentes

API Java
Java Base API
I/O GUI ...

Java Standard Extension API


Acesso a banco de dados Java Media Framework ...

Introduo
Linguagem Java

Introduo
A API Java 3D

Java Media Framework API


Suporta tecnologias grficas e multimdia
udio Vdeo 2D Animao 3D

O que a API Java 3D?


Hierarquia de classes Java Interface para o desenvolvimento de sistemas grficos tridimensionais

Um dos componentes da API Java Standard Extension Java 3D

Introduo

Introduo
A API Java 3D

O que a API Java 3D?


Construtores de alto nvel
Criao e manipulao de objetos geomtricos, especificados em um universo virtual Grande flexibilidade para criar universos virtuais Representao de cenas: grafo de cena

Conceitos de Computao Grfica Linguagem Java

A API Java 3D
Histrico Aplicaes Instalao e Utilizao

Detalhes de rendering gerenciados automaticamente


[Sun 2003]

Introduo
A API Java 3D

Introduo
Conceitos de Computao Grfica Linguagem Java A API Java 3D

Programa Java 3D

Cria objetos Java 3D e posiciona-os em um grafo de cena

Grafo de cena
Combinao de objetos 3D em uma estrutura de rvore Especifica o contedo do universo virtual e como este visualizado

Histrico
Aplicaes Instalao e Utilizao

Introduo
A API Java 3D

Introduo
Histrico

Programas Java 3D podem ser escritos como


Aplicao Applet
Suporte para Java 3D nos navegadores est disponvel atravs de um plugin que pode ser obtido no site da Sun (java.sun.com)

Idia
Construir uma API que fosse independente de plataforma Prima de VRML
Alguns componentes familiares Muitos componentes novos

1998

Ou ambas
Classe MainFrame

Introduo
Histrico

Introduo
Conceitos de Computao Grfica Linguagem Java A API Java 3D Histrico

Especificao da API Java 3D


Intel, Silicon Graphics, Apple e Sun Microsystems Sun colocou a sua implementao para download

Java 3D
Baseada em OpenGL e Direct3D (depende da plataforma na qual o programa executado)
Applet / Aplicao Java 3D OpenGL Direct3D

Aplicaes
Instalao e Utilizao

Hardware

Introduo
Histrico

Introduo
Aplicaes

Verses da API Java 3D


Java 3D 1.1 API
Implementao inicial

Exemplos de aplicaes onde Java 3D usado


Desenvolvimento de jogos Comrcio eletrnico Visualizao de dados Elaborao de interfaces

Java Java

3DTM 3DTM

1.1.3 API 1.2.1 API

Nova implementao da arquitetura

Java 3DTM 1.3 API Java 3DTM 1.3.1 API


Verso atual

Introduo
Aplicaes

Introduo
Aplicaes

Desenvolvimento de jogos
Exemplos Java 3D
Four by four

Visualizao de dados
J foram criados toolkits Java 3D para a visualizao de dados
VisAD SPLViz ...

Disciplina de Computao Grfica [Tori 2002]


Objetivo: aprender conceitos de Computao Grfica Java 3D no lugar de OpenGL Exemplos: War 3D e Enduro 3D

Introduo
Aplicaes

Introduo
Aplicaes

Comrcio eletrnico
Visualizao 3D dos produtos Loja virtual
Representao 3D Interao

Visualizao de dados
Exemplo: VisAD (http://www.ssec.wisc.edu/~billh/visad.html)
Visualization for Algorithm Development Visualizao e anlise interativa e colaborativa de dados numricos

Introduo
Aplicaes

Introduo
Instalao e Utilizao

Exemplo: elaborao de interfaces


Configurador 3D
Usurio seleciona e aplica um material e verifica o resultado (Courtesy of TechniCon Corporation)

Software necessrio para trabalhar com Java 3D


Gratuito http://java.sun.com

Primeiro passo:
Instalar o JavaTM 2 Platform, Standard Edition (J2SETM )
http://java.sun.com/j2se/downloads.html (verso 1.2 ou posterior)

http://javaboutique.internet.com/resources/books/java3d/java3d2_5.html

Introduo
Conceitos de Computao Grfica Linguagem Java A API Java 3D Histrico Aplicaes

Introduo
Instalao e Utilizao

Segundo passo:
Instalar a Java 3D API (verso atual 1.3.1) Verso OpenGL ou DirectX (Windows)
http://java.sun.com/products/java-media/3D/download.html (software e documentao)

Navegador para executar exemplos


necessrio um Plug-in

Instalao e Utilizao

Introduo
Instalao e Utilizao

Referncias
[Bicho 2002] A. L. Bicho, L. G. da Silveira Jr, A. J. A. da Cruz e A. B. Raposo. Programao Grfica 3D com OpenGL, Open Inventor e Java 3D. REIC - Revista Eletrnica de Iniciao Cientfica. v. II, n. I, maro, 2002. http://www.sbc.org.br/reic/edicoes/2002e1/tutoriais/ ProgramacaoGrafica3DcomOpenGLOpenInventoreJava3D.pdf [Barrilleaux 2001] J. Barrilleaux. 3D User Interfaces with Java 3D. Manning Publications Co. 2001. 499 p. [Brown 1999] K. Brown. Ready-to-run Java 3D. New York, NY: John Wiley & Sons, 1999. 400 p. [Lathrop 1997] O. Lathrop. The Way Computer Graphics Works. Wiley Computer Publishing, 1997.

Executar os exemplos
c:\Arquivos de programas\j2sdk1.4.1_05 \demo\java3d Morphing, Texto, Som, ...

Escrever, compilar e executar programas


Comandos:
javac FileName.java java FileName

Ou usar um ambiente de programao


Exemplo: BlueJ (http://www.bluej.org)

Introduo
Instalao e Utilizao

Referncias
[Sowizral 1998] H. Sowizral, K. Rushforth, M. Deering. The JavaTM 3D API Specification. 2nd Edition. Addison-Wesley. 1998. 482 p. [Sun 2003] Sun Microsystems Java 3D Engineering Team. Java 3D API Tutorial. Disponvel em http://developer.java.sun.com/developer/onlineTraining/java3d/. Acesso: setembro/2003. [Tori 2002] R. Tori, R. Nakamura. Desenvolvimento de Jogos para Aprendizagem de Java 3D: Um Estudo de Caso. Workshop de Jogos, 2002. [Walsh 2002] A. E. Walsh. Java 3D: API Jump-start. Upper Saddle River, NJ: Prentice Hall, 2002. 245 p.

Desenvolvimento de programas Java 3D


Importar pacotes
com.sun.j3d.utils.*; javax.media.j3d.*;

Grafo de Cena Canvas3D

Anda mungkin juga menyukai