1 vrjuggler bruno barberi gnecco rita de fátima rodrigues realidade virtual prof. marcelo knörich...

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

Upload: katia-de-almada-cunha

Post on 07-Apr-2016

217 views

Category:

Documents


0 download

TRANSCRIPT

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

1

VRJugglerVRJugglerBruno Barberi Gnecco

Rita de Fátima Rodrigues

Realidade VirtualProf. Marcelo Knörich Zuffo

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

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

3

Filosofia de desenvolvimentoFilosofia de desenvolvimentoSem 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: 1 VRJuggler Bruno Barberi Gnecco Rita de Fátima Rodrigues Realidade Virtual Prof. Marcelo Knörich Zuffo

4

Aplicativos objetoAplicativos objetoModificações em tempo de execuçãoBaixa interdependênciaInterfaces estáveis

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

5

Desenvolvimento de Desenvolvimento de programasprogramas

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

}

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

6

Aplicativos como objetosAplicativos como objetosDerivação de classes permite minimizar

trabalhoPrograma pode ser derivado de classes

mais avançadas, como:– GlApp (OpenGL)– PfApp (Performer)– OpenSGApp– VTKApp

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

7

Estrutura de classesEstrutura de classes

vjGlAppdrawcontextInitcontextClose

vjApp

initapiInitexit…

userOglAppInitapiInitdrawpreFramepostFrame

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

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

9

Portando aplicativosPortando aplicativosPortar 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: 1 VRJuggler Bruno Barberi Gnecco Rita de Fátima Rodrigues Realidade Virtual Prof. Marcelo Knörich Zuffo

10

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

11

Estudo comparativoEstudo comparativoOutras soluções semelhantes existem

– CAVElib– Syzygy– Chromium– FreeVR– DICElib

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

12

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

13

CAVElib (II)CAVElib (II)Funcionamento semelhante ao GLUT, mas

muito mais poderosoCalcula janelas e projeção perspectiva

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

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

14

Exemplo de CAVElibExemplo de CAVElibmain(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: 1 VRJuggler Bruno Barberi Gnecco Rita de Fátima Rodrigues Realidade Virtual Prof. Marcelo Knörich Zuffo

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

16

SyzygySyzygyHigh-End VR on Whatever Random Crap

“You have Lying Around”Desenvolvida para clusters. Tile renderingOpen sourceUniversidade de

Illinois at Urbana

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

17

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

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

18

ChromiumChromiumSolução para divisão de renderização (tile

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

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

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

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

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

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

23

Conclusão IIConclusão IIIntegraçã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: 1 VRJuggler Bruno Barberi Gnecco Rita de Fátima Rodrigues Realidade Virtual Prof. Marcelo Knörich Zuffo

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/