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