go3d a 3d graphics engine n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Go3D! A 3D Graphics Engine PowerPoint Presentation
Download Presentation
Go3D! A 3D Graphics Engine

Loading in 2 Seconds...

play fullscreen
1 / 30

Go3D! A 3D Graphics Engine - PowerPoint PPT Presentation


  • 95 Views
  • Uploaded on

Go3D! A 3D Graphics Engine. Carlos Tosin. Divisão. Estrutura dividida em 4 componentes Core (46 classes) Áudio (4 classes) Script (4 classes) Renderer (37 classes). Componente - Core. Implementação de serviços básicos da engine Engine Environment Gerenciamento de memória

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Go3D! A 3D Graphics Engine' - bevis-solomon


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
divis o
Divisão
  • Estrutura dividida em 4 componentes
    • Core (46 classes)
    • Áudio (4 classes)
    • Script (4 classes)
    • Renderer (37 classes)
componente core
Componente - Core
  • Implementação de serviços básicos da engine
    • Engine Environment
    • Gerenciamento de memória
    • Gerenciamento de mensagens
    • Mecanismo de log
    • Gerenciamento de janela e eventos
    • RTTI – Runtime Type Information
    • Serialização de objetos
    • Streaming
    • Utilitários
    • Estruturas de Dados
componente core engine environment
Componente – CoreEngine Environment
  • Ambiente de execução da engine
  • Ponto de entrada para a engine
  • Fornece acesso aos componentes da engine
  • É único durante toda a execução
  • Suporte à arquivo de configuração
componente core gerenciamento de mem ria
Componente – CoreGerenciamento de Memória
  • Smart Pointers
    • Ponteiros Inteligentes
    • Previnem memory leaks
    • Controlam as referências a determinado objeto e fazem sua destruição de forma automática
  • Macros para substituir operadores “new” e “delete”
    • As macros gravam a linha e o arquivo onde a memória foi alocada: NEW() e DESTROY()
  • Exibição de informações sobre memória alocada
componente core gerenciamento de mensagens
Componente – CoreGerenciamento de Mensagens
  • Fila de mensagens
    • Mensagens padrão + Mensagens de Usuário
componente core mecanismo de log
Componente – CoreMecanismo de Log
  • Suporta logs de informações e erros
  • Dispositivos de logs
    • Console
    • Arquivo
componente core gerenciamento de janela e eventos
Componente – CoreGerenciamento de Janela e Eventos
  • Suporte à criação de janelas
  • Suporte à eventos de mouse e teclado
  • Utiliza a Win32 API
componente core rtti runtime type information
Componente – CoreRTTI – Runtime Type Information
  • Informações sobre tipos de objetos em tempo de execução
  • Criação de objetos através de strings representando o seu nome
componente core serializa o de objetos
Componente – CoreSerialização de Objetos
  • Suporte à serialização de objetos em arquivo
  • Os objetos podem ser salvos em disco e recuperados posteriormente em memória, da maneira como estavam dispostos na época da gravação
componente core streaming
Componente – CoreStreaming
  • Suporte a streaming em arquivo (leitura e gravação)
componente core utilit rios
Componente – CoreUtilitários
  • Biblioteca matemática
  • Contador de FPS
  • Parser de linha de comando
  • Medição de tempo
componente core estruturas de dados
Componente – CoreEstruturas de dados
  • Array (dinâmico)
    • Implementação própria
  • Lista
    • Lista encadeada, implementação própria
  • Map (chave, valor)
    • Adapter para o Map do STL
  • Fila
    • Utiliza a lista
  • Pilha
    • Utiliza a lista
  • String
    • Adapter para a String do STL
componente udio
Componente – Áudio
  • Suporte a sons wave
  • Implementação da camada de áudio em OpenAL (www.openal.org)
componente script
Componente – Script
  • Suporte a leitura de arquivos de script
  • Implementação da camada de scripts em Lua (www.lua.org)
componente renderer
Componente – Renderer
  • Implementação da camada gráfica da engine, feita em OpenGL (www.opengl.org)
    • Modelos 3D
    • Texturas
    • Bounding Volumes
    • Texto
    • Viewport, Projeção e Câmera
    • Primitivas gráficas básicas
    • Iluminação
  • Conceitos específicos da Go3D! Engine
    • Global States
    • Hierarquia de representação de cena
componente renderer modelos 3d
Componente – RendererModelos 3D
  • Suporte ao carregamento de modelos MD2 com textura
  • O programador não precisa conhecer a estrutura do formato MD2
  • A malha de triângulos é convertida para as estruturas da engine
componente renderer texturas
Componente – RendererTexturas
  • Suporte a texturas em formato BMP
  • O carregamento de imagens é feito através da biblioteca utilitária do OpenGL para plataforma Win32
  • Atribuição de diversos parâmetros para texturas
componente renderer bounding volumes
Componente – RendererBounding Volumes
  • Suporte à bounding box
  • É possível adicionar o bounding box na cena como forma de auxílio no debug
componente renderer texto
Componente – RendererTexto
  • Escrita de textos 2D na tela
  • Suporta fontes instaladas no Windows
  • Parâmetros: cor, posição, negrito, itálico, sublinhado, riscado
  • Implementação utilizando Win32 API + OpenGL
componente renderer viewport proje o e c mera
Componente – RendererViewport, Projeção e Câmera
  • Viewport
    • Criação de uma viewport na janela da aplicação
  • Projeção
    • Ortogonal
    • Perspectiva
  • Câmera
    • Representação de câmera em mundo 3D
componente renderer primitivas gr ficas b sicas
Componente - RendererPrimitivas Gráficas Básicas
  • Tipos de primitivas
    • Pontos
      • Tamanho
      • Suavização
    • Linhas
      • Aberta / Fechada
      • Contínua / Descontínua
      • Espessura
      • Padrão da linha
componente renderer primitivas gr ficas b sicas1
Componente - RendererPrimitivas Gráficas Básicas
    • Malha de triângulos
      • Para desenho de objetos mais complexos
  • Os vértices possuem cor, posição, normal e coordenadas de textura
  • Utilitário para geração de objetos básicos (um box, por exemplo)
componente renderer ilumina o
Componente - RendererIluminação
  • Suporte à luz ambiente
  • Os objetos da cena podem ter materiais associados, informando como reagem à luz
  • Cálculo das normais
componente renderer global states
Componente - RendererGlobal States
  • Informações que alteram a renderização final, mas que são independentes dos vértices que formam os objetos
  • 4 tipos
    • Shading
    • Material
    • Wireframe
    • Culling
componente renderer hierarquia de representa o de cena
Componente - RendererHierarquia de Representação de Cena
  • Uma cena é representada através de uma árvore
  • As geometrias são nós-folha das árvores
  • Os outros nós podem conter geometrias ou outros nós
  • A varredura na árvore ocorre de cima para baixo (atualizando as transformações) e de baixo para cima (atualizando os bounding volumes)
  • Global states podem ser associados aos nós
  • A geometria possui toda a informação final de renderização
detalhes da implementa o
Detalhes da Implementação
  • Foi desenvolvido um SDK da engine
    • Arquivo LIB para ser linkado com o projeto que vai fazer uso da engine
    • Arquivos de cabeçalho (.h) necessários
    • DLLs necessárias para a execução
    • Exemplos de utilização das funcionalidades da engine
    • Documentação (toda a API da engine está documentada)
    • Códigos-fonte
detalhes da implementa o1
Detalhes da Implementação
  • Aplicações que usam a engine
    • Instalação do SDK
    • Go3D.h
    • Go3D.lib
    • DLLs (Go3D.dll + …)
  • Em nenhum momento o programador utiliza chamadas específicas de OpenGL, Win32 API, Lua, OpenAL ou STL
  • O programador pode extender qualquer funcionalidade da engine
  • Funciona para aplicações Win32 ou Console
detalhes da implementa o2
Detalhes da Implementação
  • Design Patterns utilizados (GoF)
    • Behavioral Patterns
      • Observer
      • Template Method
    • Creational Patterns
      • Factory Method
      • Prototype
    • Structural Patterns
      • Adapter
      • Composite
considera es finais
Considerações Finais
  • Altamente desafiador
  • Evoluí em programação C++
  • Conheci APIs, ferramentas e técnicas novas
  • Uma engine completa tem muito mais recursos, mas acredito que consegui cumprir o objetivo que eu tinha com esse trabalho