Ponto V!

Home Ogre 3D Conhecendo o Ogre 3D
Jonathan Ohara de Araujo
Conhecendo o Ogre 3DImprimir
Escrito por Jonathan Araujo

Ogre 3D (Object-oriented Graphics Rendering Engine, ou motor gráfico orientado a objetos) é um motor gráfico escrito em C++ e de código aberto, que funciona em diferentes arquiteturas e sistemas operacionais como Windows, Linux, Mac e iPhone, sendo desenvolvido por um pequeno grupo de pessoas que podem ser conhecidas nesta página.

É muito comum confundir-se e chamar o Ogre de motor de jogo, porém diferentemente de motores de jogos como Unity e Unreal Development Kit, entre outros, o Ogre 3D é um motor gráfico, ou seja, ele não tem como fim a área de jogos, mas sim a renderização gráfica, uma das características que evidenciam isso é o motor gráfico não ter motor físico integrado ( nas versões antigas o Ogre vinha integrado com o motor ODE ), nem motor de rede, nem motor de áudio, entre outros. Mesmo assim, muitos dos projetos que usam Ogre são jogos, pois o seu projeto inicial sempre focou o seu uso como plataforma para desenvolvimento de jogos.

Para facilitar o trabalho do desenvolvedor de jogos e de outros projetos foram criados projetos para auxiliar o motor Ogre, como, por exemplo:

TorchlightApesar das integrações existentes, não existe impedimento algum para que o desenvolvedor faça a integração para alguma outra biblioteca de sua preferência ou até mesmo re-implemente alguma integração existente de forma a melhor atender suas necessidades.

O motor Ogre ficou famoso entre os desenvolvedores por ser um dos poucos motores gráficos de código aberto e com uma alta gama de recursos, como grande suporte e facilidade para mexer com texturas, materiais, Post Processing e Shaders, permitindo o uso de HLSL, CG e GLSL.

Você pode conferir na galeria do Ogre alguns dos trabalhos desenvolvidos, com um destaque pessoal para o jogo Torchlight, que pode ser visto ao lado.

Principais Funcionalidades

Dos principais recursos do Ogre, podemos destacar:

  • Portável para as plataformas mais conhecidas, em especial Windows, Linux e MacOS, sendo que também existe uma versão em testes para iPhone e versões (fechadas) para consoles, que não possuem código disponível devido aos contratos de sigilo destas plataformas.
  • Suporta OpenGL e Direct3D
  • Suporte a animações esqueletais
  • Sistema de cenas totalmente customizavel e já vem com diversos sistemas de culling implementados, entre os quais: quadtree, octree, BSP, etc.
  • Diversas técnicas de sombras, incluindo sombras por Stencil buffers e por Texturas
  • Sistema de efeitos pós processados
  • Sistema de partículas, com vários efeitos pré-programados
  • Sistema de gerenciamento de recursos, que permite agrupar os recursos de maneira lógica, como por exemplo, separar os recursos por níveis de um jogo
  • Arquitetura de plugins, permitindo ao desenvolvedor expandir as funcionalidades do motor conforme a necessidade

Existem diversos outros recursos, mais detalhes podem ser encontrados clicando-se aqui.

Utilizando o Ogre

Para começar no Ogre é bom verificar os requisitos mínimos para se desenvolver, além disso é recomendável experimentar os demos do motor, que permitem ao desenvolvedor descobrir de maneira iterativa o que o motor é capaz de fazer. Existe também a seção de projetos do fórum oficial onde é possível encontrar inúmeros projetos que utilizam o Ogre, além de discussões técnicas bem completas.

A principal linguagem para se trabalhar com o Ogre é o C++, sendo que pode-se usar como interface de desenvolvimento softwares como: Microsoft Visual Studio, Code::Blocks, Eclipse entre outros. Além do C++ o motor Ogre oferece programação em outras linguagens como, por exemplo, Phyton, Java e C#.

Criando Conteúdo

Editor de cena OgitorO Ogre é um motor que não tem seu próprio modelador 3D, então você precisará de algumas ferramentas para desenho e modelagem, existem varias opções de modeladores com exportadores e importadores para Ogre, sendo os modeladores mais usados: 3D Studio, Maya, Softimage XSI, Blender, Wings 3D, Cinema 4D, MilkShape 3D, Google Sketchup, sendo Blender uma boa opção para quem procura apenas soluções Open Source.

O motor Ogre também não inclui nenhum editor de cena, porém uma alternativa interessante é o Ogitor, feito usando Ogre e para Ogre, com ele você pode montar cenas, ou seja, posicionar modelos, criar luzes, confecção de terrenos, configurar câmeras, e exportá-los para carregar no seu jogo, é bem flexível e vem com alguns plugins interessantes para aprimorá-lo (um artigo para entender a importância de um editor de níveis e de cenas pode ser encontrado em clicando-se aqui) .

Apesar de o Ogitor ser a principio apenas um editor de cenas, seu sistema de plugins somado com a possibilidade de customizar as propriedades dos objetos de cena permitem que este possa ser transformado facilmente em um poderoso editor de níveis.

Preparando um Ambiente de Desenvolvimento

Para começar o desenvolvimento com Ogre primeiros temos que baixar o motor que pode ser encontrado clicando-se aqui, nesse link encontra-se os downloads do SDK pré- compilado, o código fonte, demos, addons e ferramentas. Após baixar o motor recomendo alguns procedimentos para diferentes arquiteturas:

  • Windows: baixe o SDK pré-compilado, crie uma variável de ambiente chamada OGRE_HOME que tenha como valor o diretório onde você descompactou sua SDK. Você terá também que configurar os diretórios dos includes, das bibliotecas e dos binários. Para entender melhor como usar bibliotecas C++, consulte o artigo “Como usar Bibliotecas C/C++”, para um passo a passo de como configurar o Ogre consulte “Instalando e Usando o Ogre no Visual C++ 2008” . Eu recomendo você baixar o wizard para Microsoft Visual Studio e Code::Blocks, que pode facilitar bastante o processo para quem está iniciando;
  • Linux: recomendo baixar o código fonte do Ogre e compila-lo junto com as dependências. Recomendo ver este meu post em um dos forums oficiais do ogre que contém um pequeno guia de como fazer isso passo-a-passo.

Para outras arquiteturas e para ver outros procedimentos acesse “Setting up an Application”.

Bibliografia

Pro OGRE 3D Programming


Comentários (55)
  • Marcos Koga  - Interessante
    avatar

    A muito tempo eu já tentei mexer na Ogre com intuito de tentar dar uma mão para o "Projeto Mundo dos Dragões", porém a vida acadêmica não me abria muita brecha para estudar-lá. Agora que estou estudando para o desenvolvimento de jogos de fato certamente irei mexer com ela e esse artigo foi um bom começo =D O que me deixou bem curioso é o fato do suporte às animações esqueletais, editor de mapas e a exportação para o iPhone(mesmo que beta).

    Bom artigo, keep it up =D

  • Jonathan Araujo
    avatar

    Ola Marcos, brigado pelo comentário.

    Recomendo você olhar a parte de demos da ogre que dois exemplos muitos bons de uso animação, eu uso blender e o export do blender para o arquivo .mesh do ogre funciona muito bem, pega as animações certinho, você pode referencia elas através de nome, nunca tive problemas.

  • Adrian Yamakawa  - Maravilha.
    avatar

    Opa... estou cursando o curso de Jogos Digitais na PUC o qual o Vinicius é um doa professores, e apartir do semestre que vem vamos sair dos jogos 2D e vamos começar com os Jogos 3D, vou nas férias agora começar a dar uma olhada nesse Ogre ai, olhar as demos e talz!!!

    Valeu pela ajuda ai bro... qualquer problema que eu tenha com a ferramenta eu entro em contato com você aqui mesmo no portal!

  • Jonathan Araujo
    avatar

    A pior parte para quem começa, pelo menos comigo foi instalar o ogre, aqui mesmo no portal tem um ótimo artigo de como fazer isso http://www.pontov.com.br/site/index.php/cpp/62-ogre3d/208-instalando-e -usando-ogre-no-visual-c-2008.

    boa sorte. Pretendo em um próximo artigo falar de programação com ogre

  • Diego Gutierrez
    avatar

    Parabéns pelo post cara...
    Agora que estou formado em Ciências da Computação terei mais tempo para me dedicar esta area, e com essas dicas vai ajudar muito.
    Assim como o Adrian, quando eu tiver algum problema entro em contato ^^
    E espero que em breve eu também consiga colaborar com voces.
    abraço

  • Jonathan Araujo
    avatar

    Obrigado.

    Vale a pena estudar essa área com certeza, para mim é a área mais legal na parte de programação

    boa sorte.

  • Heverton  - Ogre + MinGW + CodeBlocks
    avatar

    Eu fiz alguns passos de uns tutoriais, já consegui executar aquela janela padrão do ogre em um dos samples, mas quando clico pra rodar o exemplo: abre a janela e depois trava. O que tá acontecendo? Uso Windows 7. Placa de vídeo: Intel(R) HD Graphics.

  • Jonathan Araujo
    avatar

    Qual exemplo que trava? Trava e você nao consegue fechar ou trava o computador?

    Não sei se ajuda mas da uma olhada no nesse mini-tutorial e tenta roda o exemplo que ta no post:

    http://www.ogre3d.org/forums/viewtopic.php?f=1&t=56799

  • Heverton Sarah
    avatar

    Eu tentei vários, um deles é o que vem quando criamos um ogre project. Tento executá-lo, aparece a "OGRE Engine Rendering Setup", clico em "OK", abre uma janela... ai aparece uma mensagem do sistema: "nomeDoProjeto.exe parou de funcionar
    Um problema fez com que o programa parasse de funcionar corretamente. O Windows fechará o programa e o notificará caso uma solução esteja disponível."

    Ah e valew ai por responder, vou dá uma olhada no link que você passou.

  • Bruno Crivelari Sanches
    avatar

    Provavelmente esta faltando algum arquivo que o ogre carrega, como plugins.cfg ou algum resource e ele esta dando throw numa exception.

    Recomendo ir debugando o código e ver em que ponto exato ele da erro e se tiver uma exception, ver qual a mensagem de erro dela.

  • Jonathan Araujo
    avatar

    Quando você executa ele cria na mesma pasta que ta teu .exe um arquivo texto Ogre.log ou Ogre.txt...

    La ele descreve tudo que o Ogre faz.

    Se deu algum erro la deva ta escrito.

    qualquer coisa copia esse arquivo aki na mensagem

  • Anônimo
    avatar

    Aqui o que tem no arquivo Ogre.log:


    [code]22:28:31: Creating resource group General
    22:28:31: Creating resource group Internal
    22:28:31: Creating resource group Autodetect
    22:28:31: SceneManagerFactory for type 'DefaultSceneManager' registered.
    22:28:31: Registering ResourceManager for type Material
    22:28:31: Registering ResourceManager for type Mesh
    22:28:31: Registering ResourceManager for type Skeleton
    22:28:31: MovableObjectFactory for type 'ParticleSystem' registered.
    22:28:31: OverlayElementFactory for type Panel registered.
    22:28:31: OverlayElementFactory for type BorderPanel registered.
    22:28:31: OverlayElementFactory for type TextArea registered.
    22:28:31: Registering ResourceManager for type Font
    22:28:31: ArchiveFactory for archive type FileSystem registered.
    22:28:31: ArchiveFactory for archive type Zip registered.
    22:28:31: FreeImage version: 3.9.3
    22:28:31: This program uses FreeImage, a free, open source image library supporting all common bitmap formats. See http://freeimage.sourceforge.net for details
    22:28:31: Supported formats: bmp,ico,jpg,jif,jpeg,jpe,jng,koa,iff,lbm,mng,pbm,pbm,pcd,pcx,pgm,pgm,p ng,ppm,ppm,ras,tga,targa,tif,tiff,wap,wbmp,wbm,psd,cut,xbm,xpm,gif,hdr ,g3,sgi
    22:28:31: DDS codec registering
    22:28:31: Registering ResourceManager for type HighLevelGpuProgram
    22:28:31: Registering ResourceManager for type Compositor
    22:28:31: MovableObjectFactory for type 'Entity' registered.
    22:28:31: MovableObjectFactory for type 'Light' registered.
    22:28:31: MovableObjectFactory for type 'BillboardSet' registered.
    22:28:31: MovableObjectFactory for type 'ManualObject' registered.
    22:28:31: MovableObjectFactory for type 'BillboardChain' registered.
    22:28:31: MovableObjectFactory for type 'RibbonTrail' registered.
    22:28:31: Loading library .\RenderSystem_Direct3D9
    22:28:31: Installing plugin: D3D9 RenderSystem
    22:28:31: D3D9 : Direct3D9 Rendering Subsystem created.
    22:28:31: D3D9: Driver Detection Starts
    22:28:31: D3D9: Driver Detection Ends
    22:28:31: Plugin successfully installed
    22:28:31: Loading library .\RenderSystem_GL
    22:28:31: Installing plugin: GL RenderSystem
    22:28:31: OpenGL Rendering Subsystem created.
    22:28:31: Plugin successfully installed
    22:28:31: Loading library .\Plugin_ParticleFX
    22:28:31: Installing plugin: ParticleFX
    22:28:31: Particle Emitter Type 'Point' registered
    22:28:31: Particle Emitter Type 'Box' registered
    22:28:31: Particle Emitter Type 'Ellipsoid' registered
    22:28:31: Particle Emitter Type 'Cylinder' registered
    22:28:31: Particle Emitter Type 'Ring' registered
    22:28:31: Particle Emitter Type 'HollowEllipsoid' registered
    22:28:31: Particle Affector Type 'LinearForce' registered
    22:28:31: Particle Affector Type 'ColourFader' registered
    22:28:31: Particle Affector Type 'ColourFader2' registered
    22:28:31: Particle Affector Type 'ColourImage' registered
    22:28:31: Particle Affector Type 'ColourInterpolator' registered
    22:28:31: Particle Affector Type 'Scaler' registered
    22:28:31: Particle Affector Type 'Rotator' registered
    22:28:31: Particle Affector Type 'DirectionRandomiser' registered
    22:28:31: Particle Affector Type 'DeflectorPlane' registered
    22:28:31: Plugin successfully installed
    22:28:31: Loading library .\Plugin_BSPSceneManager
    22:28:31: Installing plugin: BSP Scene Manager
    22:28:31: Plugin successfully installed
    22:28:31: Loading library .\Plugin_OctreeSceneManager
    22:28:32: Installing plugin: Octree & Terrain Scene Manager
    22:28:32: Plugin successfully installed
    22:28:32: Loading library .\Plugin_CgProgramManager
    22:28:32: Installing plugin: Cg Program Manager
    22:28:32: Plugin successfully installed
    22:28:32: *-*-* OGRE Initialising
    22:28:32: *-*-* Version 1.4.2 (Eihort)
    22:28:32: Creating resource group Bootstrap
    22:28:32: Added resource location 'C:/OgreSDK/media/packs/OgreCore.zip' of type 'Zip' to resource group 'Bootstrap'
    22:28:32: Added resource location 'C:/OgreSDK/media' of type 'FileSystem' to resource group 'General'
    22:28:32: Added resource location 'C:/OgreSDK/media/fonts' of type 'FileSystem' to resource group 'General'
    22:28:32: Added resource location 'C:/OgreSDK/media/materials/programs' of type 'FileSystem' to resource group 'General'
    22:28:32: Added resource location 'C:/OgreSDK/media/materials/scripts' of type 'FileSystem' to resource group 'General'
    22:28:32: Added resource location 'C:/OgreSDK/media/materials/textures' of type 'FileSystem' to resource group 'General'
    22:28:32: Added resource location 'C:/OgreSDK/media/models' of type 'FileSystem' to resource group 'General'
    22:28:32: Added resource location 'C:/OgreSDK/media/overlays' of type 'FileSystem' to resource group 'General'
    22:28:32: Added resource location 'C:/OgreSDK/media/particle' of type 'FileSystem' to resource group 'General'
    22:28:32: Added resource location 'C:/OgreSDK/media/gui' of type 'FileSystem' to resource group 'General'
    22:28:32: Added resource location 'C:/OgreSDK/media/DeferredShadingMedia' of type 'FileSystem' to resource group '...

  • Heverton Sarah
    avatar

    Não coube o código inteiro, mas identifiquei este erro no log:

    OGRE EXCEPTION(2:InvalidParametersException): Parameter called lightSpecularColor does not exist. in GpuProgramParameters::_findNamedConstantDefinition at C:\!111111111111\ogrenew\OgreMain\src\OgreGpuProgr am.cpp (line 877)
    22:28:34: Error at line 29 of deferred_post_minilight.hlsl.program: Invalid param_named_auto attribute - Parameter called lightSpecularColor does not exist.

  • Jonathan Araujo
    avatar

    Qual esse exemplo que vc ta rodando?

    Seu driver de video ta atualizado?

    talvez tua placa de vídeo não tenha suporte a um recurso que esteja usando nesse sample

  • Heverton Sarah
    avatar

    O sample é o "terrain"
    Sobre a placa de vídeo... vou verificar.

    Obrigado aew, por está ajudando, quero logo testar se meu ogre ta funcionando pra começar a estudá-lo.

  • Heverton Sarah
    avatar

    Eu executei o exemplo deste tutorial que você passou, mas ocorreu alguns erros. Olha aqui o log do codeblocks:


    -------------- Build: Debug in TesteDoObre ---------------

    mingw32-g++.exe -Wall -mthreads -fmessage-length=0 -fexceptions -fident -DWIN32 -D_WINDOWS -D_DEBUG -g -Ic:\OgreSDK\include -Ic:\OgreSDK\include\OGRE -Ic:\OgreSDK\include\OIS -Ic:\OgreSDK\boost_1_42 -c H:\OpenGL\TesteDoObre\TutorialApplication.cpp -o obj\Debug\TutorialApplication.o
    In file included from c:\program files (x86)\codeblocks\mingw\bin\../lib/gcc/mingw32/4.4.1/in clude/c++/ext/hash_map:59,
    from c:\OgreSDK\include/OgreStdHeaders.h:38,
    from c:\OgreSDK\include/OgreMemoryManager.h:46,
    from c:\OgreSDK\include/OgrePrerequisites.h:87,
    from c:\OgreSDK\include/OgreCamera.h:33,
    from H:\OpenGL\TesteDoObre\BaseApplication.h:20,
    from H:\OpenGL\TesteDoObre\TutorialApplication.h:20,
    from H:\OpenGL\TesteDoObre\TutorialApplication.cpp:17:
    c:\program files (x86)\codeblocks\mingw\bin\../lib/gcc/mingw32/4.4.1/in clude/c++/backward/backward_warning.h:28:2: warning: #warning This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date. Please use a non-deprecated interface with equivalent functionality instead. For a listing of replacement headers and interfaces, consult the file backward_warning.h. To disable this warning use -Wno-deprecated.
    In file included from H:\OpenGL\TesteDoObre\TutorialApplication.h:20,
    from H:\OpenGL\TesteDoObre\TutorialApplication.cpp:17:
    H:\OpenGL\TesteDoObre\BaseApplication.h:34:22: error: SdkTrays.h: No such file or directory
    H:\OpenGL\TesteDoObre\BaseApplication.h:35:26: error: SdkCameraMan.h: No such file or directory
    In file included from H:\OpenGL\TesteDoObre\TutorialApplication.h:20,
    from H:\OpenGL\TesteDoObre\TutorialApplication.cpp:17:
    H:\OpenGL\TesteDoObre\BaseApplication.h:37: error: expected class-name before ',' token
    In file included from H:\OpenGL\TesteDoObre\TutorialApplication.h:20,
    from H:\OpenGL\TesteDoObre\TutorialApplication.cpp:17:
    H:\OpenGL\TesteDoObre\BaseApplication.h:37: error: 'OgreBites' has not been declared
    H:\OpenGL\TesteDoObre\BaseApplication.h:37: error: expected '{' before 'SdkTrayListener'
    H:\OpenGL\TesteDoObre\BaseApplication.h:38: error: invalid type in declaration before '{' token
    H:\OpenGL\TesteDoObre\BaseApplication.h:38: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x
    H:\OpenGL\TesteDoObre\BaseApplication.h:39: error: expected primary-expression before 'public'
    H:\OpenGL\TesteDoObre\BaseApplication.h:39: error: expected '}' before 'public'
    H:\OpenGL\TesteDoObre\BaseApplication.h:39: error: expected ',' or ';' before 'public'
    H:\OpenGL\TesteDoObre\BaseApplication.h:41: error: declaration of '~BaseApplication' as non-member
    H:\OpenGL\TesteDoObre\BaseApplication.h:43: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:45: error: expected unqualified-id before 'protected'
    H:\OpenGL\TesteDoObre\BaseApplication.h:47: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:48: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:49: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:50: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:51: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:51: error: function 'void createScene()' is initialized like a variable
    H:\OpenGL\TesteDoObre\BaseApplication.h:52: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:53: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:54: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:55: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:56: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:59: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:62: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:63: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseA...

  • Heverton Sarah
    avatar

    Eu executei o exemplo deste tutorial que você passou, mas ocorreu alguns erros. Olha aqui o log do codeblocks:


    -------------- Build: Debug in TesteDoObre ---------------

    mingw32-g++.exe -Wall -mthreads -fmessage-length=0 -fexceptions -fident -DWIN32 -D_WINDOWS -D_DEBUG -g -Ic:\OgreSDK\include -Ic:\OgreSDK\include\OGRE -Ic:\OgreSDK\include\OIS -Ic:\OgreSDK\boost_1_42 -c H:\OpenGL\TesteDoObre\TutorialApplication.cpp -o obj\Debug\TutorialApplication.o
    In file included from c:\program files (x86)\codeblocks\mingw\bin\../lib/gcc/mingw32/4.4.1/in clude/c++/ext/hash_map:59,
    from c:\OgreSDK\include/OgreStdHeaders.h:38,
    from c:\OgreSDK\include/OgreMemoryManager.h:46,
    from c:\OgreSDK\include/OgrePrerequisites.h:87,
    from c:\OgreSDK\include/OgreCamera.h:33,
    from H:\OpenGL\TesteDoObre\BaseApplication.h:20,
    from H:\OpenGL\TesteDoObre\TutorialApplication.h:20,
    from H:\OpenGL\TesteDoObre\TutorialApplication.cpp:17:
    c:\program files (x86)\codeblocks\mingw\bin\../lib/gcc/mingw32/4.4.1/in clude/c++/backward/backward_warning.h:28:2: warning: #warning This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date. Please use a non-deprecated interface with equivalent functionality instead. For a listing of replacement headers and interfaces, consult the file backward_warning.h. To disable this warning use -Wno-deprecated.
    In file included from H:\OpenGL\TesteDoObre\TutorialApplication.h:20,
    from H:\OpenGL\TesteDoObre\TutorialApplication.cpp:17:
    H:\OpenGL\TesteDoObre\BaseApplication.h:34:22: error: SdkTrays.h: No such file or directory
    H:\OpenGL\TesteDoObre\BaseApplication.h:35:26: error: SdkCameraMan.h: No such file or directory
    In file included from H:\OpenGL\TesteDoObre\TutorialApplication.h:20,
    from H:\OpenGL\TesteDoObre\TutorialApplication.cpp:17:
    H:\OpenGL\TesteDoObre\BaseApplication.h:37: error: expected class-name before ',' token
    In file included from H:\OpenGL\TesteDoObre\TutorialApplication.h:20,
    from H:\OpenGL\TesteDoObre\TutorialApplication.cpp:17:
    H:\OpenGL\TesteDoObre\BaseApplication.h:37: error: 'OgreBites' has not been declared
    H:\OpenGL\TesteDoObre\BaseApplication.h:37: error: expected '{' before 'SdkTrayListener'
    H:\OpenGL\TesteDoObre\BaseApplication.h:38: error: invalid type in declaration before '{' token
    H:\OpenGL\TesteDoObre\BaseApplication.h:38: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x
    H:\OpenGL\TesteDoObre\BaseApplication.h:39: error: expected primary-expression before 'public'
    H:\OpenGL\TesteDoObre\BaseApplication.h:39: error: expected '}' before 'public'
    H:\OpenGL\TesteDoObre\BaseApplication.h:39: error: expected ',' or ';' before 'public'
    H:\OpenGL\TesteDoObre\BaseApplication.h:41: error: declaration of '~BaseApplication' as non-member
    H:\OpenGL\TesteDoObre\BaseApplication.h:43: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:45: error: expected unqualified-id before 'protected'
    H:\OpenGL\TesteDoObre\BaseApplication.h:47: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:48: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:49: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:50: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:51: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:51: error: function 'void createScene()' is initialized like a variable
    H:\OpenGL\TesteDoObre\BaseApplication.h:52: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:53: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:54: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:55: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:56: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:59: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:62: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseApplication.h:63: error: 'virtual' outside class declaration
    H:\OpenGL\TesteDoObre\BaseA...

  • Jonathan Araujo
    avatar

    Pelas mensagens de erro.
    Falta as include necessárias para os tutoriais do Ogre...

    la no search directoiries do teu code::blocks adiciona:


    .............pastaDoOgreSDK/samples/Common/include

  • Heverton Sarah
    avatar

    aqui não tem o diretorio $(OGRE_HOME)\samples\Common\include, mas sim : $(OGRE_HOME)\samples\include. Adicionei este caminho ai la o search directories do code::blocks, mas continou com o mesmo erro.

  • Jonathan Araujo
    avatar

    Vendo o log aqui, eu percebi que ele não achou os includes:

    SdkTrays.h
    e
    SdkCameraMan.h

    Esses include estão na pasta:

    pastaDoOgre\include\OGRE

    verifica se isso esta em teu include directories..

    aproveita e verifica se a var de ambiente OGRE_HOME ta certo.

    Uma outra dica que eu posso te dar, é que ja fizeram um app wizard para quem utiliza code::blocks, da uma olhada em:

    <br /> http://www.ogre3d.org/forums/viewtopic.php?f=5&t=54819<br />

  • Jonathan Araujo
    avatar

    Vendo o log aqui, eu percebi que ele não achou os includes:

    SdkTrays.h
    e
    SdkCameraMan.h

    Esses include estão na pasta:

    pastaDoOgre\include\OGRE

    verifica se isso esta em teu include directories..

    aproveita e verifica se a var de ambiente OGRE_HOME ta certo.

    Uma outra dica que eu posso te dar, é que ja fizeram um app wizard para quem utiliza code::blocks, da uma olhada em:

    htt p://www.ogre3d.org/forums/viewtopic.php?f=5&t=54819

  • Heverton Sarah
    avatar

    Hum...
    Dentro da pasta include tem somente as pastas:
    CEGUI
    ode
    OIS
    opt
    WIN32

    E ja tenho esse app wizard.

    :S

  • Jonathan Araujo
    avatar

    Estranho... vc instalo na mão? ou usou akeles prebuit SDK?

    Tu pode procurar via windows onde estao esses arquivos .h, e colocar o diretorio la no search directories

  • Heverton Sarah
    avatar

    Eu baixei o OGRE 1.7.2 SDK for MinGW. Procurei esses .h e não achei...
    :S

  • Heverton Sarah
    avatar

    Eu uso esse OGRE 1.7.2 SDK for MinGW.

  • Heverton Sarah
    avatar

    Cara, desinstalei o ogre rsrs.

    Agora instalei novamente seguindo este tutorial:
    http://www.ogre3d.org/tikiwiki/Installing+the+Ogre+SDK

    Fiz tudo e agora tem essa pasta OGRE.

    Mas surgiu uma dúvida: lá no site do ogre, na sessão SDK, onde tem "OGRE 1.7.2 SDK for MinGW Built with the official MinGW GCC 4.5 release."

    Built with teh official MinGW GCC 4.5 significa que tenho que usar esta versão do MinGW ou posso usar a mais atual?

    Eu to usando a do codeblocks, até coloquei "set MINGW=C:\Program Files (x86)\CodeBlocks\MinGW" no BuildSamples.bat. E quando executei o BuildSamples.bat verifiquei que aconteceram alguns erros durante o carregamento. Isso vai ocasionar algum problema? Será se é pq coloquei o MinGW do CodeBlocks ?

  • Jonathan Araujo
    avatar

    Bem:
    "Built with the official MinGW GCC 4.5"

    quer dizer que o build dele foi feito com o GCC 4.5...

    acredito que nao deve ter muito problemas com versões mais novas.

    posta ai quais foram os erros que deram, as vezes são apenas warnings

  • Heverton Sarah
    avatar

    Eh.... num era erro naum hehe.

    Situação atual:

    segui o tutorial: Setting Up An Application - CodeBlocks

    Depois compilei. Apareceu um erro dizendo que não estava achando os arquivos resources_d e plugins_d.

    Então voltei ao tutorial e vi este texto la na conclusão:
    "That's it.
    You should now be able to compile and run your Ogre application.
    Well, maybe not until you've copied it to the Ogre sdk bin directory (or take resources.cfg and plugins.cfg from there).
    Or by copying Ogre dlls and media..
    But that's something for a later wiki article.. "

    Como na pasta bin\debug do projeto que criei não tem esses arquivos, copiei o executavel para a pasta $(Ogre_Home)\bin\Debug. Abri o arquivo e executou, mas uma tela preta com dois símbolos: um mostra os FPS e o outro é o nome Ogre. Hehe, consegui? Essa é a maneira correta? copiar o executável para a pasta $(Ogre_Home)\bin\Debug? Tem como fazer o codeblocks colocar o executável lá automaticamente?

    Valeu ae cara, tá ajudando!
    Ainda aprendo isso, rsrs.

  • Heverton Sarah
    avatar

    Aqui o log do ogre:

    23:14:27: OGRE EXCEPTION(7:InternalErrorException): Unable to find CG profile enum for program DOF_Blend_ps: The parameter used is invalid. in CgProgram::selectProfile at ../../../../../../PlugIns/CgProgramManager/src/OgreCgProgramManagerDll .cpp (line 67)
    23:14:27: High-level program DOF_Blend_ps encountered an error during loading and is thus not supported.
    OGRE EXCEPTION(7:InternalErrorException): Unable to find CG profile enum for program DOF_Blend_ps: The parameter used is invalid. in CgProgram::selectProfile at ../../../../../../PlugIns/CgProgramManager/src/OgreCgProgramManagerDll .cpp (line 67)
    23:14:27: Parsing script Embossed.material
    23:14:27: Parsing script Example-Water.material
    23:14:27: Parsing script Examples-Advanced.material
    23:14:27: Parsing script Examples-DynTex.material
    23:14:27: Parsing script Examples-Water.material
    23:14:27: Parsing script Examples.material
    23:14:27: OGRE EXCEPTION(2:InvalidParametersException): Parameter called camObjPos does not exist. in GpuProgramParameters::_findNamedConstantDefinition at ../../../../../OgreMain/src/OgreGpuProgramParams.cpp (line 1433)
    23:14:27: Compiler error: invalid parameters in Examples.material(837): setting of constant failed
    23:14:27: Parsing script facial.material
    23:14:27: Parsing script Glass.material
    23:14:27: Parsing script GLSLSwizzle.material
    23:14:27: Parsing script Halftone.material
    23:14:27: Parsing script hdr.material
    23:14:27: Parsing script HeatVision.material
    23:14:27: Parsing script Hurt.material
    23:14:27: Parsing script instancing.material
    23:14:27: Parsing script Invert.material
    23:14:27: Parsing script IsoSurf.material
    23:14:27: Parsing script Laplace.material
    23:14:27: Parsing script MotionBlur.material
    23:14:27: Parsing script MRTtest.material
    23:14:27: Parsing script NightVision.material
    23:14:27: Parsing script Ocean.material
    23:14:28: Parsing script OffsetMapping.material
    23:14:28: Parsing script Ogre.material
    23:14:28: Parsing script OldMovie.material
    23:14:28: Parsing script OldTV.material
    23:14:28: Parsing script ParticleGS.material
    23:14:28: OGRE EXCEPTION(7:InternalErrorException): Unable to compile Cg program Ogre/ParticleGS/GenerateVS: The compile returned an error.
    (0) : error C6015: Output 'POSITION' not completely written
    in CgProgram::loadFromSource at ../../../../../../PlugIns/CgProgramManager/src/OgreCgProgramManagerDll .cpp (line 67)
    23:14:28: High-level program Ogre/ParticleGS/GenerateVS encountered an error during loading and is thus not supported.
    OGRE EXCEPTION(7:InternalErrorException): Unable to compile Cg program Ogre/ParticleGS/GenerateVS: The compile returned an error.
    (0) : error C6015: Output 'POSITION' not completely written
    in CgProgram::loadFromSource at ../../../../../../PlugIns/CgProgramManager/src/OgreCgProgramManagerDll .cpp (line 67)
    23:14:28: OGRE EXCEPTION(7:InternalErrorException): Unable to compile Cg program Ogre/ParticleGS/DisplayVS: The compile returned an error.
    (249) : warning C7050: "output.color" might be used before being initialized
    (0) : error C6015: Output 'POSITION' not completely written
    in CgProgram::loadFromSource at ../../../../../../PlugIns/CgProgramManager/src/OgreCgProgramManagerDll .cpp (line 67)
    23:14:28: High-level program Ogre/ParticleGS/DisplayVS encountered an error during loading and is thus not supported.
    OGRE EXCEPTION(7:InternalErrorException): Unable to compile Cg program Ogre/ParticleGS/DisplayVS: The compile returned an error.
    (249) : warning C7050: "output.color" might be used before being initialized
    (0) : error C6015: Output 'POSITION' not completely written
    in CgProgram::loadFromSource at ../../../../../../PlugIns/CgProgramManager/src/OgreCgProgramManagerDll .cpp (line 67)
    23:14:28: OGRE EXCEPTION(7:InternalErrorException): Unable to compile Cg program Ogre/ParticleGS/DisplayPS: The compile returned an error.
    (323) : fatal error C9999: unexpected cast operation
    in CgProgram::loadFromSource at ../../../../../../PlugIns/CgProgramManager/src/OgreCgProgramManagerDll .cpp (line 67)
    23:14:28: High-level program Ogre/ParticleGS/DisplayPS encountered an error during loading and is thus not supported.
    OGRE EXCEPTION(7:InternalErrorException): Unable to compile Cg program Ogre/ParticleGS/DisplayPS: The compile returned an error.
    (323) : fatal error C9999: unexpected cast operation
    in CgProgram::loadFromSource at ../../../../../../PlugIns/CgProgramManager/src/OgreCgProgramManagerDll .cpp (line 67)
    23:14:28: Parsing script Penguin.material
    23:14:28: Parsing script Posterize.material
    23:14:28: Parsing script pssm.material
    23:14:28: Parsing script RadialBlur.material
    23:14:28: Parsing script RZR-002.material
    23:14:28: Parsing script ShaderSystem.material
    23:14:28: Parsing script shadows.material
    23:14:28: Parsing script SharpenEdges.material
    23:14:28: Parsing script sibenik.material
    23:14:28: Parsing script smoke.material
    23:14:28: Parsing script Tiling.material
    23:14:28: Parsing script VarianceShadowmap.material
    23:14...

  • Bruno Crivelari Sanches
    avatar

    Não diria que é errado, mas também não é o jeito mais simples.

    Eu prefiro criar um diretório de trabalho, onde coloco todos assets do jogo incluindo esses arquivos de configuração.

    Geralmente na IDE tem uma configuração para você dizer qual o diretório de trabalho do seu programa, no caso do Visual é chamado de "Working Directory", você configura na sua IDE para ela considerar o diretório onde tem os assets como sendo o de trabalho, assim toda vez que você executar seu programa de dentro da IDE, ele vai rodar como se estivesse nesse diretório e vai funcionar normalmente, muito mais simples que ficar copiando arquivo toda hora para testar.

  • Heverton Sarah
    avatar

    Vlw cara! Resolvi o problema do executável, achei em properties do projeto, tem uma opção "Execution working dir". Agora falta verificar esses erros ai em cima.

  • Bruno Crivelari Sanches
    avatar

    Nunca presenciei esse erro, mas se você não alterou nenhum arquivo cg, suspeito que sua placa não suporta os recursos de shaders que algum desses arquivos tenta usar.

    T+

  • Jonathan Araujo
    avatar

    Pode ser o que o Bruno falou

    Cg é uma linguagem de Shader, não vou entrar muito em detalhes, mas qual sua placa de vídeo? Ela suporta shader 2.0?

    Acontece algum problema no projeto q vc ta rodando? Qual sample tu ta rodando?

  • Heverton Sarah
    avatar

    Intel Graphics Media Accelerator HD. Processador Intel Core i5

  • Bruno Crivelari Sanches
    avatar

    Teria que saber o modelo dela, mas por ser uma placa intel, provavelmente não suporta.

    T+

  • Heverton Sarah
    avatar

    Galera to tentando executar o exemplo dessa página:
    http://www.ogre3d.org/tikiwiki/Setting+Up+An+Application+-+CodeBlocks< /p>

    Se o problema é a placa de vídeo, tem algum sample mais simples para eu testar?

  • Heverton Sarah
    avatar

    Aeee! Demorei pra responder... tava meio ocupado com a faculdade, mas tentei este exemplo ai, consegui! Obrigado galera, agora vou começar a estudar o Ogre.

  • Jonathan Araujo
    avatar

    Ótimo...

    se precisar não deixe de perguntar

  • Washington
    avatar

    Gostei do artigo li inclusive duas vezes agora que passei na terceira percebi o Windows SDK,ele é mesmo necessario para o ogre funcionar ou não,pq se for vai explicar ou não,por que o ogre não acha suas dlls , apesar de funcionar mesmo assim.

    Quando eu aprender algo de C++ e tiver tempo vou arriscar um pouco por em quanto não vou nem tentar em 1 Dia sei que não vai sair nada,e tenho que estudar para o IFS

  • Bruno Crivelari Sanches
    avatar

    Sim, é necessário, o Ogre utiliza funções da API do Windows e alguns exemplos também.

    T+

  • Izaias Araújo  - Ele funciona no Android ?
    avatar

    Ele funciona no Android ? Andei vendo algumas coisas a esse respeito, mas gostaria de saber se dá pra usar ele no Android, e seria através do NDK ?

  • Bruno
    avatar

    é possível sim, vi alguma coisa no forum a respeito disso, mas não me aprofundei. Não ouvi falar ainda de nada sendo vendido em Android que tenha usado o Ogre (mas isso não quer dizer que não exista). Sei que já existem demos dele rodando no android.

    Sim, é com NDK.

  • camila
    avatar

    Tu acha que roda em pcs mais antigos?

  • Anônimo
    avatar

    Depende dos recursos que você usar. Roda em maquina antigas sim.

  • camila
    avatar

    Tu acha que o ogre pode ser usado em um pc mais antigo?

  • Vinicius Godoy
    avatar

    Depende do quao antiga. Tem que verificar so a versao de shader da placa de video.

  • Jorge Rosa  - Bom Artigo.
    avatar

    Artigo sobre o Ogre3D, simples e muito bem escrito. Ainda por cima em Português, o que é uma raridade. Obrigado pelas dicas, Jonathan. :)

  • Jailson PS Junior  - Editor
    avatar

    Essa Source Pre-Compilada ,já vem com o Editor ? ou seja o Editor (GUI)
    mais o Source Ogre3D ?

  • Anônimo
    avatar

    Não, como comentado no artigo o Ogre é apenas um motor gráfico, não um motor de jogo completo.

    Existe um editor não oficial: http://www.ogitor.org/

  • Jailson PS Junior  - Editor
    avatar

    Esse "Ogitor" tem a capacidade de criar "Scripts","Objects","Cameras" ou ate mesmo compilar ou pelo menos entrar em modo "Debug" ?

  • Anônimo
    avatar

    Não, Ogitor e Ogre não são game maker. Você programa em C++, não existe scripts, a não ser que você adicione suporte a scripts.

    A linguagem C++ no windows tem um dos melhores ambientes de debug (visual Studio) que existe.

  • gwyra bebe  - 3D
    avatar

    Como construir um 3D com ogre?

Escrever um comentário
Your Contact Details:
Gravatar enabled
Comentário:
[b] [i] [u] [url] [quote] [code] [img]   
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch::(:shock:
:X:side::):P:unsure::woohoo::huh::whistle:;):S:!::?::idea::arrow:
Security
Por favor coloque o código anti-spam que você lê na imagem.
LAST_UPDATED2  

Busca

Linguagens

Twitter