equipe: durval augusto elton magalhães dihego oliveira natanael silva rafael araujo vladimir alves...

50
Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented Graphics Rendering Engine

Upload: lorena-santarem-machado

Post on 07-Apr-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Equipe:

Durval AugustoElton MagalhãesDihego OliveiraNatanael SilvaRafael AraujoVladimir Alves

Introdução a Multimídia

Estudo sobre OGREObject Oriented Graphics Rendering Engine

Page 2: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

OGRE – Object Oriented Graphics Rendering Engine

Engine 3D; Flexível; Escrito em C++; Une facilidade com poder; É gratuito.

2

Page 3: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

Não é um engine de jogos.

OGRE é muito usado como módulo gráfico em jogos;

Decisão de restringir para abranger; Liberdade ao desenvolvedor – engines de

jogos geralmente são específicos; Flexibilidade: de aplicações médicas a jogos.

3

Page 4: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

O que faz de OGRE uma boa opção?

Fácil integração com módulos externos – grande aceitação em jogos;

Documentação consistente;Qualidade favorecida à quantidade.

4

Page 5: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

Projetos que utilizam o OGRE.

JetRacer Live Interior 3D

5

Page 6: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

Projetos que utilizam o OGRE[2].

FirstAid Sim Interactive Museum

6

Page 7: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

Projetos que utilizam o OGRE[3].

Nimble MotorM4X

7

Page 8: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Arquitetura

Introdução à Multimídia - UFPE/CIn 8

Page 9: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

ArquiteturaSceneManager

Responsável por desenhar cenas e objetos;SceneNode

Encapsula posicionamento e objetos da cena;

EntityQualquer elemento com uma malha (mesh);

RootSceneNode especial. Usa padrão Singleton.

9

Page 10: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

Root Ponto de partida da aplicação. Todos os

objetos são atingíveis deste objeto; Acesso aos fundamentos do sistema

Sistemas de renderização; Acesso às demais classes do sistema;

Deve ser construído antes de chamar qualquer operação do sistema Ogre.

Depois de instanciado pode ser acessado por: Root :: getSingleton() ou Root :: getSingletonPtr().

10

Page 11: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

SceneManagerÉ uma abstração representando o que é

mostrado no mundo virtual;Responsável por iterar sobre os objetos que

contém e desenhá-los na tela;Pode ser de vários tipos:

ST_GENERIC ST_EXTERIOR_CLOSE ST_EXTERIOR_FAR ST_EXTERIOR_REAL_FAR ST_INTERIOR

11

Page 12: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

SceneNode Contém instâncias da classe Entity; Agrupam objetos sem malhas, como luzes,

sombras, câmeras e partículas; Podem possuir SceneNodes filhos, gerando

assim uma hierarquia de cenas; Possuem sua posição sempre relativa ao

SceneNode pai.

12

Page 13: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

Entity Podem ser imaginados como os objetos 3D

com malha (mesh) que devem ser desenhados na tela;

São os objetos propriamente renderizáveis na cena;

Deve ser adicionado a um SceneNode para adquirir a informação de posicionamento e orientação.

13

Page 14: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

EntityPodem possuir SubEntity

Se qualquer operação que mudar a orientação ou coordenadas da Entity pai for efetuada, as SubEntitys sofrerão modificações;

São exemplos de Entity e SubEntityUm mesh de um carro como Entity;Os pneus com SubEntitys se movimentando

junto com o carro.

14

Page 15: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Entity - Mesh

Introdução à Multimídia - UFPE/CIn 15

Page 16: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

Coordenadas e Vetores Sistema de Coordenas Canônicas X e Z plano horizontal Y eixo vertical Classe Vector Origem em (0,0,0)

Responsável pela representação: Posição e Direção Dimensões

2 – Classe Vector2 3 – Classe Vector3 4 – Classe Vector4

Não há uma classe para representar um ponto

y

z

x

16

Page 17: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

Redimensionamento Redimensionando um objeto

sceneNode->scale(x, y, z); sceneNode->scale( Vector(x, y, z)); Exemplo: Funciona de maneira proporcional a escala

já existente Ex:

sceneNode->scale(3, 2, 4); sceneNode->scale(0.3, 0.7, 0.5);

17

Page 18: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

RotaçãoRotaciona um objeto

Em torno do eixo XUsando o método pitch:

SceneNode->pitch( Degree ( x ) );Usando o método yaw

SceneNode->yaw( Degree ( y ) );Usando o método roll

SceneNode->roll( Degree ( z ) );Rotacionando em um eixo qualquer

SceneNode->rotate( Vector (x,y,z) );

18

Page 19: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

Rotação Exemplos de Uso:

Usa-se pitch para rotacionar para cima ou para baixo do eixo x Ex: quando se está voando com um jato; Ex: quando se está dirigindo um carro para

subir ou descer uma colina; Usa-se o yaw para rotacionar para esquerda ou

direita em torno do eixo y Ex: quando se está dirigindo um carro.

Usa-se o roll para rotacionar de forma inclinada, em torno do eixo z. Ex: O que acontece com o carro quando se tira

de uma curva demasiadamente rápida.

19

Page 20: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

O que são Scripts?[1]

Simples arquivos de texto que fazem calls a engine de Ogre, de alguns recursos por ela suportadosFacilidade e rapidez no desenvolvimentoPermite reuso, sem ligação a um particular

código fonte

20

Page 21: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

O que são Scripts?[2]

Sem necessidade de recompilação do código quando parâmetros são mudados, o script simplesmente é relidoTestes mais rápidos;Código mais claro.

21

Page 22: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

Scripts OGRE.

Initialization Scripts; Material Scripts;Particle Scripts;Overlay Scripts; Font Definition Scripts.

22

Page 23: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Initialization Scripts

Definição dos paths necessários a aplicação(ogre.cfg);

Load dos plugins(plugins.cfg); path folders de outros scripts e demais

recursos(resources.cfg).

23Introdução à Multimídia - UFPE/CIn

Page 24: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

Material Scripts[1/3]

Definição simples e rápida de materiais complexos;

Podemos, para facilitar o entendimento, definir mais de um material dentro de um único file `.material`, aconselha-se que estes guardem uma relação semântica entre si.

24

Page 25: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

Material Scripts[2/3]Estrutura

Material;Technique; Pass; Texture_unit;

Technique é a mais relevante pois define o path para se obter um dado efeito, sua ordem é importante (different environments).

25

Page 26: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Material Scripts[3/3]

26Introdução à Multimídia - UFPE/CIn

Page 27: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

Particle Scripts[1/2]

Definição de sistemas de partículas independente do source program;

Esses scripts são carregados no momento da inicialização da aplicação.

27

Page 28: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Particle Scripts[2/2]

28Introdução à Multimídia - UFPE/CIn

Page 29: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

Overlay Scripts [1/3] Definição de overlays em um script;Abre possibilidade de reuso;Carregado pelo sistema durante sua

inicialização;Único script pode conter vários overlays;Dentro do overlay podem existir vários

elementos 2D e 3D.

29

Page 30: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

Overlay Scripts [2/3]

Único Overlay com dois panels

30

Page 31: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

Overlay Scripts [3/3]Formas padrão

Panel e BorderPanel são containers;TextArea, TextBox são elements;

BorderPanel[tamanho das bordas, material usado];

TextArea[nome da fonte, cor e altura dos caracteres];

TextBox [TextArea e um Panel de fundo].

31

Page 32: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

Font Definition Scripts [1/2]Ogre usa textura baseda em fontes para renderizar

a TextAreaOverlayElement; Podemos usar também o Font Object para esta

tarefa;Existem dois caminhos para indicar a fonte a OGRE

Desenvolva a textura da fonte você mesmo usando algum pacote de auxílio ou uma ferramenta de geração automática;

Deixe Ogre gerar a fonte baseado na truetype font(melhor performance).

32

Page 33: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Font Definition Scripts [2/2]

<font_name> { type <image | truetype> source <image file | truetype font file> ... ... custom attributes depending on type }

33Introdução à Multimídia - UFPE/CIn

Page 34: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Overlays

São utilizados para exibir na tela elementos 2D ou 3D sobre o conteúdo;

Normal;Head-up Displays (HUDs);Menu;Status;Painéis.

34Introdução à Multimídia - UFPE/CIn

Page 35: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

Exemplo Ogre oferece por padrão um mostrador da taxa de frame.

35

Page 36: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

Criação

Através de código ou scripts;Código: SceneManager :: createOverlay;Porém, scripts são mais utilizados;Overlays são exibidos após o método ‘show()’;Overlays são exibidos uns sobre os outros,

respeitando a ordem de definida através de Overlay :: setZOrder().

36

Page 37: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Classe OverlayElementTodo item que pode ser incluído a um overlay,

é derivado desta classe;Usuários devem criar suas próprias subclasses;Atributos comuns: Tamanho, posição, material,

etc...Subclasse nativa do ogre: OverlayContainer ->

pode conter outros OverlayElements, agrupando-os.

Provê sistema de coordenadas local.37Introdução à Multimídia - UFPE/CIn

Page 38: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

OverlayManagerUtilizado quando se deseja criar elementos 2D

e acrescentar a um Overlay (ou container);Ex: OverlayManager ::

getSingleton().createOverlayElement("Panel“, "myNewPanel");Para adicionar elementos a um overlay:

Overlay::add2D. Apenas Containers podem ser adicionados diretamente a um Overlay, estabelecendo a ordem que seu conteúdo irá ser exibido;

OverlayContainer :: addChild -> adiciona elementos (ou containers) a um container.

38

Page 39: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Introdução à Multimídia - UFPE/CIn

Pixel Mode / Relative Mode;Alinhamento;Posição/tamanho;Material;Caption;Transformando Overlays -> Overlay :: scroll,

Overlay :: rotate, Overlay :: scale.

Atributos:

39

Page 40: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

InterfaceOverlays foram

feitos para elementos não interativos;

Para criar GUIs -> http://www.cegui.org.uk.

40Introdução à Multimídia - UFPE/CIn

Page 41: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Ambiente de desenvolvimento.

A instalação do SDK (Software Development Kit) pré-compilado é feita de maneira bastante intuitiva e rápida (através de um wizard);

 Ao fim do processo, um diretório é criado contendo as bibliotecas e os arquivos de cabeçalho necessários para desenvolver as aplicações.

Introdução à Multimídia - UFPE/CIn 41

Page 42: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Ambiente de desenvolvimento.

Introdução à Multimídia - UFPE/CIn 42

Page 43: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Ambiente de desenvolvimento.Após a instalação, o wizard cria uma variável

de ambiente chamada OGRE_HOME que contém o caminho do diretório onde o SDK foi instalado;

 A IDE utilizada é o Visual C++ 2003; É necessário ainda o download de algumas

bibliotecas que são pré-requisitos para a compilação do OGRE e das suas ferramentas;

 O OGRE também tem como pré-requisito a instalação do DirectX 9.0.

Introdução à Multimídia - UFPE/CIn 43

Page 44: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Inicialização de Scripts

Fazem parte dos scripts de inicialização os arquivos “plugins.cfg”, “ogre.cfg” e “resources.cfg”;

 Eles são responsáveis, respectivamente, pelo carregamento dos plugins, autopreenchimento das opções de configuração e definição de caminhos para os recursos utilizados pela aplicação.

Introdução à Multimídia - UFPE/CIn 44

Page 45: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Inicialização de Scripts. Cada arquivo tem seu formato específico. No

caso do arquivo “plugins.cfg” existe uma configuração chamada de PluginFolder, que aponta para a pasta onde estarão localizados todos os plugins listados no arquivo;

O arquivo “resources.cfg” é formado de diretivas Zip e FileSystem, que apontam respectivamente para arquivos compactados no formato zip e para pastas onde o OGRE procurará por mais arquivos de scripts e recursos utilizados na aplicação.

Introdução à Multimídia - UFPE/CIn 45

Page 46: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Facilidades oferecidas pelo OGRE.

Elas estão descritas em três subseções intituladas Geração de Sombras, Render-to-Texture e Mouse Picking;

Aplicações mais agradáveis para o usuário, tanto do ponto de vista visual quanto do de interação;

 Geração de sombras é um aspecto importante na busca pelo realismo de uma cena, pois ajuda na percepção da distância entre os objetos.

Introdução à Multimídia - UFPE/CIn 46

Page 47: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Facilidades do OGRE.Geração de Sombras

OGRE suporta três tipos de cálculos de sombra:

Texture Modulative, Stencil Modulative, Stencil Additive;

Render-to-TextureRender-to-Texture consiste numa técnica para

renderizar cenas em texturas que são utilizadas em materiais para torná-los reflexivos.

Introdução à Multimídia - UFPE/CIn 47

Page 48: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Facilidades do OGRE.Mouse Picking

Uma rotina bastante comum em aplicativos 3D é a seleção de objetos da cena utilizando o mouse, a qual é denominada Picking;

Picking padrão implementado no OGRE detecta os objetos com base no AxisAlignedBox dos objetos, o que faz com que os resultados sejam imprecisos, porém rápidos.

Introdução à Multimídia - UFPE/CIn 48

Page 49: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Facilidades do OGRE.Um AxisAlignedBox é um tipo de BoudingBox

que sempre está alinhado com o eixo de coordenadas do mundo, assim, mesmo que os objetos sejam rotacionados seus BoudingBoxes continuarão alinhados;

Se a aplicação requisitar uma forma mais acurada de Picking, esta deverá ser implementada pelo desenvolvedor.

Introdução à Multimídia - UFPE/CIn 49

Page 50: Equipe: Durval Augusto Elton Magalhães Dihego Oliveira Natanael Silva Rafael Araujo Vladimir Alves Introdução a Multimídia Estudo sobre OGRE Object Oriented

Dúvidas?

Introdução à Multimídia - UFPE/CIn 50