1 VRJuggler Bruno Barberi Gnecco Rita de Fátima Rodrigues Realidade Virtual Prof. Marcelo Knörich Zuffo.

Slides:



Advertisements
Apresentações semelhantes
Noções de Sistemas Operacionais
Advertisements

Comunicação entre processos distribuídos
Tecnologia Hipermídia e Multimídia
Vamos abordar o exemplo
Programação Orientada aos Objectos Paulo Marques Departamento de Eng. Informática Universidade de Coimbra Set/2005 Uma Introdução Usando.
Processos no Unix e Linux
Por Fernando B., João Victor, Rafael F. e Yulle..
Chapter 4: Threads.
Padrões GoF - Strategy.
INTRODUÇÃO À PROGRAMAÇÃO
Linguagens de programação
Concepts and Capabilities
Por Que Orientação a Objetos?
The Industry’s Foundation for High Performance Graphics
Curso de Programação em C++
Introdução a Programação Orientada a Objetos
Professor Fernando Luís
Concorrência em Java Threads em Java.
Concorrência em Java Threads em Java.
Concorrência em Java Threads em Java.
Aula prática - análise contextual
JAVA Linguagem Ambiente de Desenvolvimento
Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.
Linguagens de programação
Desenvolvimento de Jogos e Entretenimento Digital
Concorrência entre Threads Java
Conhecendo os Sistemas Operacionais
MapReduce Conceitos e Aplicações
Detalhes sobre o curso
Noções de Software Escola Almirante Soares Dutra
Cristiano Soares Rafael di Lego Roberto Nemirovsky Thiago Nascimento
SISTEMAS OPERACIONAIS
XIV Jornada de Cursos .NET com C# Antônio Júnior Bruno Inojosa.
Efficient Java Communication Protocols on High-speed Cluster Interconnects Alexandre Almeida Felipe Severino.
Universidade de Mogi das Cruzes Tec
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Sistemas Operacionais
SISTEMAS OPERACIONAIS I
Regras de escopo Escopo: trecho de codificação no qual o identificador possui significado Escopo de função: identificador válido dentro do trecho de uma.
Sistemas Distribuídos
José Francisco PHP & MySQL. Os slides originais são parte do material de cursos anteriores do curso de PHP, ministrados por Sérgio Clemente.
Acabias Marques Luiz. I - Introdução ao Ruby Parte 1 – Introdução a linguagem  O que é Ruby  Instalação  O IRB  Operadores Aritméticos  Tipos de.
Computação Gráfica – Introdução ao OpenGL
Algumas versões Mac. Macintosh Operanting System A ultima versão Mac foi lançada em 1984, pela Apple. O Macintosh Operanting System é a denominação do.
ARToolkit Ademir José de Carvalho Junior Danilo Cavalcanti Torres
ARToolkit André Braga (ab2) Alysson Feitoza (afs5) Danilo Lima (dlv)
PLATAFORMAS MULTIMÍDIA
Desenvolvimento de Software Dirigido a Modelos
1 Computação gráfica em arquiteturas paralelas Bruno Barberi Gnecco PEE 5846 Prof. Takeo.
OGRE 3D Open Source Graphics Engine Seminário Introdução à Multimídia.
SISTEMAS OPERACIONAIS MACH EPOS
Introdução a Programação Orientada a Objetos
A High Performance Java Middleware with a Real Application HUERT, Fabrice; CAROMEL, Denis; Bal, Henri E. Supercomputing 2004 Trabalho desenvolvido por:
JR: Flexible Distributed Programming in an Extended Java Elmário Gomes Dutra Jr. Gustavo Romano.
Multiparadigma das Comunicações em Java para Grid Computing Fernanda R. Ramos Luiz Felipe Marco Eiterer Profº Alcides Calsavara, Ph.D.
Engenharia de Sistemas Embarcados Aula 5: Um Conjunto Básico de Ferramentas.
Pandora's Box Graphics Engine Uma engine gráfica com aplicações em visualização científica Andrew T. N. KurauchiVictor K. Harada Orientador: Prof. Dr.
Grupo: Antônio Inocêncio Francisco Ícaro Filipe Araújo Guilherme Barreto Leonardo Vilaça Márcio Dias Thiago Gomes.
Arquitetura de computadores
Apresentação Assuntos : Grids OurGrid
1 VRJuggler Bruno Barberi Gnecco Rita de Fátima Rodrigues Realidade Virtual Prof. Marcelo Knörich Zuffo.
Jorge Zavaleta PVM vs MPI. Introdução Objetivos do MPI Implementações e definições processos dinâmicos Contextos Operações não bloqueantes Portabilidade,heterogeneidade.
VIRTUALIZAÇÃO - INTRODUÇÃO Na área de TI; O que é sistema legado? É o termo utilizado em referência aos sistemas computacionais de uma organização que,
COMPILADORES 02 Prof. Marcos. COMPILADORES Do Programa à Execução Computadores das mais variadas arquiteturas têm funcionamento:
UNIVERSIDADE CATÓLICA DE PELOTAS CENTRO POLITÉCNICO CURSO DE CIÊNCIA DA COMPUTAÇÃO Redes de Computadores Ferramenta NTop (Network Traffic Probe) Explorador.
Orientação a Objetos - Programação em C++ Slides 17C: Programação Visual ou Orientada a Objetos Gráficos (Formulários, Botões, Caixas de Texto etc) – Exemplificado.
Pandora FMS Leandro Ferreira Canhada
Curso Superior de Tecnologia em Redes de Computadores Projeto Integrador I Seminário Final Julio Borba SERVIÇO NACIONAL DE APRENDIZAGEM.
UNIVERSIDADE CATÓLICA DE PELOTAS CENTRO POLITÉCNICO CURSO DE CIÊNCIA DA COMPUTAÇÃO Instalação e análise de gráficos da ferramenta NTop Redes de Computadores.
Transcrição da apresentação:

1 VRJuggler Bruno Barberi Gnecco Rita de Fátima Rodrigues Realidade Virtual Prof. Marcelo Knörich Zuffo

2 Programação da Apresentação Visão Geral (Rita) –O que é VRJuggler ? –Histórico –Arquitetura –Object Application Visão prática (Bruno) –Estrutura geral de um programa VRJuggler –Exemplo simples –Comparação com outras soluções –Conclusão

3 Filosofia de desenvolvimento Sem main(): “Don't call me, I'll call you” Objetos da aplicação derivam de classes base Desenvolvimento de aplicativo via “Filling in the Blanks”

4 Aplicativos objeto Modificações em tempo de execução Baixa interdependência Interfaces estáveis

5 Desenvolvimento de programas Programa é um objeto: class userApp : public vrj::App { public: init(); preFrame(); postFrame();... }

6 Aplicativos como objetos Derivação de classes permite minimizar trabalho Programa pode ser derivado de classes mais avançadas, como: –GlApp (OpenGL) –PfApp (Performer) –OpenSGApp –VTKApp

7 Estrutura de classes vjGlApp draw contextInit contextClose vjApp init apiInit exit … userOglApp Init apiInit draw preFrame postFrame

8 Aplicativo int main (int argc, char* argv[]) { vjKernel* kernel = vjKernel::instance(); simpleApp* app = new simpleApp(); kernel->loadConfigFile(...); kernel->start(); kernel->setApplication(app); while ( ! exit ) { // sleep } Instancia a kernel Instancia o aplicativo Configura a kernel Inicia a kernel Especifica o aplicativo

9 Portando aplicativos Portar aplicativos OpenGL, CAVElib: “receita de bolo” Problema: comandos compilados (p.e., display lists) não são compartilhados entre contextos –Em VR Juggler estas inicializações devem ir em vrj::GlApp::contextInit().

10 NetJuggler Layer sobre o VRJuggler. Torna um cluster gráfico em uma máquina VRJuggler single image. Executa a distribuição e sincronia de dados e computações entre os nós automaticamente. Implementação sobre MPI.

11 Estudo comparativo Outras soluções semelhantes existem –CAVElib –Syzygy –Chromium –FreeVR –DICElib

12 CAVElib Primeira biblioteca do gênero Padrão para aplicativos CAVE em SGI Paga, código fechado Inicialmente só para IRIX, agora também para SUN, HPUX, LINUX e WIN32

13 CAVElib (II) Funcionamento semelhante ao GLUT, mas muito mais poderoso Calcula janelas e projeção perspectiva automaticamente. Compatível com OpenGL e Performer Abstração de input Suporta multiprocessamento

14 Exemplo de CAVElib main(int argc,char **argv) { CAVEConfigure(&argc,argv,NULL); app_shared_init(argc,argv); CAVEInit(); CAVEInitApplication(app_init_gl,0); CAVEDisplay(app_draw,0); app_compute_init(argc,argv); while (!getbutton(ESCKEY)) { app_compute(); } CAVEExit(); } Configura Cavelib Inicializa Cavelib Callback de inicialização OpenGL Callback de desenho Termina Cavelib

15 CAVElib: prós e contras Prós –Padrão conhecido –Sistema desenvolvido e estável –Portabilidade –Base de programas grande –Simples de usar Contras –Código fechado –Cara –Som é suportado por biblioteca externa

16 Syzygy High-End VR on Whatever Random Crap “You have Lying Around” Desenvolvida para clusters. Tile rendering Open source Universidade de Illinois at Urbana

17 Syzygy II Implementa um “SO distribuído”: Phleet Instalação complexa Suporte a input Implementa scene graph e som 3D

18 Chromium Solução para divisão de renderização (tile rendering) Nova versão da WireGL Emula OpenGL Extensível Open source Único ponto de vista (futuro?)

19 FreeVR Solução open source independente Suporta diversos sistemas de I/O Desenvolvido para ser fácil de rodar Portável: –SGI IRIX 6.x (o32, n32 & 64 bit) –Linux –BSD Unix (Free/Net/Open) –Solaris –Macintosh OS/X (Darwin w/ XFree86) –Cygwin (Undergoing development) –HP-UX –Tru-64

20 DICElib Biblioteca com sincronia (barreira) e compartilhamento de dados (síncrono). Não suporta input, configurações de visualização Escrita sobre sockets: TCP e UDP. Programas alvo: pouco compartilhamento de memória, alta taxa de sincronia. Poucas modificações necessárias do programa single-view para executar no cluster. Estável, nova versão em curso.

21 Estudo de caso: CAVEQuake 3 Escrito por Paul Rajlich Suporta 7 interfaces diferentes: –CAVElib –VRJuggler –GLUT –SGI MPSDK –FreeVR –SDL –GLX –[Syzygy]

22 Conclusão I Alternativa poderosa e portável Arquitetura complexa com muitas abstrações –Perda de performance –Curva de aprendizado Estruturação lógica do código e do programa –Pode ser difícil portar programas existentes (ou não) –Programas são sempre semelhantes e fáceis de entender e modificar Instalação e configuração não triviais

23 Conclusão II Integração com várias APIs: OpenGL, Performer, OpenSG, VTK… Extensível Como disse o Stroustroup: “C makes it easy for you to shoot yourself in the foot. C++ makes that harder, but when you do, it blows away your whole leg”

24 Referências VRJuggler: CAVElib: Syzygy: FreeVR: Chromium: DICElib: CAVEQuake: