1 VRJuggler Bruno Barberi Gnecco Rita de Fátima Rodrigues Realidade Virtual Prof. Marcelo Knörich...
-
Upload
katia-de-almada-cunha -
Category
Documents
-
view
217 -
download
0
Transcript of 1 VRJuggler Bruno Barberi Gnecco Rita de Fátima Rodrigues Realidade Virtual Prof. Marcelo Knörich...
![Page 1: 1 VRJuggler Bruno Barberi Gnecco Rita de Fátima Rodrigues Realidade Virtual Prof. Marcelo Knörich Zuffo.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/1.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/2.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/3.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/4.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/5.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/6.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/7.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/8.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/9.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/10.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/11.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/12.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/13.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/14.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/15.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/16.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/17.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/18.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/19.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/20.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/21.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/22.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/23.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062400/570638561a28abb8238fb3dc/html5/thumbnails/24.jpg)
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/