Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1 Introducción
OGRE (Object Oriented Graphics Engine) [1] es un motor de gráficos en 3D
multiplataforma que permite ejecutar aplicaciones 3D en diferentes sistemas
operativos con independencia del la biblioteca gráfica que se utilice. Permite
ejecutarse bajo DirectX o bien OpenGL. Está desarrollado bajo licencia LGPL por
lo que no se tiene que pagar por su uso y además existe una comunidad que
incluye numerosas módulos para diversas como para el soporte de sonido y física.
A diferencia de los motores de videojuegos, no está orientado a un tipo de
videojuegos en los que el usuario puede cambiar determinados personajes o
realizar limitados cambios en la codificación mediante la inclusión de una serie de
script (Multiverse [4]). Es básicamente una biblioteca que permite utilizar
OpenGL y DirectX a alto nivel permitiendo crear aplicaciones de modo sencillo,
además incluye ciertas facilidades como son la gestión del entorno mediante
escenas o la carga de modelos 3D desarrollados en programas de modelado.
Existen bibliotecas en más lenguajes como JMonkeyEngine [3] que permite
realizar un trabajo similar en java.
Existen otras bibliotecas que facilitan la carga de modelos 3D como es el
SDK del formato de intercambio FBX [2], no obstante, el uso de dichas
bibliotecas requiere de gran conocimiento de las mismas y además es necesario
realizar una gestión de las escenas, animaciones y representación de los modelos
de modo manual. Estas bibliotecas se limitan a facilitar el acceso a la información
de los modelos, pero todo el proceso de animación y renderizado debe hacerse
modo manual, por ello, es bastante complejo poder realizar un videojuego
limitándose a este tipo de bibliotecas. El trabajo que puedas realizar en un mes
con este tipo de bibliotecas se puede llevar a cabo en dos o tres días mediante
Ogre.
1
J.M. Corchado, JF. De Paz
Versión 1.1
2 Entorno
El entorno que se va a utilizar para el desarrollo es Visual Studio 2008, en caso de
querer utilizar un entorno diferente, en la página
http://www.ogre3d.org/wiki/index.php/Installing_An_SDK [5], se tiene una
amplia descripción de para la instalación en diversos entornos.
En la sección de descargas de Ogre [1], se tiene el SDK disponible, se
selecciona prebuilt y a continuación se descarga la versión para el entorno que se
vaya a usar. Particularmente, la seleccionada ha sido OGRE 1.6.4 SDK for Visual
C++ .Net 2008 (9.0) [6]. Hay que fijarse en la versión si no se quieren tener
problemas al abrir los proyectos. Se descarga y se procede a instalar, no tiene
complicaciones.
En la página
http://www.ogre3d.org/wiki/index.php/The_Complete_Blanks_Guide_To_Using_
The_OGRE_SDK_AppWizard [7], se describe paso a paso la integración del
entorno con el SDK. Básicamente, lo único que hay que hacer es descargarse el
wizard de http://sourceforge.net/projects/ogreconglo/files/ [8], descomprimirlo y
ejecutar el js de la versión de visual studio que se disponga, particularmente
VC9_setup.js. Si se ejecuta este script bajo Windows Vista, abrir la consola en
modo administrador y escribir el comando. En XP se puede ejecutar con doble
clic.
Una vez instalado ya se dispone de la opción en el visual studio para crear
un proyecto Ogre tal y como se puede ver en la siguiente figura (Fig. 1).
2
OGRE Versión 1.1
3
J.M. Corchado, JF. De Paz
Versión 1.1
jerarquía de los nodos de la escena al cargar las entidades. Las entidades son
implementaciones de la clase MovableObject.
El funcionamiento habitual, es crear un nodo raíz de la escena, a
continuación se crea un nodo en la escena hijo y es donde se asocia una nueva
entidad, esta nueva entidad que se asocia con el nuevo nodo, puede ser un modelo
3D. En el siguiente código se puede ver un ejemplo:
//cargo el personaje en la escena
entityNinja = mSceneMgr->createEntity("Ninja","ninja.mesh");
entityNinja->setCastShadows(true);
mSceneMgr->getRootSceneNode()->createChildSceneNode()-
>attachObject(entityNinja);
Es fácil de seguir el código, como se puede ver, se crea una nueva entidad
Ninja, posteriormente, se crea una nodo que cuelga del nodo raíz de la escena y se
asocia con el objeto que contiene a la entidad del ninja. Más adelante se verán
ejemplos más básicos.
3.4 Arquitectura de OGRE
Ogre sigue una arquitectura jerárquica en la creación de los entornos tal y como se
puedo ver un poco en apartado de la Visión Global (3). Toda aplicación que se
cree seguirá una estructura similar a la mostrada en la siguiente figura (Fig. 2). En
la figura se puede ver el nodo raíz del árbol que contiene de hijos las posibles
escenas que se tienen en el programa. Las escenas tienen asociadas elementos
como las cámaras y luces. Las escenas están compuesta de un nodo raíz que tiene
a su vez, nodos hijos que se puede apilar jerárquicamente, así el nodo 1.1 es hijo
del nodo 1 que a su vez es hijo del nodo Raiz de la Escena1. Los nodos, están
asociados con entidades que suelen corresponderse con mallas cargadas de
modelos 3D.
4
OGRE Versión 1.1
Listener
Nodo Raíz (FrameListener
(Root)
Luz 1
(Light)
Luz 2
Camara (Light)
(Camara)
Camara
(Camara)
Entidad 1
(Entity) Nodo Raiz
(SceneNode)
Entidad 2 Animación
(Entity) (AnimationState)
Nodo 1 Nodo 2
(SceneNode) (SceneNode)
Entidad 1.1
(Entity)
Nodo 1.1
(SceneNode)
5
J.M. Corchado, JF. De Paz
Versión 1.1
4 Primeros pasos
Existen varias posibilidades parar crear una aplicación, lo más fácil es usar la
plantilla por defecto ExampleApplication. La otra alternativa es bastante más
complicada y por ahora no se verá.
Como primer paso se va a crear un nuevo proyecto, para ellos seguimos
los siguientes pasos:
1. Abrimos el Visual Studio, tener en cuenta que si se está trabajando con
Windows Vista es mejor abrirlo como administrador para no tener
problemas con el acceso a disco.
2. Seleccionamos el proyecto Ogre tal y como se puede ver en la
siguiente figura (Fig. 3) y ponemos el nombre del proyecto, en este
caso ejemplo2.
3. Sale el formulario (Fig. 4) para crear el proyecto, lo único que hay que
hacer es pulsar en siguiente
6
OGRE Versión 1.1
7
J.M. Corchado, JF. De Paz
Versión 1.1
8
OGRE Versión 1.1
9
J.M. Corchado, JF. De Paz
Versión 1.1
//funciones miembro
public:
EscenaApp();
~EscenaApp();
protected:
void createScene();
};
10
OGRE Versión 1.1
11