480 likes | 560 Views
Arthur Elihimas Bruno Morato Everson Veríssimo Felype Santiago Leonardo André Marcos Camelo Pedro Vaz Yane Wanderley. Agenda. O que é OGRE? Aplicação Arquitetura Instruções de instalação Exercícios. O que é Ogre?.
E N D
Arthur Elihimas Bruno Morato Everson Veríssimo Felype Santiago Leonardo André Marcos Camelo Pedro Vaz Yane Wanderley
Agenda • O que é OGRE? • Aplicação • Arquitetura • Instruções de instalação • Exercícios
O que é Ogre? • O Object-Oriented Graphics Rendering Engine (OGRE) é uma engine escrita em C++ para facilitar o desenvolvimento de aplicações gráficas em 3D.
Aplicação • A engine não é somente para o desenvolvimento de jogos, mas sim para todo o tipo de desenvolvimento que utilize gráficos 3D
Projetos com Ogre(1/3) • Scythe Physics Editor • Software para abstração de tratamento de física, criado especialmente para designers • link
Projetos com Ogre(2/3) • Pacific Storm • Simulador de vôo comercial lançado pela Buka Entertainment, chegou a ser lançado no Brasil • link
Projetos com Ogre(3/3) • Billiards Complete • Jogo de bilhar, feito independentemente pela Focus Games, procurando distribuidor • link
Arquitetura • Baseada em árvore • Classes principais para a contrução de aplicações OGRE: • Root • SceneManager • SceneNode • Entity
ArquiteturaRoot • Ponto de entrada do sistema OGRE; • Através dele pode-se configurar e acessar todo o sistema;
ArquiteturaSceneManager • 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.
Arquitetura SceneNode • 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”
Arquitetura Entity • 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. Arquitetura Entity
ArquiteturaVisão Geral Root SceneManager SceneManager SceneNode SceneNode SceneNode Entity Entity Entity Entity
Instruções de instalação (Visual Studio 2005/2008) • 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
Instruções de instalação (Visual Studio 2005/2008) Criar um novo projeto
Instruções de instalação (Visual Studio 2005/2008) Criar um novo projeto (2)
Instruções de instalação (Visual Studio 2005/2008) Criar um novo projeto (3)
Instruções de instalação (Visual Studio 2005/2008) Criar um novo projeto (4)
Instruções de instalação (Visual Studio 2005/2008) Criar um novo projeto (5)
Instruções de instalação (Visual Studio 2005/2008) Criar um novo projeto (6)
Instruções de instalação (Visual Studio 2005/2008) Criar um novo projeto (7)
Instruções de instalação (Visual Studio 2005/2008) Criar um novo projeto (8)
Instruções de instalação (Visual Studio 2005/2008) Criar um novo projeto (9)
Instruções de instalação (Visual Studio 2005/2008) Criar um novo projeto (10)
Instruções de instalação (Visual Studio 2005/2008) • 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 =)
Instruções de instalação (Visual Studio 2005/2008) Criar um novo projeto (12)
Exercício Criar uma cena simples utilizando a arquitetura apresentada.
ExercícioCriando uma cena void createScene(void){ mSceneMgr->setAmbientLight( ColourValue( 0, 0, 0 ) ); }
ExercícioCriando uma entidade - Dragão 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 ) );
Outros meshesdiponíveis • 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
ExercícioCriando outra entidade - Ninja ent = mSceneMgr->createEntity( “Ninja", "ninja.mesh" ); node = mSceneMgr->getRootSceneNode()-> createChildSceneNode( " NinjaNode", Vector3( 0, 0, 200 ) ); node->attachObject( ent );
ExercícioCriando um plano - chão 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");
ExercícioCriando um plano - céu plane.d = 1000; plane.normal = Vector3::NEGATIVE_UNIT_Y; mSceneMgr->setSkyPlane(true, plane, "Examples/CloudySky", 1500, 40, true, 1.5f, 150, 150);
ExercícioColocando Iluminação //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)
ExercícioResultado Adicione mais fontes de luz e obtenha resultados tais como:
ExercícioColocando efeito - neblina ColourValue fadeColour(0.9, 0.9, 0.9); mSceneMgr->setFog(FOG_LINEAR, fadeColour, 0.0, 100, 5000);
ExercícioColocando efeito - sombra mSceneMgr->setShadowTechnique(SHADOWTYPE_STENCIL_ADDITIVE);
Dúvidas ? Artur Elihimas Bruno Morato Everson Veríssimo Felype Santiago Leonardo André Marcos Camelo Pedro Vaz Yane Wanderley
Referências http://www.cubagames.com.br/quer-fazer-o-seu-proprio-jogo-parte-6/ http://www.mundodosdragoes.com/wiki/index.php?title=OGRE:Tutoriais http://www.deitel.com/Books/C/CHowtoProgram6e/OGREInstallationInstructions/tabid/3152/Default.aspx