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

VRJuggler

Embed Size (px)

DESCRIPTION

VRJuggler. Bruno Barberi Gnecco Rita de Fátima Rodrigues. Realidade Virtual Prof. Marcelo Knörich Zuffo. 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 - PowerPoint PPT Presentation

Citation preview

Page 1: VRJuggler

1

VRJugglerVRJuggler

Bruno Barberi Gnecco

Rita de Fátima Rodrigues

Realidade Virtual

Prof. Marcelo Knörich Zuffo

Page 2: VRJuggler

2

Programação da ApresentaçãoProgramaçã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

Page 3: VRJuggler

3

Filosofia de desenvolvimentoFilosofia de desenvolvimento

Sem main(): “Don't call me, I'll call you”Objetos da aplicação derivam de classes

baseDesenvolvimento de aplicativo via “Filling

in the Blanks”

Page 4: VRJuggler

4

Aplicativos objetoAplicativos objeto

Modificações em tempo de execuçãoBaixa interdependênciaInterfaces estáveis

Page 5: VRJuggler

5

Desenvolvimento de Desenvolvimento de programasprogramas

Programa é um objeto:class userApp : public vrj::App {public:init();preFrame();postFrame();...

}

Page 6: VRJuggler

6

Aplicativos como objetosAplicativos 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

Page 7: VRJuggler

7

Estrutura de classesEstrutura de classes

vjGlAppdrawcontextInitcontextClose

vjApp

initapiInitexit…

userOglAppInitapiInitdrawpreFramepostFrame

Page 8: VRJuggler

8

Aplicativo 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

Page 9: VRJuggler

9

Portando aplicativosPortando 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().

Page 10: VRJuggler

10

NetJugglerNetJuggler

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.

Page 11: VRJuggler

11

Estudo comparativoEstudo comparativo

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

Page 12: VRJuggler

12

CAVElibCAVElib

Primeira biblioteca do gêneroPadrão para aplicativos CAVE em SGIPaga, código fechadoInicialmente só para IRIX, agora também

para SUN, HPUX, LINUX e WIN32

Page 13: VRJuggler

13

CAVElib (II)CAVElib (II)

Funcionamento semelhante ao GLUT, mas muito mais poderoso

Calcula janelas e projeção perspectiva automaticamente.

Compatível com OpenGL e PerformerAbstração de inputSuporta multiprocessamento

Page 14: VRJuggler

14

Exemplo de CAVElibExemplo 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

Page 15: VRJuggler

15

CAVElib: prós e contrasCAVElib: 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

Page 16: VRJuggler

16

SyzygySyzygy

High-End VR on Whatever Random Crap “You have Lying Around”

Desenvolvida para clusters. Tile renderingOpen sourceUniversidade de

Illinois at Urbana

Page 17: VRJuggler

17

Syzygy IISyzygy II

Implementa um “SO distribuído”: PhleetInstalação complexaSuporte a inputImplementa scene graph e som 3D

Page 18: VRJuggler

18

ChromiumChromium

Solução para divisão de renderização (tile rendering)

Nova versão da WireGLEmula OpenGLExtensívelOpen sourceÚnico ponto de vista (futuro?)

Page 19: VRJuggler

19

FreeVRFreeVR

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

Page 20: VRJuggler

20

DICElibDICElib

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.

Page 21: VRJuggler

21

Estudo de caso: CAVEQuake 3Estudo de caso: CAVEQuake 3

Escrito por Paul Rajlich ([email protected]) http://brighton.ncsa.uiuc.edu/~prajlich/ Suporta 7 interfaces diferentes:

– CAVElib– VRJuggler– GLUT– SGI MPSDK– FreeVR– SDL– GLX– [Syzygy]

Page 22: VRJuggler

22

Conclusão IConclusã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

Page 23: VRJuggler

23

Conclusão IIConclusão II

Integração com várias APIs: OpenGL, Performer, OpenSG, VTK…

ExtensívelComo 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”

Page 24: VRJuggler

24

ReferênciasReferências

VRJuggler: http://www.vrjuggler.org CAVElib: http://www.cavelib.com Syzygy: http://www.isl.uiuc.edu/ClusteredVR/

ClusteredVR.htm FreeVR: http://www.freevr.org/ Chromium: http://chromium.sourceforge.net DICElib: http://www.lsi.usp.br/~brunobg CAVEQuake: http://brighton.ncsa.uiuc.edu/~prajlich/