miércoles, 11 de julio de 2012

Ogre3D parte III: Nuestra primera aplicación

En esta ocasión vamos a crear nuestro particular "Hola Mundo" con Ogre 3D desde el principio. Vamos a aprender a crear una ventana y a renderizar un modelo simple en tres dimensiones.




Lo primero que tenemos que hacer es ser ordenados y crear la estructura de directorios para alojar nuestro proyecto. Creamos una carpeta raíz llamada "EjemploOgre" y de ella colgarán las carpetas "codeblocks", "src", "inc" y "plugins". La carpeta "codeblocks" contendrá los archivos de configuración de nuestro IDE codeblocks. En la carpeta "src" contendrá nuestro código fuente y la carpeta "inc" nuestros archivos de cabecera. Por último, la carpeta "plugins" contendrá los plugins de Ogre de los que hará uso nuestra aplicación.

Los siguientes pasos que haremos los explicaré de una manera esquemática. Si tenéis alguna duda, repasad el post anterior: Ogre3D parte II: Instalación de Ogre3D en Ubuntu.

  • Abrimos codeblocks y creamos un nuevo proyecto vacío llamado "EjemploOgre" y hacemos que se guarde en la carpeta "EjemploOgre/codeblocks".
  • Creamos un nuevo archivo llamado "main.cpp" en la carpeta "src" y lo añadimos a nuestro proyecto.
  • Copiamos el siguiente código en el archivo "main.cpp":

#include "ExampleApplication.h"

class Ejemplo : public ExampleApplication
{
    public:

    void createScene()
    {
        Ogre::Entity* ent =
            mSceneMgr->createEntity("MiEntidad","Sinbad.mesh");
        mSceneMgr->getRootSceneNode()->attachObject(ent);
    }
};


int main (void)
{
    Ejemplo apli;
    apli.go();

    return 0;
}

  • Añadimos las librerias "OgreMain" y "OIS" a nuestro proyecto.
  • Añadimos el directorio de búsqueda "/usr/include/OGRE/".
  • Copiamos los archivos "plugins.cfg" y "resources.cfg" en la carpeta "codeblocks".
  • Compilamos y ejecutamos el proyecto.
  • Para navegar por la escena pulsar las teclas WASD y/o el ratón. Para salir de la ventana de Ogre pulsamos la tecla "Escape".

Pasemos a ver que ha ocurrido.

Hemos creado la clase "Ejemplo" que hereda de "ExampleApplication". Esta última es una clase que viene con el SDK de Ogre y que está pensada para hacernos el aprendizaje de Ogre mucho más fácil. La clase "ExampleApplication" inicia Ogre por nosotros, carga algunos modelos de ejemplo que podemos utilizar e implementa una cámara para que podamos movernos por la escena.

En la función principal hemos creado una instancia de "Ejemplo" y hemos llamado a la función "go()" para inicar la aplicación y cargar Ogre. Cuando Ogre se inicia, carga tres archivos de configuración: ogre.cfg, plugins.cfg y resources.cfg. "ogre.cfg" contiene la configuración que hemos elegido anteriormente en el diálogo de configuración de Ogre que se inicia cada vez que iniciamos una aplicación de Ogre. "plugins.cfg" contiene los plugins que Ogre puede cargar, y los más importantes son los de renderizado OpenGL y DirectX. "resources.cfg" contiene una lista de recursos que Ogre puede cargar cuando se inicia.

La clase "Ejemplo" sobrecarga la función virtual "createScene()", que es donde cargamos los elementos que se visualizarán en nuestra escena. En nuestro caso de ejemplo queremos que se muestre Simbad, que es la mascota de Ogre 3D. Para ello simplemente creamos una entidad en la que cargamos el modelo de Simbad (proporcionado por el SDK de Ogre 3D) y vinculamos dicha entidad con el nodo raiz del gestor de escenas.

En otros capítulos veremos los conceptos de gestor de escenas, entidad y nodo.

Originalmente publicado para AraGames .

No hay comentarios:

Publicar un comentario