Desarrollo de Juegos en GNU/Linux
            “con OGRE”




                   Comunidad Arch Linux Chile
                     “D´ del Software Libre
                       ıa
                             2010”

                   Curic´ - 25 de septiembre de
                        o
                               2010
¿Por que pensar en
desarrollar Juegos?
Por que nos gustan.
Por que nos gustan.
Por que se puede.
Por que nos gustan.
Por que se puede.
Por que hace falta.
¿Que es OGRE?
Un motor de renderizado de
gr´ficos.
  a
Un motor de renderizado de
gr´ficos.
  a
Es un framework de
desarrollo.
Caracter´
        ısticas de OGRE
Caracter´
        ısticas


  Escrito en C++
  Orientado a escenas.
  Dise˜o completamente OO.
      n
  Soporte Direct3D y OpenGL
Caracter´
        ısticas


  Multiplataforma: GNU/Linux, OS X y WinSucks.
  Lenguaje de declaraci´n de materiales
                       o
  Soporte para vertex shader.
  Soporte de texturas: PNG, JPEG, TGA, BMP,
  PVRTC o DDS.
  Soporte de texturas din´micas.
                         a
¿Que podemos hacer con
OGRE?
Una im´gen vale m´s que mil
       a            a
palabras.... y un video?
Instalando OGRE
Dependencias




 Compilador y herramientas de configuraci´n   o
 (automake, cmake, etc)
 OIS, freeimage, freetype, libzzip, libxaw, libxrandr
 doxygen, graphviz, nvidia-cg-toolkit, boost, cppunit
 (Opcionales)
OGRE




 Obtener las ultimas fuentes:
             ´
 http://www.ogre3d.org/download/source
 Configurar con cmake
 Compilar con make
 sudo make install
Otras librerias




  Cegui
  ODE
Lo B´sico.
    a
La raiz
El objeto “Root” es el punto de entrada al sistema de
OGRE. Debe ser el primer objeto creado y el ultimo en
                      ser destruido.
  Permite configurar el sistema. (showConfigDialog())
  Inicializa el sistema con las opciones determinadas
  por el usuario.
  Permite obtener punteros a otros objetos
RenderSystem
 Es una clase abstracta que define la comunicaci´n
                                                o
 directa con el sistema de renderizado por medio de
  alguna API ej: D3DRenderSystem para Direct3D.
Normalmente no es necesario manipular esta clase.
Facilitemos las cosas para comenzar... utilicemos el
Framework de Ejemplo que Ogre nos proporciona.
Existen 3 clases fundamentales:
SceneManager
Entity
SceneNode
SceneManager



 Todo lo que aparece en pantalla es manejado por
                SceneManager.
 Mantiene la locaci´n de cada objeto en la escena.
                   o
 Mantiene los datos sobre las c´maras de la escena.
                               a
 Luces, Planos, etc.
Hay multiples tipos. Para renderizar terrenos, mapas,
                         etc.
Entity


 Una entidad es el tipo de un objeto que puede ser
 renderizado en la escena.
 Un entidad es b´sicamente cualquier cosa que
                 a
 pueda ser representado por una grilla 3D (mesh).
 Una cosa a notar es que OGRE separa los objetos
 renderizables por locaci´n y orientaci´n.
                         o             o
 Un entidad debe ir siempre atada a un SceneNode.
SceneNode


 Mantiene informaci´n de locaci´n y orientaci´n de
                    o            o            o
 todos los objetos atados a el (attached to).
 Este tipo de nodo no es un objeto que se “dibuje”
 en la escena.
 Puede contener un n´mero X de objetos atados.
                      u
 La posici´n de un SceneNode es siempre relativa a
          o
 su SceneNode padre.
Coordenadas y vectores
Como muchos otros motores de
renderizado, Ogre utilza el sigu-
iente modelo de coordenadas

Ogre cuenta con una clase:
Vector que representa la posi-
ci´n y direcci´n. Hay vectores
  o           o
definidos para 2, 3 y 4 dimen-
siones (Vector2, Vector3 y Vec-
tor4)
1   # include " T u t o r i a lA p p l i c a t i o n . h "
 2     // Constructor
 3   T u t o r i a l A p p l i c at i o n :: T u t o r i a l A pp l i c a t i o n ( void )
 4   {
 5   }
 6     // Destructor
 7   T u t o r i a l A p p l i c at i o n ::~ T ut o r i a l A p p li c a t i o n ( void )
 8   {
 9   }
10
11   // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
12   void T u t o r i a l Ap p l i c a t i o n :: createScene ( void )
13   {
14          // Creamos una entidad
15          Ogre :: Entity * ogreHead = mSceneMgr - > createEntity ( " Head " , " ogrehead . mesh " ) ;
16
17          // Creamos un SceneNode y atamos la entidad para que se muestre en la escena
18          Ogre :: SceneNode * headNode = mSceneMgr - > getRootSceneNode () -> c r e a t e C h i l d S c e n e N o d e
                  () ;
19          headNode - > attachObject ( ogreHead ) ;
20
21          // Luz ambiente
22          mSceneMgr - > setAmbientLight ( Ogre :: ColourValue (0.5 , 0.5 , 0.5) ) ;
23
24          // Creamos una luz
25          Ogre :: Light * l = mSceneMgr - > createLight ( " MainLight " ) ;
26          l - > setPosition (20 ,80 ,50) ; // Posicionamos la luz
27   }
C´maras
  a
Una c´mara es lo que usamos para visualizar la escena
     a
creada.
  Es un objeto especial parecido a un SceneNode.
  Posee como funciones: setPosition, yaw, roll y pitch
  Puede ser atada a cualquier SceneNode.
  Su posici´n es relativa a su padre.
           o
  Pueden existir m´ltiples c´maras pero solo se utiliza una cada vez.
                  u         a
  Para mostrar ciertas porciones de la escena se utilizan “camera
  holders”. Son SceneNodes que se posicionan en la escena y
  apuntan hacia donde la camera mira.
ViewPorts
  Es posible tener m´ltiples SceneManagers al mismo
                     u
tiempo, dividir la “pantalla” en m´ltiples ´reas y tener
                                  u        a
     c´maras separadas para renderizar cada ´rea.
      a                                       a
El ViewPort es el ´rea desplegada en la ventana
                    a
(RenderWindow)
Luces
 Point: Emite luz desde si misma a cualquier
 direcci´n (una ampolleta).
        o
 SpotLight: Imita una linterna.
 Directorial: Simula por ejemplo la luz de la Luna,
 una luz lejana que proviene de una sola direcci´n
                                                o
 que abarca todo la escena
 Existen varias propiedades para las luces. Las m´s
                                                  a
 importantes son los colores diffuse y specular.
 Cada script de material define su comportamiento a
 estas caracter´ısticas de una luz.
Sombras
 Modulative Texture Shadow: De muy bajo costo
 computacional. Menos realista
 Modulative Stencil Shadow: Renderiza la sombra
 basada en el volumen del objeto.
 Additive Stencil Shadow: Renderiza cada luz por
 separado. De alto costo.
Cielos
             3 tipos
  SkyBoxes
SkyBoxes
    B´sicamente un cubo que rodea a todos los objetos en
     a
                        la escena.
1   mSceneMgr - > setSkyBox ( true , " Examples / SpaceSkyBox " ) ;
Cielos
             3 tipos
  SkyBoxes
  SkyDomes
SkyDomes
    Bastante similar a un SkyBox. La diferencia radica en
     que la textura es proyectada dentro del SkyBox de
                        forma esf´rica.
                                 e
1   mSceneMgr - > setSkyDome ( true , " Examples / CloudySky " ,5 ,8) ;


       3 Par´metro es la curvatura del Domo (2 a 65).
            a
       Menor para mejor efecto a la distancia. Altos para
       menor distorci´n y un efecto m´s suave.
                      o              a
       4 Par´metro es el n´mero de veces que la textura es
            a             u
       repetida en el Domo. Depende de la textura usada.
Cielos
              3 tipos
  SkyBoxes
  SkyDomes
  SkyPlanes
SkyPlane
    Un plano sobre el que se renderiza alguna textura. Al
     mirar hacia el “horizonte” se ve donde termina el
                           plano.
1   // creamos un plano
2   Ogre :: Plane plane ;
3   plane . d = 1000; // distancia de vision del plano
4   plane . normal = Ogre :: Vector3 :: N EG AT I VE _U NI T _Y ;
5
6   mSceneMgr - > setSkyPlane ( true , plane , " Examples / SpaceSkyPlane " ,
        1500 , 75) ;


       4 Par´metro es el tama˜o del SkyPlane (1500x1500
            a                n
       unidades)
       5 Par´metro El n´mero de veces que la textura es
            a          u
       repetida.
Niebla
Es un filtro aplicado a los objetos no una entidad. Hay
       que preocuparse por el color del fondo.
  Lineal.
  Exponencial.
  Exponencial2.
Terrenos
        Pueden ser generados con un plano al que le
    asignamos una textura o utilizando un SceneManager
                      para terrenos.
1   mSceneMgr = mRoot - > getSceneManager ( ST_ EXT ERI OR_ CLOS E ) ;
2   mSceneMgr - > setWorldGeometry ( " terrain . cfg " ) ;
Recursos
   Son los objetos reusables de los que disponemos:
  Mallas
  Texturas
  Scripts (Materiales, Particulas, etc)
      La carga de estos es realizada por el objeto
              ResourceGroupManager
Podemos indicar de donde cargar los recursos con el
archivo resources.cfg
resources.cfg

# Resources required by the sample browser and most samples.
[Essential]
Zip=../../../media/packs/SdkTrays.zip
FileSystem=../../../media/thumbnails

# Common sample resources needed by many of the samples.
# Rarely used resources should be separately loaded by the
# samples which require them.
[Popular]
FileSystem=../../../media/fonts
FileSystem=../../../media/materials/programs
FileSystem=../../../media/materials/scripts
FileSystem=../../../media/materials/textures
FileSystem=../../../media/materials/textures/nvidia
FileSystem=../../../media/models
FileSystem=../../../media/particle
Zip=../../../media/packs/skybox.zip

[General]
FileSystem=../../../media
Plugins
El SDK de OGRE es extensible por medio de Plugins.
Cada plugin agrega una funcionalidad en particular al
                       sistema.
 Los plugins deben ser activados/desactivados para su
                      utilizaci´n.
                               o
Son cargados en tiempo de ejecuci´n.
                                   o
plugins.cfg

# Defines plugins to load

# Define plugin folder
PluginFolder=

# Define plugins
# Plugin=RenderSystem_Direct3D9
# Plugin=RenderSystem_Direct3D10
# Plugin=RenderSystem_Direct3D11
 Plugin=RenderSystem_GL
# Plugin=RenderSystem_GLES
 Plugin=Plugin_ParticleFX
 Plugin=Plugin_BSPSceneManager
 Plugin=Plugin_CgProgramManager
 Plugin=Plugin_PCZSceneManager
 Plugin=Plugin_OctreeZone
 Plugin=Plugin_OctreeSceneManager
Scripts
  Muchas caracter´ısticas son manejadas v´ scripts,
                                         ıa
simples archivos de texto que pueden ser modificados
  provocando cambios inmediatos en la aplicaci´n.
                                               o
  Materiales
  Part´
      ıculas
  Compositores
  Overlay
  Fuentes
Materiales
   Define un material (el uso de una textura). Para
      identificarlos se utiliza la extension .material
El formato del script es pseudo-C++, con secciones
delimitadas por llaves y comentarios.
1   // Comentario
 2   material walls / funkywall1
 3   {
 4       // La tecnica a utilizar
 5       technique
 6       {
 7             // Primera pasada
 8           pass
 9           {
10                ambient 0.5 0.5 0.5 // respuesta a la luz
11                diffuse 1.0 1.0 1.0
12
13               // Comportamiento Textura 1
14               texture_unit
15               {
16                   texture wibbly . jpg
17                   scroll_anim 0.1 0.0
18                   wave_xform scale sine 0.0 0.7 0.0 1.0
19               }
20               // Comportamiento Textura 2
21               texture_unit
22               {
23                   texture wobbly . png
24                   rotate_anim 0.25
25                   colour_op add
26               }
27           }
28       }
29
30   }
Part´
    ıculas



Permiten definir sistemas de part´ıculas que ser´n
                                               a
utilizados como “templates”. Utilizan la extensi´n
                                                o
.particle para ser diferenciados
1       // Fader
 2       affector ColourFader
 3       {
 4           red -0.25
 5           green -0.25
 6           blue -0.25
 7       }
 8   }
 9
10   // A downpour
11   p ar ti cl e _s ystem Examples / Rain
12   {
13         material              Examples / Droplet
14         part icle_width 20
15         p ar ti cle_height 100
16         cull_each             true
17         quota                 10000
18         // Make common direction straight down ( faster than self oriented )
19         bill board_type oriented_common
20         c o m m o n _direction 0 -1 0
21
22       // Area emitter
23       emitter Box
24       {
25           angle              0
26           emission_rate      100
27           time_to_live       5
28           direction          0 -1 0
29           velocity      50
30           width              1000
31           height             1000
32           depth              0
33       }
34
35       // Gravity
Part´
        ıculas
1   Part icleSystem * Psys ;
2   pSys = mSceneMgr - > c r e a t e P a r t i c l e S y s t e m ( " Lluvia " , " Examples / Rain " ) ;
3   mNode - > attachObject ( pSys ) ; // Adjuntamos la particula para que se vea
Blender
  Blender es una herramienta open source para el
                   modelado 3D.
Permite crear mallas con texturas para renderizado o
                     animaci´n.
                            o

¿Porqu´ nos importa a nosotros?
      e
Con OGRE tenemos una herramienta de renderizado
pero necesitamos crear el contenido que mostraremos.
Herramientas
 OgreXmlConverter : Convierte un archivo xml a
 un binario de Ogre .mesh
 BlenderImport: Importa un mesh de Ogre a
 Blender
 Meshes Exporter: Exporta un dise˜o de blender a
                                     n
 Ogre (texturas, materiales, animaciones, etc)
 BlenderSceneExporter: Export una escena desde
 blender a formato dotScene (C´maras, Luces,
                                 a
 descripci´n de objetos)
          o
 dotScene Format: Un Framework para la carga de
 archivos dotScene dentro de Ogre.
Wrappers
Existen variados wrappers que podemos utilizar para
             crear aplicaciones OGRE:
 MOGRE un wrapper .Net
 http://www.ogre3d.org/tikiwiki/MOGRE
 Python-OGRE Interface basada en Py++.
 http://www.python-ogre.org/
 Ogre4j Permite utilizar las librer´ OGRE en
                                   ıas
 aplicaciones Java.
 http://www.ogre3d.org/tikiwiki/Ogre4j
M´s informaci´n
 a           o




www.ogre3d.org
www.blender.org
¿Preguntas?

Ogre Game Engine

  • 1.
    Desarrollo de Juegosen GNU/Linux “con OGRE” Comunidad Arch Linux Chile “D´ del Software Libre ıa 2010” Curic´ - 25 de septiembre de o 2010
  • 2.
    ¿Por que pensaren desarrollar Juegos?
  • 3.
    Por que nosgustan.
  • 4.
    Por que nosgustan. Por que se puede.
  • 5.
    Por que nosgustan. Por que se puede. Por que hace falta.
  • 6.
  • 7.
    Un motor derenderizado de gr´ficos. a
  • 8.
    Un motor derenderizado de gr´ficos. a Es un framework de desarrollo.
  • 9.
    Caracter´ ısticas de OGRE
  • 10.
    Caracter´ ısticas Escrito en C++ Orientado a escenas. Dise˜o completamente OO. n Soporte Direct3D y OpenGL
  • 11.
    Caracter´ ısticas Multiplataforma: GNU/Linux, OS X y WinSucks. Lenguaje de declaraci´n de materiales o Soporte para vertex shader. Soporte de texturas: PNG, JPEG, TGA, BMP, PVRTC o DDS. Soporte de texturas din´micas. a
  • 13.
  • 18.
    Una im´gen valem´s que mil a a palabras.... y un video?
  • 19.
  • 20.
    Dependencias Compilador yherramientas de configuraci´n o (automake, cmake, etc) OIS, freeimage, freetype, libzzip, libxaw, libxrandr doxygen, graphviz, nvidia-cg-toolkit, boost, cppunit (Opcionales)
  • 21.
    OGRE Obtener lasultimas fuentes: ´ http://www.ogre3d.org/download/source Configurar con cmake Compilar con make sudo make install
  • 22.
  • 23.
  • 24.
    La raiz El objeto“Root” es el punto de entrada al sistema de OGRE. Debe ser el primer objeto creado y el ultimo en ser destruido. Permite configurar el sistema. (showConfigDialog()) Inicializa el sistema con las opciones determinadas por el usuario. Permite obtener punteros a otros objetos
  • 25.
    RenderSystem Es unaclase abstracta que define la comunicaci´n o directa con el sistema de renderizado por medio de alguna API ej: D3DRenderSystem para Direct3D. Normalmente no es necesario manipular esta clase.
  • 26.
    Facilitemos las cosaspara comenzar... utilicemos el Framework de Ejemplo que Ogre nos proporciona.
  • 27.
    Existen 3 clasesfundamentales: SceneManager Entity SceneNode
  • 28.
    SceneManager Todo loque aparece en pantalla es manejado por SceneManager. Mantiene la locaci´n de cada objeto en la escena. o Mantiene los datos sobre las c´maras de la escena. a Luces, Planos, etc. Hay multiples tipos. Para renderizar terrenos, mapas, etc.
  • 29.
    Entity Una entidades el tipo de un objeto que puede ser renderizado en la escena. Un entidad es b´sicamente cualquier cosa que a pueda ser representado por una grilla 3D (mesh). Una cosa a notar es que OGRE separa los objetos renderizables por locaci´n y orientaci´n. o o Un entidad debe ir siempre atada a un SceneNode.
  • 30.
    SceneNode Mantiene informaci´nde locaci´n y orientaci´n de o o o todos los objetos atados a el (attached to). Este tipo de nodo no es un objeto que se “dibuje” en la escena. Puede contener un n´mero X de objetos atados. u La posici´n de un SceneNode es siempre relativa a o su SceneNode padre.
  • 31.
    Coordenadas y vectores Comomuchos otros motores de renderizado, Ogre utilza el sigu- iente modelo de coordenadas Ogre cuenta con una clase: Vector que representa la posi- ci´n y direcci´n. Hay vectores o o definidos para 2, 3 y 4 dimen- siones (Vector2, Vector3 y Vec- tor4)
  • 32.
    1 # include " T u t o r i a lA p p l i c a t i o n . h " 2 // Constructor 3 T u t o r i a l A p p l i c at i o n :: T u t o r i a l A pp l i c a t i o n ( void ) 4 { 5 } 6 // Destructor 7 T u t o r i a l A p p l i c at i o n ::~ T ut o r i a l A p p li c a t i o n ( void ) 8 { 9 } 10 11 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 12 void T u t o r i a l Ap p l i c a t i o n :: createScene ( void ) 13 { 14 // Creamos una entidad 15 Ogre :: Entity * ogreHead = mSceneMgr - > createEntity ( " Head " , " ogrehead . mesh " ) ; 16 17 // Creamos un SceneNode y atamos la entidad para que se muestre en la escena 18 Ogre :: SceneNode * headNode = mSceneMgr - > getRootSceneNode () -> c r e a t e C h i l d S c e n e N o d e () ; 19 headNode - > attachObject ( ogreHead ) ; 20 21 // Luz ambiente 22 mSceneMgr - > setAmbientLight ( Ogre :: ColourValue (0.5 , 0.5 , 0.5) ) ; 23 24 // Creamos una luz 25 Ogre :: Light * l = mSceneMgr - > createLight ( " MainLight " ) ; 26 l - > setPosition (20 ,80 ,50) ; // Posicionamos la luz 27 }
  • 34.
    C´maras a Unac´mara es lo que usamos para visualizar la escena a creada. Es un objeto especial parecido a un SceneNode. Posee como funciones: setPosition, yaw, roll y pitch Puede ser atada a cualquier SceneNode. Su posici´n es relativa a su padre. o Pueden existir m´ltiples c´maras pero solo se utiliza una cada vez. u a Para mostrar ciertas porciones de la escena se utilizan “camera holders”. Son SceneNodes que se posicionan en la escena y apuntan hacia donde la camera mira.
  • 35.
    ViewPorts Esposible tener m´ltiples SceneManagers al mismo u tiempo, dividir la “pantalla” en m´ltiples ´reas y tener u a c´maras separadas para renderizar cada ´rea. a a El ViewPort es el ´rea desplegada en la ventana a (RenderWindow)
  • 36.
    Luces Point: Emiteluz desde si misma a cualquier direcci´n (una ampolleta). o SpotLight: Imita una linterna. Directorial: Simula por ejemplo la luz de la Luna, una luz lejana que proviene de una sola direcci´n o que abarca todo la escena Existen varias propiedades para las luces. Las m´s a importantes son los colores diffuse y specular. Cada script de material define su comportamiento a estas caracter´ısticas de una luz.
  • 37.
    Sombras Modulative TextureShadow: De muy bajo costo computacional. Menos realista Modulative Stencil Shadow: Renderiza la sombra basada en el volumen del objeto. Additive Stencil Shadow: Renderiza cada luz por separado. De alto costo.
  • 38.
    Cielos 3 tipos SkyBoxes
  • 39.
    SkyBoxes B´sicamente un cubo que rodea a todos los objetos en a la escena. 1 mSceneMgr - > setSkyBox ( true , " Examples / SpaceSkyBox " ) ;
  • 41.
    Cielos 3 tipos SkyBoxes SkyDomes
  • 42.
    SkyDomes Bastante similar a un SkyBox. La diferencia radica en que la textura es proyectada dentro del SkyBox de forma esf´rica. e 1 mSceneMgr - > setSkyDome ( true , " Examples / CloudySky " ,5 ,8) ; 3 Par´metro es la curvatura del Domo (2 a 65). a Menor para mejor efecto a la distancia. Altos para menor distorci´n y un efecto m´s suave. o a 4 Par´metro es el n´mero de veces que la textura es a u repetida en el Domo. Depende de la textura usada.
  • 44.
    Cielos 3 tipos SkyBoxes SkyDomes SkyPlanes
  • 45.
    SkyPlane Un plano sobre el que se renderiza alguna textura. Al mirar hacia el “horizonte” se ve donde termina el plano. 1 // creamos un plano 2 Ogre :: Plane plane ; 3 plane . d = 1000; // distancia de vision del plano 4 plane . normal = Ogre :: Vector3 :: N EG AT I VE _U NI T _Y ; 5 6 mSceneMgr - > setSkyPlane ( true , plane , " Examples / SpaceSkyPlane " , 1500 , 75) ; 4 Par´metro es el tama˜o del SkyPlane (1500x1500 a n unidades) 5 Par´metro El n´mero de veces que la textura es a u repetida.
  • 47.
    Niebla Es un filtroaplicado a los objetos no una entidad. Hay que preocuparse por el color del fondo. Lineal. Exponencial. Exponencial2.
  • 48.
    Terrenos Pueden ser generados con un plano al que le asignamos una textura o utilizando un SceneManager para terrenos. 1 mSceneMgr = mRoot - > getSceneManager ( ST_ EXT ERI OR_ CLOS E ) ; 2 mSceneMgr - > setWorldGeometry ( " terrain . cfg " ) ;
  • 49.
    Recursos Son los objetos reusables de los que disponemos: Mallas Texturas Scripts (Materiales, Particulas, etc) La carga de estos es realizada por el objeto ResourceGroupManager Podemos indicar de donde cargar los recursos con el archivo resources.cfg
  • 50.
    resources.cfg # Resources requiredby the sample browser and most samples. [Essential] Zip=../../../media/packs/SdkTrays.zip FileSystem=../../../media/thumbnails # Common sample resources needed by many of the samples. # Rarely used resources should be separately loaded by the # samples which require them. [Popular] FileSystem=../../../media/fonts FileSystem=../../../media/materials/programs FileSystem=../../../media/materials/scripts FileSystem=../../../media/materials/textures FileSystem=../../../media/materials/textures/nvidia FileSystem=../../../media/models FileSystem=../../../media/particle Zip=../../../media/packs/skybox.zip [General] FileSystem=../../../media
  • 51.
    Plugins El SDK deOGRE es extensible por medio de Plugins. Cada plugin agrega una funcionalidad en particular al sistema. Los plugins deben ser activados/desactivados para su utilizaci´n. o Son cargados en tiempo de ejecuci´n. o
  • 52.
    plugins.cfg # Defines pluginsto load # Define plugin folder PluginFolder= # Define plugins # Plugin=RenderSystem_Direct3D9 # Plugin=RenderSystem_Direct3D10 # Plugin=RenderSystem_Direct3D11 Plugin=RenderSystem_GL # Plugin=RenderSystem_GLES Plugin=Plugin_ParticleFX Plugin=Plugin_BSPSceneManager Plugin=Plugin_CgProgramManager Plugin=Plugin_PCZSceneManager Plugin=Plugin_OctreeZone Plugin=Plugin_OctreeSceneManager
  • 53.
    Scripts Muchascaracter´ısticas son manejadas v´ scripts, ıa simples archivos de texto que pueden ser modificados provocando cambios inmediatos en la aplicaci´n. o Materiales Part´ ıculas Compositores Overlay Fuentes
  • 54.
    Materiales Define un material (el uso de una textura). Para identificarlos se utiliza la extension .material El formato del script es pseudo-C++, con secciones delimitadas por llaves y comentarios.
  • 55.
    1 // Comentario 2 material walls / funkywall1 3 { 4 // La tecnica a utilizar 5 technique 6 { 7 // Primera pasada 8 pass 9 { 10 ambient 0.5 0.5 0.5 // respuesta a la luz 11 diffuse 1.0 1.0 1.0 12 13 // Comportamiento Textura 1 14 texture_unit 15 { 16 texture wibbly . jpg 17 scroll_anim 0.1 0.0 18 wave_xform scale sine 0.0 0.7 0.0 1.0 19 } 20 // Comportamiento Textura 2 21 texture_unit 22 { 23 texture wobbly . png 24 rotate_anim 0.25 25 colour_op add 26 } 27 } 28 } 29 30 }
  • 56.
    Part´ ıculas Permiten definir sistemas de part´ıculas que ser´n a utilizados como “templates”. Utilizan la extensi´n o .particle para ser diferenciados
  • 57.
    1 // Fader 2 affector ColourFader 3 { 4 red -0.25 5 green -0.25 6 blue -0.25 7 } 8 } 9 10 // A downpour 11 p ar ti cl e _s ystem Examples / Rain 12 { 13 material Examples / Droplet 14 part icle_width 20 15 p ar ti cle_height 100 16 cull_each true 17 quota 10000 18 // Make common direction straight down ( faster than self oriented ) 19 bill board_type oriented_common 20 c o m m o n _direction 0 -1 0 21 22 // Area emitter 23 emitter Box 24 { 25 angle 0 26 emission_rate 100 27 time_to_live 5 28 direction 0 -1 0 29 velocity 50 30 width 1000 31 height 1000 32 depth 0 33 } 34 35 // Gravity
  • 58.
    Part´ ıculas 1 Part icleSystem * Psys ; 2 pSys = mSceneMgr - > c r e a t e P a r t i c l e S y s t e m ( " Lluvia " , " Examples / Rain " ) ; 3 mNode - > attachObject ( pSys ) ; // Adjuntamos la particula para que se vea
  • 59.
    Blender Blenderes una herramienta open source para el modelado 3D. Permite crear mallas con texturas para renderizado o animaci´n. o ¿Porqu´ nos importa a nosotros? e Con OGRE tenemos una herramienta de renderizado pero necesitamos crear el contenido que mostraremos.
  • 60.
    Herramientas OgreXmlConverter :Convierte un archivo xml a un binario de Ogre .mesh BlenderImport: Importa un mesh de Ogre a Blender Meshes Exporter: Exporta un dise˜o de blender a n Ogre (texturas, materiales, animaciones, etc) BlenderSceneExporter: Export una escena desde blender a formato dotScene (C´maras, Luces, a descripci´n de objetos) o dotScene Format: Un Framework para la carga de archivos dotScene dentro de Ogre.
  • 61.
    Wrappers Existen variados wrappersque podemos utilizar para crear aplicaciones OGRE: MOGRE un wrapper .Net http://www.ogre3d.org/tikiwiki/MOGRE Python-OGRE Interface basada en Py++. http://www.python-ogre.org/ Ogre4j Permite utilizar las librer´ OGRE en ıas aplicaciones Java. http://www.ogre3d.org/tikiwiki/Ogre4j
  • 62.
    M´s informaci´n a o www.ogre3d.org www.blender.org
  • 63.