Arthur Elihimas
Bruno Morato
Everson Veríssimo
Felype Santiago
Leonardo André
Marcos Camelo
Pedro Vaz
Yane Wanderley
O que é OGRE?
Aplicação
Arquitetura
Instruções de instalação
Exercícios
O Object-Oriented Graphics Rendering
Engine (OGRE) é uma engine escrita em C++
para facilitar o desenvolvimento de
aplicações gráficas em 3D.
A engine não é somente para o
desenvolvimento de jogos, mas sim para
todo o tipo de desenvolvimento que utilize
gráficos 3D
Scythe Physics Editor
Software para abstração de tratamento de física,
criado especialmente para designers
link
Pacific Storm
Simulador de vôo comercial lançado pela Buka
Entertainment, chegou a ser lançado no Brasil
link
Billiards Complete
Jogo de bilhar, feito independentemente pela
Focus Games, procurando distribuidor
link
Baseada em árvore
Classes principais para a contrução de
aplicações OGRE:
Root
SceneManager
SceneNode
Entity
Ponto de entrada do sistema OGRE;
Através dele pode-se configurar e acessar
todo o sistema;
Controla tudo o que aparece na tela;
Mantém o controle sobre as localizações dos
objetos;
Mantém controle sob a câmera, planes,
lights...
É referenciado no Root.
Agrupa objetos e armazena informações
relativas a posição, orientação e escala destes
dentro da cena;
Todo objeto deve estar associado a um
SceneNode para se tornar visível;
Um SceneNode pode conter outros
SceneNodes
Posição dos “filhos” será relativa à do “pai”
Qualquer coisa que possa ser representada
por um mesh 3D (malha geométrica);
Pode ser renderizada em uma cena;
Devem ser uma entidade:
Um robô, um peixe ou o terreno em que os
personagens andam;
Não devem ser entidades:
Luzes, Partículas, Câmeras, entre outros;
Uma Entidade não pode ser colocada em
uma Cena diretamente. Ela deve ser anexada
(attach) para um objeto SceneNode;
Pode-se aplicar transformações espaciais às
entidades associadas a cada SceneNode e
seus filhos.
Root
SceneManager
SceneNode
Entity
SceneNode
Entity
SceneManager
SceneNode
Entity
Entity
Baixe o OGRE 1.4.8 SDK em
http://www.ogre3d.org/index.php?option=com_content&task=view&id=411&Itemid=131
Descompactar preferencialmente no Temp (ou no
pendrive). O caminho para identificar o SDK não pode conter espaços, exemplo:
C:\Temp\OgreSDK
Mapeie a conta \\ipojuca\bmcr\public_html\ogre\,
copie as dll’s que estão nessa pasta (d3dx9_33.dll e
d3dx9_35.dll) e cole em C:\Temp\OgreSDK\bin\debug
Criar um novo projeto
Criar um novo projeto (2)
Criar um novo projeto (3)
Criar um novo projeto (4)
Criar um novo projeto (5)
Criar um novo projeto (6)
Criar um novo projeto (7)
Criar um novo projeto (8)
Criar um novo projeto (9)
Criar um novo projeto (10)
Criar um novo projeto (11)
Testando sua configuração do OGRE compilando
um exemplo trivial
▪ http://www.cin.ufpe.br/~ywsr/Arquivos/AulaOGRE/exemplo.txt
▪ Não rode ainda!! Apenas compile.
▪ Dando tudo certo na compilação, pegue o executável na pasta
do projeto em debug (\ProjetoOGRE\debug) e copie para a pasta
do debug, dentro de bin, que está dentro de OgreSDK
(OgreSDK\bin\debug) pego no início do tutorial de instalação.
▪ Agora é só clicar duas vezes no executável copiado =)
Criar um novo projeto (12)
Criar uma cena simples utilizando a
arquitetura apresentada.
void createScene(void){
mSceneMgr->setAmbientLight( ColourValue( 0, 0, 0 ) );
}
Entity *ent = mSceneMgr->createEntity("Dragon",
"dragon.mesh" );
SceneNode *node = mSceneMgr->getRootSceneNode()->
createChildSceneNode( " Dragon Node", Vector3( 100, 150, 200 ) );
node->attachObject( ent );
node->yaw( Degree( -180 ) );
athene.mesh
WoodPallet.mesh
ogrehead.mesh
razor.mesh
robot.mesh
RZR-002.mesh
sphere.mesh
tudorhouse.mesh
ninja.mesh
column.mesh
cube.mesh
facial.mesh
fish.mesh
geosphere4500.mesh
geosphere8000.mesh
jaiqua.mesh
knot.mesh
Barrel.mesh
ent = mSceneMgr->createEntity( “Ninja", "ninja.mesh" );
node = mSceneMgr->getRootSceneNode()->
createChildSceneNode( " NinjaNode", Vector3( 0, 0, 200 ) );
node->attachObject( ent );
Plane plane(Vector3::UNIT_Y, 0);
MeshManager::getSingleton().createPlane("ground",
ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,
plane,
3000, 3000, 20 ,20, true, 1, 5, 5, Vector3::UNIT_Z);
Entity *chao = mSceneMgr->createEntity("GroundEntity", "ground");
mSceneMgr->getRootSceneNode()->createChildSceneNode()->
attachObject(chao);
chao->setMaterialName("Examples/Rockwall");
plane.d = 1000;
plane.normal = Vector3::NEGATIVE_UNIT_Y;
mSceneMgr->setSkyPlane(true, plane, "Examples/CloudySky",
1500, 40, true, 1.5f, 150, 150);
//Com uma fonte de luz
Light *light;
light = mSceneMgr->createLight("Light1");
light->setType(Light::LT_POINT);
light->setPosition(Vector3(50, 250, -100));
light->setDiffuseColour(0.5, 0.5, 0.5);
light->setSpecularColour(0.5, 0.5, 0.5);
//Ponha a luz ambiente como (0,0,0)
Adicione mais fontes de luz e obtenha resultados tais como:
ColourValue fadeColour(0.9, 0.9, 0.9);
mSceneMgr->setFog(FOG_LINEAR, fadeColour, 0.0, 100,
5000);
mSceneMgr->setShadowTechnique(SHADOWTYPE_STENCIL_ADDITIVE);
Artur Elihimas
Bruno Morato
Everson Veríssimo
Felype Santiago
Leonardo André
Marcos Camelo
Pedro Vaz
Yane Wanderley
http://www.cubagames.com.br/quer-fazer-oseu-proprio-jogo-parte-6/
http://www.mundodosdragoes.com/wiki/inde
x.php?title=OGRE:Tutoriais
http://www.deitel.com/Books/C/CHowtoProg
ram6e/OGREInstallationInstructions/tabid/31
52/Default.aspx