1 / 32

Tópicos de Informática Avançada II

Tópicos de Informática Avançada II. Processo de Desenvolvimento de Ambientes Virtuais Java3D Prof. Régis Albuquerque. Criação de Ambientes Virtuais.

madison
Download Presentation

Tópicos de Informática Avançada II

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tópicos de Informática Avançada II • Processo de Desenvolvimento de Ambientes Virtuais • Java3D Prof. Régis Albuquerque

  2. 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.

  3. 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).

  4. JAVA3D - INTRODUÇÃO JAVA: • Linguagem de programação • Orientada a objetos • Independente de arquitetura (multiplataforma) • Portável • Robusta • Segura • Interpretada • Etc...

  5. 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

  6. JAVA3D - INTRODUÇÃO • Plataforma • Ambienteonde um programa é executado, incluindo software e hardware • Como plataforma, Java possuidoiscomponentes • JVM (Java Virtual Machine - interpretador Java - runtime Java) • API (Java Application Programming Interface)

  7. 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

  8. 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

  9. 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

  10. 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

  11. JAVA3D - HISTÓRICO • Idéia • Construir uma API que fosse independente de plataforma • “Prima” de VRML • Alguns componentes familiares • Muitos componentes novos • 1998

  12. 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)

  13. 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

  14. 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

  15. JAVA3D – Exemplo de um grafo de cena

  16. 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

  17. GRAFO DE CENAEXEMPLO CONCRETO(Projeto de um escritório)

  18. 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

  19. 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.*;

  20. OlaUniverso – Corpo da Classe public class OlaUniverso extends Applet { public BranchGroupcriaGrafoCena() { ... } public OlaUniverso() { ... } public static void main(String[] args) { new MainFrame(new OlaUniverso(), 256,256); } }

  21. OlaUniverso – criaGrafoCena() public BranchGroupcriaGrafoCena() { BranchGroupobjRoot = new BranchGroup(); Transform3D rotateY = new Transform3D(); rotateY.rotY(.6); TransformGroupobjTrans = new TransformGroup(rotateY); objRoot.addChild(objTrans); objTrans.addChild(new ColorCube(0.4)); objRoot.compile(); return objRoot; }

  22. OlaUniverso – OlaUniverso() public OlaUniverso() { setLayout(new BorderLayout()); GraphicsConfigurationconfig = SimpleUniverse.getPreferredConfiguration(); Canvas3D c = new Canvas3D(config); add("Center", c); SimpleUniverse u = new SimpleUniverse(c); BranchGroup scene = criaGrafoCena(); u.getViewingPlatform().setNominalViewingTransform(); u.addBranchGraph(scene); }

  23. Execução - OlaUniverso

  24. 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.

  25. 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.

  26. CANVAS3D • A classe Canvas3D fornece o canvas ou seja, uma área de desenho, onde é realizada a visualização 3D.

  27. 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.

  28. 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.

  29. 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.

  30. Exercício • Criação de Grafo de Cena do Ambiente Virtual Idealizado.

More Related