Introdução aoDesenvolvimento de Jogos      em Ogre 3D              Autor:     Jonathan Ohara de Araujo
Sobre Mim 23 anos; Bacharel em Sistemas de Informação pela  Universidade Católica de Santos; Trabalho com Java para sis...
Shyds Games -         http://shydsgames.com/Criado para armazenar nossos jogos, news ecomo blog de desenvolvimento;Proje...
Shyds Games – Bola de Pano   http://shydsgames.com/
Shyds Games – Tumbuhttp://shydsgames.com/
Shyds Games – Black Amber  http://shydsgames.com/
Shyds Games – Sem Nome  http://shydsgames.com/
PontoV - http://www.pontov.com.br/ Artigos sobre desenvolvimentos de jogos em  geral; Escrevo na coluna sobre Ogre3D
Introdução ao Desenvolvimento     de Jogos em Ogre 3D Introdução; Principais Trabalhos; Características e Features; Fe...
Introdução
Ogre 3D OGRE == Object-Oriented Rendering Engine; Object-Oriented; Rendering Engine; Escrita em C++;
Ogre 3D           Breve História Steve Streeting; Iniciado em 2000; Release 1.0 (Azathoth) lançado em 02/2005; Atualme...
Principais Trabalhos
Ogre3D       Principais Trabalhos Garshasp - The Monster Slayer; Family Farm; Project Aftershock; TorchLight;
Garshap
Family Farm
ProjectAfterShock
TorchLight
TorchLight Desenvolvido pela Runnic Games; Lançado em outubro de 2009; Maioria das bibliotecas utilizadas são Open  Sou...
TorchLight No dia 6 de agosto de 2010 o número de  vendas já ultrapssava 600 mil vendas (fonte:  Gamasutra); Foi pago pe...
Características      e   Features
Ogre 3D    Principais características Orientada a Objetos; Orientada a cenas (Grafos); Produção de Aplicações Gráficas ...
Ogre 3D        Principais Features Multiplataforma (Windows, Linux, Mac OS); Iphone; Renderiza em DirectX 9, DirectX 10...
Ogre 3D         Principais Features Suporta Shader em CG, DirectX HLSL e  OpenGL GLSL; Level Of Detail; Tipo de Imagens...
Ogre 3D           Outras Features Plugins para exportar para os principais  modeladores 3D; Carrega arquivos compactados...
Ogre 3DFeatures de Próximos Releases Suporte a Android(Android NDK) e Windows  Phone 8; Renderização em DirectX 11; Ren...
Ogre 3D      Principais Vantagens Desempenho; Multiplataforma; Open Source (MIT License); Boa documentação; Grande Co...
Ogre 3D    Principais Desvantagens Tempo de Compilação; Não funcionar em consoles*; Ser apenas uma engine gráfica.
Ferramentas
GUI BetaGUI; ButtonGUI; CEGUI; Hikari; libRocket; MyGUI; Navi; QucickGUI; TwOgre; Tiny GUI; Noesis GUI.
Som OgreAL; Ogre Ogg Sound; Audiere.
Particulas Particle Universe; Particule FX; Particle Accelerator; Ogre Partciel Editor; Ogre Particle Lab; HellHeave...
Outros Ogitor; SkyX; Caelum; Ogre Speed Tree; HydraX;
OgreAPI
Arquivos do                Ogre 3D .mesh; .material; .skeleton.
Inicialização do                                    Ogre 3DmRoot = new Ogre::Root(PLUGINS_CFG);// Carregando as pastas dos...
Inicialização do                             Ogre 3D// Escolhendo o gerenciador de cenasmSceneMgr = mRoot->createSceneMana...
Grafo de Cenas                Nó de Cena O que é? Nó raiz:sceneManager->getRootSceneNode(); Criando um Nó de cena:Ogre:...
Grafo de Cenas                  Entidades O que é? Criando uma entidade:Ogre::Entity* entidade = sceneManager-  >createE...
Grafo de Cenas        Hierarquia de Nós Como funciona?                   Root Scene                   Node               ...
Grafo de Cenas Hierarquia de NósRoot Scene NodePosicao ( 0, 0, 0 )Node 1                 Node 2Posicao ( 10, 0, 0 )   Posi...
Transformações Posição:node->setPosition(10,0,0); Translação:node->translate(20,0,0); Escala:node->scale(2.0f,2.0f,2.0f);
Transformações Rotação:node->yaw( Ogre::Radian( 3.14f ) );node->yaw( Ogre::Degree( 180 ) );node->setOrientation( 0.0f, 0,...
Luz, Camera...                     e Sombras Luz:Ogre::Light* luz = sceneManager->createLight( “luz1” );luz->setType( Ogr...
Luz, Camera...                      e Sombras Luz:luz->setDiffuseColor( 1, 1, 1 );node->attachObject( luz );
Luz, Camera...                 e Sombras Sombras:sceneManager->setShadowTechnique( Ogre::SHADOWTYPE_NONE );sceneManager- ...
Luz, Camera...                    e Sombras Camera:Ogre::Camera* camera = sceneManager->createCamera( “camera1” );camera-...
OIS Object Oriented Input System Inicializando:mInputManager = OIS::InputManager::createInputSystem( pl );mKeyboard = sta...
OIS  Object Oriented Input System Capturando Entradas:class nomeDaClasse: public OIS::KeyListener, public OIS::MouseListe...
OIS Object Oriented Input System Métodos da Interface:bool keyPressed( const OIS::KeyEvent &arg ){}bool keyReleased( cons...
Animação Pegando animações de uma entidade:Ogre::AnimationState* andar = entidade->getAnimationState( “andar” );Ogre::Ani...
Animação Animandoandar->setTimePosition(0);andar->setEnabled(true);andar->setLoop(true);...//no seu método de atualização...
Considerações Finais
Bibliografia OGRE Wiki. Disponível em:  http://www.ogre3d.org/tikiwiki/ JUNKER, G. Pro Ogre 3D Programming. New  York: A...
Dúvidas ?      Contato:      jonathan.ohara.araujo@gmail.com      @jonathan_ohara      http://shydsgames.com/      http://...
Upcoming SlideShare
Loading in …5
×

Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenzie

1,325 views

Published on

Slides da minha apresentação no evento Mackenzie realizado em 29/11/2012.

Agradecimento Especial a Luiz Dubas @luizdubas pela artes do slide

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,325
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
22
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenzie

  1. 1. Introdução aoDesenvolvimento de Jogos em Ogre 3D Autor: Jonathan Ohara de Araujo
  2. 2. Sobre Mim 23 anos; Bacharel em Sistemas de Informação pela Universidade Católica de Santos; Trabalho com Java para sistemas Web; Estudo desenvolvimento de jogos desde 2009; 2 projetos na área de jogos:  Shyds;  PontoV.
  3. 3. Shyds Games - http://shydsgames.com/Criado para armazenar nossos jogos, news ecomo blog de desenvolvimento;Projetos:  Bola de Pano;  Tumbu;  Black Amber;  Sem nome (Em desenvolvimento).
  4. 4. Shyds Games – Bola de Pano http://shydsgames.com/
  5. 5. Shyds Games – Tumbuhttp://shydsgames.com/
  6. 6. Shyds Games – Black Amber http://shydsgames.com/
  7. 7. Shyds Games – Sem Nome http://shydsgames.com/
  8. 8. PontoV - http://www.pontov.com.br/ Artigos sobre desenvolvimentos de jogos em geral; Escrevo na coluna sobre Ogre3D
  9. 9. Introdução ao Desenvolvimento de Jogos em Ogre 3D Introdução; Principais Trabalhos; Características e Features; Ferramentas; Ogre API; Considerações Finais;
  10. 10. Introdução
  11. 11. Ogre 3D OGRE == Object-Oriented Rendering Engine; Object-Oriented; Rendering Engine; Escrita em C++;
  12. 12. Ogre 3D Breve História Steve Streeting; Iniciado em 2000; Release 1.0 (Azathoth) lançado em 02/2005; Atualmente na versão 1.8.1 (Byatis) lançada em 09/2012.
  13. 13. Principais Trabalhos
  14. 14. Ogre3D Principais Trabalhos Garshasp - The Monster Slayer; Family Farm; Project Aftershock; TorchLight;
  15. 15. Garshap
  16. 16. Family Farm
  17. 17. ProjectAfterShock
  18. 18. TorchLight
  19. 19. TorchLight Desenvolvido pela Runnic Games; Lançado em outubro de 2009; Maioria das bibliotecas utilizadas são Open Source;
  20. 20. TorchLight No dia 6 de agosto de 2010 o número de vendas já ultrapssava 600 mil vendas (fonte: Gamasutra); Foi pago pelo jogo 20 dólares (caixa) e 10 dólares pelo download.
  21. 21. Características e Features
  22. 22. Ogre 3D Principais características Orientada a Objetos; Orientada a cenas (Grafos); Produção de Aplicações Gráficas 3D aceleradas por Hardware; Abstração o do uso de OpenGl e DirectX.
  23. 23. Ogre 3D Principais Features Multiplataforma (Windows, Linux, Mac OS); Iphone; Renderiza em DirectX 9, DirectX 10, OpenGL e OpenGL ES;
  24. 24. Ogre 3D Principais Features Suporta Shader em CG, DirectX HLSL e OpenGL GLSL; Level Of Detail; Tipo de Imagens suportadas: PNG, JPEG, TGA, BMP, PVRTC, DDS; Sistema de Partículas.
  25. 25. Ogre 3D Outras Features Plugins para exportar para os principais modeladores 3D; Carrega arquivos compactados (zip, pk3); Frameworks para facilitar integração com as principais Engines Físicas; Integração com o OIS;
  26. 26. Ogre 3DFeatures de Próximos Releases Suporte a Android(Android NDK) e Windows Phone 8; Renderização em DirectX 11; Renderização via Rede.
  27. 27. Ogre 3D Principais Vantagens Desempenho; Multiplataforma; Open Source (MIT License); Boa documentação; Grande Comunidade ativa; Grande número de plugins, add-nos e bibliotecas gratuitas; Ser apenas uma engine gráfica.
  28. 28. Ogre 3D Principais Desvantagens Tempo de Compilação; Não funcionar em consoles*; Ser apenas uma engine gráfica.
  29. 29. Ferramentas
  30. 30. GUI BetaGUI; ButtonGUI; CEGUI; Hikari; libRocket; MyGUI; Navi; QucickGUI; TwOgre; Tiny GUI; Noesis GUI.
  31. 31. Som OgreAL; Ogre Ogg Sound; Audiere.
  32. 32. Particulas Particle Universe; Particule FX; Particle Accelerator; Ogre Partciel Editor; Ogre Particle Lab; HellHeavenFx Ogre;
  33. 33. Outros Ogitor; SkyX; Caelum; Ogre Speed Tree; HydraX;
  34. 34. OgreAPI
  35. 35. Arquivos do Ogre 3D .mesh; .material; .skeleton.
  36. 36. Inicialização do Ogre 3DmRoot = new Ogre::Root(PLUGINS_CFG);// Carregando as pastas dos resourcesOgre::ResourceGroupManager::getSingleton().addResourceLocation("media/materials/scripts", "FileSystem","Popular");Ogre::ResourceGroupManager::getSingleton().addResourceLocation("media/materials/textures", "FileSystem","Popular");Ogre::ResourceGroupManager::getSingleton().addResourceLocation("media/models", "FileSystem", "Popular");Ogre::ResourceGroupManager::getSingleton().addResourceLocation("media", "FileSystem", "General");// mRoot->restoreConfig() Verifica se ja existe configuração no ogre.cfg// se existir retorna true e entra no if// senão cai no OU e mostra a tela para escolher configuraçãoif(mRoot->restoreConfig() || mRoot->showConfigDialog()){ // O primeiro parâmetro diz ao Ogre que ele pode criar uma janela para renderização // O segundo parâmetro é o titulo da Janela mWindow = mRoot->initialise(true, "Ponto V - Tutorial 1");}else{ // Caso o usuário aperte cancel na tela do ogre feche o programa return false;}
  37. 37. Inicialização do Ogre 3D// Escolhendo o gerenciador de cenasmSceneMgr = mRoot->createSceneManager(Ogre::ST_GENERIC);// Cria a cameramCamera = mSceneMgr->createCamera("Camera");// ViewPort é o que faz a cena ser renderizado pela cameraOgre::Viewport* vp = mWindow->addViewport(mCamera);// Cor de fundo do ViewPortvp->setBackgroundColour(Ogre::ColourValue(0, 0, 0));// Muda o aspecto(width, height) da camera para se adequar ao ViewPortmCamera->setAspectRatio(Ogre::Real(vp->getActualWidth()) / Ogre::Real(vp->getActualHeight()));// Carrega Todos resouresOgre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
  38. 38. Grafo de Cenas Nó de Cena O que é? Nó raiz:sceneManager->getRootSceneNode(); Criando um Nó de cena:Ogre::SceneNode* node = sceneManager->createSceneNode("Node1");//ousceneManager->getRootSceneNode()->createSceneNode("Node1");
  39. 39. Grafo de Cenas Entidades O que é? Criando uma entidade:Ogre::Entity* entidade = sceneManager- >createEntity( “NomeDaEntidade“ , “arquivo.mesh“ ); Anexando uma entidade a um nó:node->attachObject(entidade);
  40. 40. Grafo de Cenas Hierarquia de Nós Como funciona? Root Scene Node Node 1 Entity
  41. 41. Grafo de Cenas Hierarquia de NósRoot Scene NodePosicao ( 0, 0, 0 )Node 1 Node 2Posicao ( 10, 0, 0 ) Posicao ( 0, 10, 20 ) Entity Entity 2 Posicao Posicao (10,0,0) (10,10,20)
  42. 42. Transformações Posição:node->setPosition(10,0,0); Translação:node->translate(20,0,0); Escala:node->scale(2.0f,2.0f,2.0f);
  43. 43. Transformações Rotação:node->yaw( Ogre::Radian( 3.14f ) );node->yaw( Ogre::Degree( 180 ) );node->setOrientation( 0.0f, 0, 1, 0 );node->rotate( Ogre::Quartenion( 0, 0, 1, 0 ) );node->lookAt( Ogre::Vector3( 0, 0 ,0 ) );node->pitch( Ogre::Degree( 180 ) );node->roll( Ogre::Degree( 180 ) );
  44. 44. Luz, Camera... e Sombras Luz:Ogre::Light* luz = sceneManager->createLight( “luz1” );luz->setType( Ogre::Light::LT_POINT );luz->setType( Ogre::Light::LT_DIRECTIONAL );luz->setType( Ogre::Light::LT_SPOTLIGHT );
  45. 45. Luz, Camera... e Sombras Luz:luz->setDiffuseColor( 1, 1, 1 );node->attachObject( luz );
  46. 46. Luz, Camera... e Sombras Sombras:sceneManager->setShadowTechnique( Ogre::SHADOWTYPE_NONE );sceneManager- >setShadowTechnique( Ogre::SHADOWTYPE_STENCIL_ADTIIVE );sceneManager- >setShadowTechnique( Ogre::SHADOWTYPE_STENCIL_MODULATI VE );sceneManager- >setShadowTechnique( Ogre::SHADOWTYPE_ADDITIVE );sceneManager- >setShadowTechnique( Ogre::SHADOWTYPE_MODULATIVE );
  47. 47. Luz, Camera... e Sombras Camera:Ogre::Camera* camera = sceneManager->createCamera( “camera1” );camera->setNearClipDistance( 5 );camera->setFarClipDistance( 5000 );node->attachObject( camera );
  48. 48. OIS Object Oriented Input System Inicializando:mInputManager = OIS::InputManager::createInputSystem( pl );mKeyboard = static_cast<OIS::Keyboard*>(mInputManager- >createInputObject( OIS::OISKeyboard, true ));mMouse = static_cast<OIS::Mouse*>(mInputManager->createInputObject( OIS::OISMouse, true ));
  49. 49. OIS Object Oriented Input System Capturando Entradas:class nomeDaClasse: public OIS::KeyListener, public OIS::MouseListener...mMouse->setEventCallback(this);mKeyboard->setEventCallback(this);...mKeyboard->capture();mMouse->capture();
  50. 50. OIS Object Oriented Input System Métodos da Interface:bool keyPressed( const OIS::KeyEvent &arg ){}bool keyReleased( const OIS::KeyEvent &arg ){}bool mouseMoved( const OIS::MouseEvent &arg ){}bool mousePressed( const OIS::MouseEvent &arg, OIS::MouseButtonID id ){bool mouseReleased( const OIS::MouseEvent &arg, OIS::MouseButtonID id ){
  51. 51. Animação Pegando animações de uma entidade:Ogre::AnimationState* andar = entidade->getAnimationState( “andar” );Ogre::AnimationStateSet* animacoes = entidade->getAllAnimationsStates();
  52. 52. Animação Animandoandar->setTimePosition(0);andar->setEnabled(true);andar->setLoop(true);...//no seu método de atualização de frameandar->addTime( deltaTime );
  53. 53. Considerações Finais
  54. 54. Bibliografia OGRE Wiki. Disponível em: http://www.ogre3d.org/tikiwiki/ JUNKER, G. Pro Ogre 3D Programming. New York: Apress, 2006. KERGER, Felix. Ogre 3D 1.7 Beginner’s Guide, 2010.
  55. 55. Dúvidas ? Contato: jonathan.ohara.araujo@gmail.com @jonathan_ohara http://shydsgames.com/ http://www.pontov.com.br/

×