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.

Slides:



Advertisements
Apresentações semelhantes
Tópicos Especiais I: Engines Engines 3D
Advertisements

Faculdades Integradas Santa Cruz
Sistemas Operacionais
Programação em Java Prof. Maurício Braga
DESENVOLVIMENTO DE SISTEMAS PARA INTERNET
Bárbara A. G. P. Yamada O Flash – Introdução Bárbara A. G. P. Yamada
Modo Gráfico x Modo Texto
JOGOS.
Processos no Unix e Linux
António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico.
Projeções e OpenGL Alex F. V. Machado.
Introdução à Computação para o Ensino Médio
COMPUTAÇÃO GRÁFICA.
INF 1366 – Computação Gráfica Interativa
CAPÍTULO Sistemas de supervisão 2. Sistema SCADA
Sistemas Operacionais
Alexandre Parra Site: Linguagem Java Alexandre Parra Site:
Universidade do Vale do Paraíba Colégio Técnico Antônio Teixeira Fernandes Disciplina Programação Orientada a Objetos I Material IV-Bimestre Criando um.
Computação Gráfica OpenGL.
Documentação da Neptus Framework
Revisão da Linguagem C.
Tecnologias para Internet
Fundamentos da Informática
Conhecendo o Visual Studio.NET
Revisão de Conceitos Básicos Hardware (Parte 1)
Fundamentos da Informática
Proteção de Memória O sistema operacional deve impedir que um processo tenha acesso ou modifique uma página do sistema sem autorização. Proteção para páginas.
Remodelando a solução mais eficaz
Desenvolvimento de Jogos e Entretenimento Digital
Administração de Sistema Operacional de Rede WindowsServer-2003 WindowsServer-2003 Ricardo de Oliveira Joaquim TECNOLÓGICOS.
Programador, Design e Fundador
Realidade Virtual Aula 7
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Paradigmas da Programação – Semestre 2 – Aula 2 Introdução ao VS.Net Professores: Fábio de Paula Santos Eduardo Mantovani.
Sistemas Operacionais
Game Engines.
Server-2003 Administração de Sistema Operacional de Rede Windows
Word Prof. Gláucya Carreiro Boechat
Ambiente de trabalho Barra de ferramentas padrão Barras de rolamentos
Professor: Márcio Amador
Curso de extensão PROJETO EM LINGUAGEM B.I.M. (Building Information Modeling) COM O AUTODESK REVIT BUILDING Profº Arq. Leo Padovan.
UNIDADE 2: Sistema Operativo em Ambiente Gráfico
SISTEMAS OPERACIONAIS I
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
Sistemas Operacionais
© 2004 by Pearson Education Computadores: Ferramentas para a Era da Informação Tema 0 PARTE A.
Implementação MVC Pedro Antonino.
Sistemas Operacionais
Linguagem de Programação II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
CAD AutoCAD Mouse Menu de barras.
Trabalho de Persistência para o EPOS. Problema Proposto Implementar no Epos objetos persistentes, ou seja, fazer com que o sistema, ao ser reiniciado,
Arthur Gonçalves Christian Diego Eudes Raphael Icamaan Botelho.
OGRE 3D Open Source Graphics Engine Seminário Introdução à Multimídia.
Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a aprender RV normalmente sofre um primeiro impacto negativo.
Coordenação Regional de Tecnologia na Educação
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Prof. Wallace Borges Cristo
Sistemas Operacionais
Módulo II Capítulo 1: Orientação a Objetos
Novos programas de TIC Flash/Dreamweaver. Conceitos e 1º acesso ao FLASH Conceitos e 1º acesso ao DREAMWEAVER Instalação.
Microsoft Excel.
Sistemas Operacionais IV – Gerenciamento de E/S
Serviço de rede e internet Jackson Eduardo da Silva.
MEMÓRIAS.
MatLab (Matrix Laboratory)
Capítulo 5 Entrada/Saída 5.1 Princípios do hardware de E/S
Mauricio Barbosa e Castro.  A construção de um produto multimídia se faz através de um projeto.  O escopo e a complexidade de um projeto de multimídia.
Capítulo 14 Camada 6 A Camada de Apresentação. Sumário A Camada de Apresentação.
JFC e Swing Thiago Medeiros Barros 18/08/2011. JFC Java Foundation Classes é um conjunto de componentes e serviços que simplificam o desenvolvimento e.
Noções básicas de editores de texto Profª Juliana Schivani MÍDIAS EDUCACIONAIS.
Transcrição da apresentação:

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 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 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 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 Fila de mensagens Mensagens padrão + Mensagens de Usuário

Componente – Core Mecanismo de Log Suporta logs de informações e erros Dispositivos de logs Console Arquivo

Componente – Core Gerenciamento 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 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 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 Suporte a streaming em arquivo (leitura e gravação)

Componente – Core Utilitários Biblioteca matemática Contador de FPS Parser de linha de comando Medição de tempo

Componente – Core Estruturas 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 Suporte a sons wave Implementação da camada de áudio em OpenAL (

Componente – Script Suporte a leitura de arquivos de script Implementação da camada de scripts em Lua (

Componente – Renderer Implementação da camada gráfica da engine, feita em OpenGL ( 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 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 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 Suporte à bounding box É possível adicionar o bounding box na cena como forma de auxílio no debug

Componente – Renderer Texto 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 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 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á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 Suporte à luz ambiente Os objetos da cena podem ter materiais associados, informando como reagem à luz Cálculo das normais

Componente - Renderer Global 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 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 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çã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ção Design Patterns utilizados (GoF) Behavioral Patterns Observer Template Method Creational Patterns Factory Method Prototype Structural Patterns Adapter Composite

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