Visão Geral do OpenSG PSI-5787 Realidade Virtual Alexander Cerqueira Silva Richard Ibarra Hilton Fernandes 11/11/2002.

Slides:



Advertisements
Apresentações semelhantes
2008 LCG/UFRJ. All rights reserved. 1 Standard Template Library STL Claudio Esperança Paulo Roma Cavalcanti.
Advertisements

Técnicas e Projeto de Sistemas André Mesquita Rincon Processo de Software Técnico Subsequente – Módulo III.
Banco de Dados Aula 01: Conceitos Básicos
FORTRAN 90 Denise Yumi Takamura.
INTRODUÇÃO À COMPUTAÇÃO PARALELA
Estruturas de Dados para projeto de SGBD. Estruturas de dados analisadas Estruturas de nível Esparso Denso Combinadas Arvore B+ Tabela de hash.
Críticas sobre Extreme Programming Francisco Hillesheim.
Trac é uma ferramenta open source e de interface web para controle de projetos de desenvolvimento de software. O objetivo do software é ajudar o desenvolvedor.
Universidade Federal da Bahia – Centro de Processamento de Dados – Preview Computadores 1 Uma Ferramenta Orientada a Modelos para Geração de Aplicações.
Universidade Federal da Bahia – Centro de Processamento de Dados – Preview Computadores 1 Uma Ferramenta Orientada a Modelos para Geração de Aplicações.
Sistemas Operacionais
Prof. Dr. Helder Anibal Hermini
Criptografia Quântica : Um Estudo
(Como implementar multiplicação e divisão uma vez só :-)
Compressão por Hardware
Modelando com UML CMP 231 – Sistemas Embarcados
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço Collector Treinamento no GRADEp Serviço Collector CollectorDemo e.
Registro de Carta Topográfica
Servidores e Programação Web Redes de Computadores.
Processamento de Imagens
Técnicas de Processamento Imagens
Profa. Graziela Santos de Araújo Algoritmos e Programação II, 2010
Introdução A fim de preparar a geração de código, deve-se relacionar o fonte estático do programa às ações em tempo de execução. Durante a execução, o.
Serviços Integrados na Arquitetura da Internet Apresentação: Fernando Nadal.
Arquitetura da informação Por Luiz Siqueira. O nome é imponente e a técnica está na moda. Contudo, o importante é o seguinte: a Arquitetura de Informação.
Tipografia Livro: Princípios de Disenõ Básicos para la Creación de Sítios WEB Autores: Patrick J. Lynch, Sara Horton.
Planejando seu site Objetivos Abordagem Sílvia Dota.
Metodologias de Construção de Sites
UNIVERSIDADE DE PASSO FUNDO
"Tudo o que acontece, acontece em algum lugar." Gilberto Câmara - INPE Gilberto Câmara - INPE.
"Tudo o que acontece, acontece em algum lugar."
Sistemas de Tutoria Inteligente (STI) Visam proporcionar instrução de forma adaptada a cada aprendiz. STIs adaptam o processo de instrução a determinadas.
CT-300 – Seminário de Tese 1/25 Um Framework Padrão para Simulação de Modelos de Robôs Móveis de Robôs Móveis Juliano A. Pereira Prof. Carlos H. C. Ribeiro.
CE-262 Ontologia e Web Semântica Prof. José M Parente de Oliveira
CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados.
CE-262 Ontologia e Web Semântica Prof. José M Parente de Oliveira Sala 120 – Prédio da Computação Lógica de Descrições.
Juiz Virtual: uma aplicação de modelagem baseada em imagens Paulo Cezar P. Carvalho (IMPA) Flávio Szenberg (PUC-Rio) Marcelo Gattass (PUC-Rio)
Computação Gráfica: Possibilidades e Desafios
Copyright, 1999 © Marcelo Knörich Zuffo PEE-EPUSP Visualização Científica PSI a Aula – Conceitos Básicos de Iluminação.
Aula 1 – 10/09 Introdução ao Curso Marcelo Paiva
Construindo Mundos em. Construindo Mundos em X3D.
Modelos de Iluminação e Tonalização
FUNDAÇÃO CARLOS CHAGAS
SMS: um novo gênero digital e emergente nas aulas de língua Giselda Santos Costa CEFET-PI UNED-Floriano Junho-2007.
Implementação Do JXTA Como Protocolo De Transporte Do JacORB
Business Process Management e Workflow - jBPM Aluno: Filipe Ferraz Salgado Orientador: Francisco Reverbel Novembro 2006.
Já definimos o coeficiente angular de uma curva y = f(x) no ponto onde x = x 0. Derivadas Chamamos esse limite, quando ele existia, de derivada de f em.
M e d A d m i n. Quem é o público alvo da ideia? Profissionais vinculados à área da saúde, em particular, àqueles responsáveis pela administração de medicamentos,
Organização de Sistemas de Computadores
Arquitetura de ComputadoresProf a Luiza Mourelle Apesar da evolução tecnológica, as CPUs continuam mais rápidas que a memória. O problema não é tecnológico,
Desempenho A rápida taxa de melhoria na tecnologia de computadores veio em decorrência de dois fatores: avanços na tecnologia utilizada na construção.
Capítulo 1 Introdução 1.1 O que é um sistema operacional
The Data Warehouse Toolkit
Otimização Aplicada ao Dimensionamento e Operação de Reservatórios
Curso de Programação em C++
Baseado no documento do Prof. Ronaldo Martins da Costa
LINGUAGENS DE PROGRAMAÇÃO
Baseado no documento do Prof. Ronaldo Martins da Costa
Conceitos Básicos de Redes de Computadores e acesso a Internet
Sistemas Operacionais e Windows XP Aula 04 – DCA0302.
04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream.
Visão Computacional Shape from Shading e Fotométrico Eséreo
Sistemas de Informação Prof. Me. Everton C. Tetila Modelo de dados relacional Banco de Dados I.
Visão Computacional Formação da Imagem
Programação Concorrente com Thread Java
Robótica: Sistemas Sensorial e Motor
Computação Gráfica Geometria de Transformações
OpenGL Computação Gráfica. O que é OpenGL? Uma linguagem de programação gráfica de baixo nível Projetada para gráfico interativo 2D e 3D Uma interface.
Introdução Ciência da Computação estudo de algoritmos –ÊNFASE ao estudo de DADOS armazenamento manipulação refinamento (a partir de dados cru) estrutura.
INPE / CAP-334 Celso L. Mendes Aula 4-D(1) Reestruturação de Programas em Sistemas Vetoriais (II) Tópicos: Suporte à Paralelização Vetorização.
Transcrição da apresentação:

Visão Geral do OpenSG PSI-5787 Realidade Virtual Alexander Cerqueira Silva Richard Ibarra Hilton Fernandes 11/11/2002

Agenda Introdução Conceito de grafo de cena Panorama dos grafos de cena Estrutura de dados do OpenSG varreduras Geometria Tratamento de estados Concorrência Conclusão

Introdução Objetivo do trabalho Saga até chegar ao final Visão geral do trabalho Fontes de informação

Conceito de grafo de cena Grafo como associação entre pares de elementos Estrutura genérica que permite descrever cenas, entre outras coisas Surge naturalmente: –VRML –X3D –…

Panorama dos grafos de cena (1/10) Mudança de terminologia – Framework que manipula grafos de cena

Panorama dos grafos de cena (2/10) Exemplos –OpenSG ( –Open Inventor (oss.sgi.com/projects/inventor) –Open Scene Graph ( –Performer (

Panorama dos grafos de cena (3/10) Com exceção do Performer, todos outros são Software Livre ou de código aberto/ opensource ; Todos baseados no C++, menos o Performer, que usa principalmente C.

Panorama dos grafos de cena (4/10) Integram-se com VR Juggler –Performer –Open Scene Graph –OpenSG Portanto, podem constituir parte de uma aplicação completa de Realidade Virtual.

Panorama dos grafos de cena (5/10) Importante: –Aplicativos de grafo de cena não pretendem ser solução completa de Realidade Virtual; –Enfocam um ponto da criação de imagens em 3D; –Não tratam de dispositivos, como trackers.

Panorama dos grafos de cena (6/10) OpenGL tem gerenciamento de dados muito limitado: –Coleção de funções de baixo nível para acesso otimizado ao hardware gráfico; –Processamento principalmente funcional – modo imediato.

Panorama dos grafos de cena (7/10) Ferramentas de grafos de cena oferecem gerenciamento organizado de dados que falta ao OpenGL. –OpenSG organiza dados de cena e suas visões,

Panorama dos grafos de cena (8/10) OpenSG visa tratar de modelos de grandes dimensões e CAD.

Panorama dos grafos de cena (9/10) Outras metas de projeto do OpenSG: – Multithreading e paralelismo: processadores tendem ao SMT ( Simultaneous Multithreading ); aglomerados de computadores ( clusters ) pessoais com poder crescente;

Panorama dos grafos de cena (10/10) Outras metas de projeto do OpenSG ( cont. ): – Extensibilidade : Novos tipos de dados herdando de anteriores; Uso ótimo, mesmo de hardware novo; Simplificação do desenvolvimento de aplicações; –Replicação e sincronização efetuados de modo elegante; –Uso intenso de padrões de projeto de software ( OOD patterns ).

Estrutura de dados (1/10) Estrutura de Nó –O que é nó –Propriedades –Tipos de Nós Aspectos –replicação Reflexividade Padrões de projeto de software

Estrutura de dados (2/10) Estrutura de Nó –O que é nó: Elemento básico do grafo de cena, usado para conter geometria e propriedades dos objetos de cena, e suas transformações e operações.

Estrutura de dados (3/10) Estrutura de Nó ( cont.) –Propriedades: NodeCore : tipo de dados do nó –(agrupamento, representação de materiais…); Node : localização e associações: –Posição e volume; –Lista de nós subordinados a ele (filhos/ children ); –Apontador para nó ao qual este se subordina (pai/ parent ).

Estrutura de dados (4/10) Estrutura de Nó ( cont.) –Posição no grafo Apenas nós filhos são representados.

Estrutura de dados (5/10) Estrutura de Nó ( cont.) –Tipos de Nós – conteúdo/ core : Geometria; Texto e derivados –Texto de bitmap; –Texto com textura; –Texto geométrico; Ambiente: nó global –um para todo grafo.

Estrutura de dados (6/10) Estrutura de Nó ( cont.) –Tipos de Nós – conteúdo/ core ( cont. ): Grupo e seus derivados: –Alternativa e chaveador/ switch ; –LOD, ou Level of Detail ; –Luz e derivados –Transformações (rotação, translação, escala).

Estrutura de dados (7/10) Aspectos: –Cópias dos dados feitas localmente, a cada thread, a cada processo paralelo. Threads são linhas de execução subordinadas a um processo principal e que compartilham com ele sua memória (espaço de endereçamento);

Estrutura de dados (8/10) Aspectos: ( cont. ) –Replicação é minimizada: Copy On Write : apenas dados a ser escritos são replicados – dados para leitura não;

Estrutura de dados (9/10) Aspectos: ( cont. ) –Sincronização é minimizada: Apenas dados de fato alterados são comunicados; –Listas de alterações, ou changelists ; –Combinadas hierarquicamente, das folhas para raiz;

Estrutura de dados (10/15) Aspectos: ( cont. ) –Sincronização é minimizada ( cont.): O que ocorre quando dois threads alteram os mesmos dados? Conflito é resolvido arbitrariamente, pelo último nó a informar a alteração.

Estrutura de dados (11/15) Aspectos: ( cont. ) –Baseiam-se em estrutura de ponteiros: Multicampo ( Mfield) é estrutura que contém apontadores para seus dados, Dados são MFieldData -- registro de dados; Aspectos usam apenas dados que vão alterar –Isto otimiza uso do cache.

Estrutura de dados (11/15) Aspectos: ( cont. )

Estrutura de dados (12/15) Reflexividade: –Capacidade de um objeto saber que dados ele possui. –Nativa no Java; –Ausente no C++. –Teve de ser implementada pelo OpenSG.

Estrutura de dados (13/15) Reflexividade: ( cont.) –Útil para ampliar flexibilidade e expansibilidade; –Facilita mecanismo de aspectos.

Estrutura de dados (14/15) Padrões de projeto de software -- Patterns : –Coletânea de soluções já testadas de estruturas de classe e esboços de algoritmos; –Em tecnologia do objeto, são Considerados técnica em produção, não mais de pesquisa; Catálogo e uso tem aumentado; Bastante usados em Java;

Estrutura de dados (15/15) Padrões de projeto de software -- Patterns ( cont. ): –Usados para flexibilidade e encapsulamento: ClassFactory para criar classes parametrizadamente; Prototypes para clonar objetos em tempo de execução; Decorator para fazer delegação dinâmica de classes.

Varreduras (1/9) Definição Ações –Renderização –Intersectar Varreduras adaptadas –Varreduras complexas –Varreduras mais simples

Varreduras (2/9) Operação básica de um grafo de cena: Inicia no no raiz e segue ate nó procurado Busca em profundidade: –Passa por todos nós filhos antes de iniciar nó irmão Pode ser definida pelo sistema de grafos de cena ou por uma aplicação

Varreduras (3/9) Ações –São classes encapsulando diversas varreduras –Dependendo da espécie do nó, permite executar diferentes operações em diferentes filhos Renderização Intersectar

Varreduras (4/9) Ações (cont.) Renderização: –Renderização == reboque??? Tradução literal; Transforma wireframe em superfície contínua; Equivalente a reboque em prédios americanos –Construídos com vigas

Varreduras (5/9) Ações (cont.) Renderização ( cont.): –Através do grafo, renderização é otimizada Minimiza alterações do estado do baixo nível: –Melhora uso do pipeline (linha de montagem) gráfica; Renderização é parte mais importante de sistema scenegraph, –Onde maior esforço de trabalho é investido.

Varreduras (7/9) Ações ( cont. ) Intersectar –Teste de geometria contra um raio; –Pode ser usado para testes simples de colisão –Simplificado pelos mecanismos de alto nível para varredura do grafo

Varreduras (8/9) Ações ( cont. ) Intersectar ( cont. ) –Potencial substituição de ray tracing ; –Seria pouco eficiente, pois este usa algoritmos especializados.

Varreduras (9/9) Varreduras adaptadas –Varreduras complexas Tornam vantajoso herdar de formas existentes de varredura –Varreduras mais simples: Uso de hook, –Função do usuário chamada em certos eventos; –Em OpenSG, seu nome é traverse().

Geometria (1/11) É o mais importante tipo de nó do gráfico de cena Engloba os dados que serão renderizados Vértices Primitivas Indexação Acesso

Geometria (2/11) Vértices –Propriedades dos Vértices Normal Coordenadas de Cor Coordenadas de Textura

Geometria (3/11) Vértices ( cont. ) –Vetores STL ou similares com tamanho dinâmico OpenSG usa diferentes tipos de dados através de atributo da estrutura chamado Propriedades

Geometria (4/11) Primitivas –Estruturas formadas pela conexão de vértices: Triângulos, quadrados, polígonos… –Primitivas misturadas usando propriedades dos tipos. –Grande flexibilidade: combinação de primitivas homogêneas e heterogêneas.

Geometria (5/11) Indexação –Índice Único –Índice Múltiplos Indices Intercalados

Geometria (6/11) Indexação ( cont. ) Índice único

Geometria (7/11) Indexação ( cont. ) Índice múltiplo

Geometria (8/11) Acesso –Índice Único –Índice Múltiplos Indices Intercalados

Geometria (9/11) Acesso Como é tratamento dos nós que podem conter toda variante de primitiva e tipo de dados –Dois mecanismos: Interface Genérica -- esconde diferenças de dados

Geometria (10/11) Acesso ( cont. ) –Dois mecanismos: ( cont.) Iteradores: –Tipos: Primitiva: PrimitiveIterator Face: FaceIterator Triângulo: TriangleIterator

Geometria (11/11) Acesso ( cont. ) –Dois mecanismos: ( cont.) Iteradores: ( cont.) –Atravessa estrutura como se fosse vetor linear; –Acesso direto a valores das primitivas Filtra elementos não pertencentes aos tipos

Tratamento de estados (1/6) Criação de grafo de cena Transformação Luzes Material

Tratamento de estados (2/6) Criação de grafo de cena –Por geometria –Por superfície, iluminação e atributos de transformação

Tratamento de estados (3/6) Transformação Influencia todo nó sob ela, incluindo outras transformações –Rotação –Translação –Escala

Tratamento de estados (4/6) Luz –Fonte de luz: –Define posição e orientação da fonte de luz – Beacon : nó que define posição e orientação da luz

Tratamento de estados (5/6) Material –Quase mapeamento de propriedades materiais do OpenGL Cores: –Emissiva, ambiente, difusa e especular Brilho –Transparência não vem de OpenGL

Tratamento de estados (6/6) Material ( cont. ) –Classes: SimpleMaterial : –base SimpleTexturedMaterial: –Derivada –Inclui cópia de textura –Parâmetros de sua manipulação: Filtros de textura

Concorrência (1/11) Processamento concorrente e paralelo Tipos de concorrência Tipos de paralelismo Problemas dos threads Problemas dos aglomerados ( clusters ) Solução do OpenSG para threads Solução do OpenSG para aglomerados

Concorrência (2/11) Processamento concorrente e paralelo –Concorrência: Processamento independente de várias execuções, sem seqüência específica Oposto a seqüencial Pode ser realizado em uma única CPU: –Mesmo aquelas do tipo mais simples –Na verdade, é muito antigo

Concorrência (3/11) Processamento concorrente e paralelo ( cont. ) –Paralelismo: Processamento simultâneo Subtipo de processamento concorrente Tem história mais recente do que processamento concorrente. Multiplicação teórica do poder de processamento Problemas de sincronização e comunicação

Concorrência (4/11) Tipos de concorrência –Múltiplas formas, que não vêm ao caso: Cooperativo, preemptivo etc. –Através de processos: Pilha e espaços de endereçamento e diferentes Código compartilhado em alguns casos; –Através de threads : Espaços de endereçamento compartilhados; Pilhas distintas; Código sempre compartilhado.

Concorrência (5/11) Tipos de concorrência ( cont. ) – Threads e processos têm sido valorizados: Processadores SMT favorecem threads ; Máquinas SMP ( Symmetric Multiprocessor ) favorecem processos;

Concorrência (6/11) Tipos de paralelismo: –Quanto a comunicação: Memória compartilhada; Memória distribuída (passagem de mensagens)

Concorrência (7/11) –Modelos de cooperação: Centralizado: –Master/slave (mestre/escravo) –Cliente/servidor –Problema: Single point of failure ; Descentralizado: –SPMD ( Single Program/Multiple Data ) –Mais tolerante a falhas

Concorrência (8/11) Problemas dos threads –Sincronização Controle do fluxo do aplicativo; Controle do acesso a dados: – Locks ou travas; –Consistência de dados: Threads errados ou maliciosos podem corromper dados.

Concorrência (9/11) Problemas dos aglomerados ( clusters ) –Comunicação lenta através da rede; Relação entre comunicação e computação; –Problema de sincronização do aplicativo entre máquinas; Problema maior em aplicações gráficas com vários monitores

Concorrência (10/11) Solução do OpenSG para threads –Replicação resolve uso de locks /travas; –Sincronização de dados controlada por grafo: Lista de alterações diz o que deve ser comunicado Alterações conflituosas não são combinadas

Concorrência (11/11) Solução do OpenSG para aglomerados –Divisão de processos em clientes e servidores; –Servidores informam apenas clientes registrados; –Estrutura de listas de alteração ( changelists ) minimiza quantidade de dados a comunicar.

Conclusão Ferramentas de grafo de cena são úteis; OpenSG é implementação inteligente e flexível; –Usa técnicas modernas de projeto e programação Adaptada a threads e processamento em cluster ; Organiza dados 3D –Facilita criação de aplicativo.

Bibliografia Open SG Forum – OpenSG: Basic Concepts OpenSG Forum Whitepaper – OpenSG – An Open Source Scenegraph –Fontes do OpenSG VR Juggler –Scene Graph Rendering