A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Visão Geral do OpenSG PSI-5787 Realidade Virtual Alexander Cerqueira Silva Richard Ibarra Hilton Fernandes 11/11/2002."— Transcrição da apresentação:

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

2 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

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

4 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 –…

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

6 Panorama dos grafos de cena (2/10) Exemplos –OpenSG (www.opensg.org) –Open Inventor (oss.sgi.com/projects/inventor) –Open Scene Graph (www.openscenegraph.org) –Performer (www.sgi.com/products/performer)

7 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.

8 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.

9 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.

10 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.

11 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,

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

13 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;

14 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 ).

15 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

16 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.

17 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 ).

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

19 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.

20 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).

21 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);

22 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;

23 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;

24 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.

25 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.

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

27 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.

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

29 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;

30 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.

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

32 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

33 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

34 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

35 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.

36 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

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

38 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().

39 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

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

41 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

42 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.

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

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

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

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

47 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

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

49 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

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

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

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

53 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

54 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

55 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

56 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

57 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

58 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

59 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.

60 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;

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

62 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

63 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.

64 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

65 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

66 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.

67 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.

68 Bibliografia Open SG Forum http://www.opensg.org http://www.opensg.org – OpenSG: Basic Concepts OpenSG Forum Whitepaper – OpenSG – An Open Source Scenegraph –Fontes do OpenSG VR Juggler http://www.vrjuggler.org http://www.vrjuggler.org –Scene Graph Rendering


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

Apresentações semelhantes


Anúncios Google