[Contenido][Link]::[Link]::[Link]::4.
BloqueLgicos
ndice de Contenidos :.
Por qu usar Blender? :: 1
El Motor de Videojuegos :: 2
Arquitectura :: 2.1
Un Sencillo Ejemplo :: 3
El Interfaz de Blender :: 3.1
Calentando Motores :: 3.2
Bloques Lgicos :: 4
Sensores :: 4.1
Controladores :: 4.2
Actuadores :: 4.3
Regla de Oro en Blender:
Mantn una mano en el teclado y otra en el ratn
Sesin2::Transp.2
[Contenido][Link]::[Link]::[Link]::[Link]
Qu es Blender? :.
Es un programa original de NeoGeo, que
se cre como suite de animacin
profesional para todos los bolsillos.
Originalmente manteniendo dos versiones;
freeware y comercial (ms completa), la
compaa que lo desarrollaba NaN (de Ton
Roosendaal) quebr.
La comunidad de usuarios liber el
proyecto a manos de la Blender Foundation
(donaciones en 7 meses de 100.000 ).
Actualmente es un proyecto mantenido por
una comunidad muy activa de
desarrolladores.
Sesin2::Transp.3
[Contenido][Link]::[Link]::[Link]::[Link]
Por Qu usar Blender? :.
Es Software Libre: Estabilidad del proyecto, velocidad de
desarrollo, reduccin de costes...
Permite obtener prototipos muy rpidamente.
No nos "casamos" con el software; podemos usar plugins
para reutilizar mucho material con otros motores.
El GameEngine no es nicamente para videojuegos.
Permite generar ejecutables independientes de Blender en un
instante.
Facilidades de implementacin. Lenguaje de Script: Python.
Gran cantidad de documentacin y amplia comunidad de
usuarios.
Sesin2::Transp.4
[Contenido][Link]::[Link]::[Link]::[Link]
Blender Game Engine :.
El motor est formado por un conjunto de mdulos
especficos de desarrollo de videojuegos.
Todos los elementos del mundo son GameObjects.
GameObject
Bloques Lgicos
Propiedades + Actua-
Contro-
Sensores dores
ladores
Sesin2::Transp.5
[Contenido][Link]::[Link]::[Link]::[Link]
Blender Game Engine :.
Propiedades: Son un reflejo de la memoria del objeto.
"Atributos" del objeto.
Sensores: Elementos por los cuales el objeto percibe el
mundo 3D.
Controladores: Elementos que implementan la "inteligencia"
del objeto, ya sea mediante expresiones simples o scripts en
Python.
Actuadores: Permiten la interaccin del objeto con el mundo.
Sesin2::Transp.6
[Contenido][Link]::[Link]::[Link]::[Link]
Introduccin al Interfaz de Blender... :.
Blender presenta un interfaz altamente
personalizable. Podemos generar
subventanas, acercndonos a la zona de
unin, BDR/SplitArea.
Operaciones con el ratn
BIR: Posiciona el Cursor 3D.
BMR: Rota una vista 3D.
BMR + [Ctrl][Alt] : Zoom
BMR + [Shift] : Pan
BDR: Selecciona un objeto.
Vistas 3D
[1],[3],[7],[0] (Tec. numrico):
Vista izqda, drcha, planta y cmara.
Sesin2::Transp.7
[Contenido][Link]::[Link]::[Link]::[Link]
Introduccin al Interfaz de Blender... :.
Barra de botones de la 1. Game Engine
ventana Button Window... 2. Scripts de la Aplicacin Representacin
3. Iluminacin
4. Materiales
5. Texturas
6. Radiosidad
7. Opciones del Entorno
8. Propiedades del Objeto
9. Edicin
10. Renderizado
11. Animacin Con el Objeto
12. Sonido Seleccionado...
[g]: Desplazamiento
[r]: Rotacin
[s]: Escalado
Capas m: Mover [Tab]: Cambio Modo.
[Shift]: Selecc.
Sesin2::Transp.8
[Contenido][Link]::[Link]::[Link]::[Link]
Calentando Motores... :.
Paso 1
Eliminamos todos los elementos de la
escena. Despus, insertaremos un plano
(que servir como suelo del mundo) y le
aplicaremos una textura.
Desde vista superior: [Barra Espaciadora]
Add/Mesh/Plane
Escalamos el plano [S]
Con el plano seleccionado (en rosa),
pulsamos [F] y pasamos al modo de
seleccin de caras.
Cambiamos una ventana a tipo UV
ImageEditor y pinchamos en Image/Open
para cargar una imagen.
Activamos el modo de Visualizacin con
Textured en la ventana 3D.
Sesin2::Transp.9
[Contenido][Link]::[Link]::[Link]::[Link]
Calentando Motores... :.
Paso 2
Durante el desarrollo, guardaremos todos los archivos relacionados
en el propio fichero de blender (File/Pack Data).
Aadiremos un objeto previamente creado con File/Append.
Seleccionamos los Objetos
"Tabla" y "Sombra". Para ello,
usamos el BDR. Ver Objetos/[Link]
Tabla 3D texturizada
Problema si desplazamos el
objeto Tabla... La sombra no le
acompaa.
Establecemos relacin de
parentesco "Tabla" va a ser objeto
padre de "Sombra". [Control]+[P]
Sesin2::Transp.10
[Contenido][Link]::[Link]::[Link]::[Link]
Interactividad :.
Paso 3
Probamos el juego que tenemos hasta ahora (Pulsamos [P])...
Hay que aadir propiedades de bloques lgicos a la tabla. Tabla
seleccionada, pinchamos en el botn del Game Engine.
Hacemos que la tabla sea un actor (Pinchamos en el botn Actor, y
activamos Dynamic para que sufra las leyes de la fsica). Dejamos el
resto de parmetros por defecto.
Movemos el objeto [G] para que est a una altura considerable del
suelo y ejecutamos la simulacin [P]...
Sesin2::Transp.11
[Contenido][Link]::[Link]::[Link]::[Link]
Interactividad :.
Paso 4
Aadimos un nuevo Sensor, Controlador y Actuador pinchando en el
botn Add de la columna correspondiente (Izquierda: Sensores,
Central: Controladores, Derecha: Actuadores).
Cambiamos el tipo del sensor a Keyboard.
En el campo Key vamos a introducir la flecha arriba de los cursores.
Qu haremos cuando se pulse "Arriba"? En los actuadores,
haremos que la tabla avance... En qu eje?
Importante nombrar los Bloques
Sesin2::Transp.12
[Contenido][Link]::[Link]::[Link]::[Link]
Interactividad :.
Queremos que nuestra tabla gire a izquierda y derecha cuando
pulsemos los cursores en esa direccin.
Sabiendo que el campo del actuador Motion que realiza giros es
Torque, construir la solucin.
Aadir los elementos necesarios para que la tabla pueda saltar
(en el eje Z) cuando se pinche con el botn derecho del ratn
(sensor de tipo Mouse).
Sesin2::Transp.13
[Contenido][Link]::[Link]::[Link]::[Link]
Control de la Cmara :.
Paso 5
Aadiremos una nueva cmara a la escena ([Barra Espaciadora]
Add/Camera) ms alejada del Actor que la cmara principal.
En la vista 3D, pulsaremos [Control][0] para activarla.
Aadimos un Sensor (Always), un Controlador (And) y un Actuador
(de tipo Camera) a la nueva cmara (asegurndonos de tenerla
seleccionada antes de realizar la operacin).
En el campo OB hay que indicar el nombre del objeto a seguir. Height
es la altura de seguimiento. Min y Max indican la distancia mnima y
mxima de separacin.
Sesin2::Transp.14
[Contenido][Link]::[Link]::[Link]::[Link]
Qu Pas con la Friccin? :.
Paso 6
Vamos a evitar que la nave se deslice sin friccin por el suelo. Para
ello, hay que modificar las propiedades de los materiales de la nave y
del plano del suelo.
Men de Materiales [F5], activando el botn DYN cambiamos el
parmetro Friction en el suelo y en la nave.
Finalmente, aadimos a la escena la puerta y el muro que hay en
el fichero [Link].
Ver Objetos/[Link]
Puerta y Verja texturizada
Sesin2::Transp.15
[Contenido][Link]::[Link]::[Link]::[Link]
Animando que es Gerundio :.
Paso 7
Vamos a hacer una pequea
integracin del sistema de animacin
de Blender con el motor de juegos.
Nos situamos en el primer frame e
insertamos una clave pulsando [i].
Insertamos la clave respecto de la
localizacin (Loc).
Avanzamos la animacin hasta el
frame 50, movemos la puerta hasta
arriba y pulsamos de nuevo [i],
insertando otra clave de localizacin.
Pulsando [Alt] [A] podemos visualizar
la animacin que hemos creado.
Sesin2::Transp.16
[Contenido][Link]::[Link]::[Link]::[Link]
Animando que es Gerundio :.
Paso 8
Vamos a aadir un sensor a la puerta que provoque su apertura
automtica cuando la nave pase cerca de ella.
Para ello, y con la puerta seleccionada, aadiremos un sensor de
tipo Near, que se activar con objetos que tengan la propiedad
"nave".
Naturalmente, la tabla tendr que tener esa propiedad...
Aadiremos finalmente un actuador de tipo IPO, PingPong creado
desde el frame 1 hasta el 50.
Sesin2::Transp.17
[Contenido][Link]::[Link]::[Link]::[Link]
Un Poco de Sonido :.
Paso 9
Blender es capaz de gestionar sonido 3D
(localizado espacialmente en la escena). De
momento, vamos a cargar un sonido
sencillo.
Vamos al men de sonido y cargamos el
fichero [Link]
Aadimos un nuevo Actuador a la puerta, de tipo Sound, y lo
unimos con el controlador de apertura de puerta.
Sesin2::Transp.18
[Contenido][Link]::[Link]::[Link]::[Link]
Lo Distribuimos? :.
Suponiendo que tuviramos
nuestro juego terminado,
podramos distribuirlo en un
ejecutable independiente.
En File/Save Runtime
podemos generar el fichero
ejecutable, dependiente de la
plataforma sobre la que
estemos desarrollando.
Podemos generar
ejecutables multiplataforma,
ejecutando esta opcin desde
difernentes sistemas.
Sesin2::Transp.19
[Contenido][Link]::[Link]::[Link]::[Link]
Antes de los Bloques Lgicos :.
Caractersticas de los GameObjects: En este apartado se
definen parte de las caractersticas fsicas de los actores.
Actor: Activando esta opcin, el
engine evaluar al objeto.
Ghost: No son sensibles a
colisiones. No obstante, activan el
sensor de colisin.
Dynamic: Con esta opcin activada, el objeto obedece las leyes de la
fsica.
Rigid Body: Permite utilizar caractersticas avanzadas del motor de fsicas.
As, por ejemplo, cuerpos como esferas ruedan automticamente en el
mundo 3D.
Mass: Masa del objeto, Size: Tamao de la esfera lmite (volumen de
colisiones), Form: (usado con cuerpos rgidos).
Sesin2::Transp.20
[Contenido][Link]::[Link]::[Link]::[Link]
Antes de los Bloques Lgicos :.
Propiedades de los GameObjects: Las propiedades
almacenan informacin del objeto, de forma similar a las
variables locales en los lenguajes de programacin.
Debug: Activando el botn
con una D a la derecha de
cada valor, se puede hacer
un seguimiento de la
propiedad en tiempo de
ejecucin.
Timer: Este tipo de propiedad se actualiza con el tiempo actual de juego
en segundos, empezando en cero. En objetos nuevos, el tiempo
comienza a contar cuando se crea el objeto.
Sesin2::Transp.21
[Contenido][Link]::[Link]::[Link]::[Link]
Bloques Lgicos :: Sensores :.
Always: Es un sensor que Keyboard: Es uno de los ms
genera pulsos continuamente. usados. Recoge la entrada de
teclado.
Sobre los Pulsos: Un pulso
tiene 2 valores: True y False.
Cada controlador se evala
cuando recibe un pulso.
Si est activado arriba siempre
manda pulsos positivos. Si est
abajo, siempre negativos. Si no Permite recoger entradas de
est activo ninguno, slo manda texto complejas con Target y
1 pulso al principio. LogToogle.
Sesin2::Transp.22
[Contenido][Link]::[Link]::[Link]::[Link]
Bloques Lgicos :: Sensores :.
Mouse: Capta los clicks en el Touch: Genera un pulso
ratn y el movimiento del mismo. cuando el objeto toca cierto
material.
Genera un pulso cuando se
pincha en el botn El nombre del material debe
correspondiente o cuando se especificarse en el campo MA:
genera un movimiento del ratn
(si se eligi tipo Movement).
Sesin2::Transp.23
[Contenido][Link]::[Link]::[Link]::[Link]
Bloques Lgicos :: Sensores :.
Collision: Sensor general que Near: Reacciona con actores
capta la colisin entre objetos. cercanos que poseen cierta
propiedad.
Mediante el botn M/P
podemos elegir entre especificar
una propiedad a buscar en la
La propiedad se especifica en
colisin o un material especfico. Property:. Dist es la distancia
esfrica a la cual se activa el
sensor. Reset define la distancia
a la cual el sensor deja de estar
activo.
Sesin2::Transp.24
[Contenido][Link]::[Link]::[Link]::[Link]
Bloques Lgicos :: Sensores :.
Radar: Funciona como un Property: Lanza un pulso
radar real. Busca un objeto a lo cuando la condicin se cumple.
largo de los ejes indicados (X, Y,
Z).
Se puede buscar objetos con Podemos preguntar si una
una determinada propiedad propiedad es igual (Equal),
(especificada en Prop). Ang es el diferente (Not Equal) o incluso si
ngulo de apertura del radar y cumple un intervalo.
Dist indica cmo de lejos puede
ver el radar.
Sesin2::Transp.25
[Contenido][Link]::[Link]::[Link]::[Link]
Bloques Lgicos :: Sensores :.
Random: Genera pulsos Ray: El sensor lanza un rayo.
aleatoriamente. Si en su camino se encuentra
con un objeto que cumpla la
propiedad o el material
indicado, genera un pulso.
En Seed se especifica la
semilla de los aleatorios. Se
puede cambiar mediante la API
de Python.
En Range se especifica la
distancia que alcanza el rayo.
Sesin2::Transp.26
[Contenido][Link]::[Link]::[Link]::[Link]
Bloques Lgicos :: Sensores y Controladores :.
Message: Genera un pulso Controladores: Actan como el
cuando recibe un mensaje con cerebro del objeto. Pueden ir
un asunto determinado. desde expresiones simples a
complejos scripts en Python.
AND: Combina una o varias
entradas. Todas las entradas
deben estar activas para que
En Subject se indica el asunto genere una salida.
del mensaje que esperamos.
OR: Cuando una entrada est
activa, la salida lo estar.
Expresin: La salida depende de
la evaluacin de una expresin.
Python: Scripts en Python.
Sesin2::Transp.27
[Contenido][Link]::[Link]::[Link]::[Link]
Bloques Lgicos :: Actuadores :.
Motion: Mueve, rota y aplica Constraint: Permite limitar los
velocidad a los objetos. grados de libertad de un objeto.
En Min y Max especificamos los
valores mximos y mnimo que
puede tomar la propiedad
(seleccionada en la lista
Mediante dLoc movemos el desplegable).
objeto una cantidad fija de
unidades.
Con linV indicamos la velocidad
lineal del objeto.
Sesin2::Transp.28
[Contenido][Link]::[Link]::[Link]::[Link]
Bloques Lgicos :: Actuadores :.
IPO: Reproduce curvas de Camera: Intenta simular un
movimiento IPO. cmara real, siguiendo a un
actor.
Dispone de varios modos. Play
(reproduce 1 vez), Ping Pong En OB: Indicamos el objeto a
(reproduce en ambos sentidos), seguir, Height indica la altura en
Flipper (parecido al anterior pero la que est situada la cmara.
cambia cuando hay variacin en Min y Max especificamos los
el pulso)... valores mximos y mnimo que
puede tomar la distancia al
objeto. X e Y son los ejes en los
que se mover la cmara.
Sesin2::Transp.29
[Contenido][Link]::[Link]::[Link]::[Link]
Bloques Lgicos :: Actuadores :.
Property: Permite realizar Edit Object: Realiza acciones
operaciones con las propiedades sobre los objetos en s.
de un objeto.
Estas operaciones son:
Con este actuador se pueden
Asignacin, Suma o Copia de un realizar operaciones como
valor asociado a una propiedad. Aadir objetos a la escena,
destruir objetos, reemplazar la
maya de un objeto o hacer que
un objeto apunte a otro objeto
(tracking).
Sesin2::Transp.30
[Contenido][Link]::[Link]::[Link]::[Link]
Bloques Lgicos :: Actuadores :.
Scene: Realiza operaciones Message: Enva un mensaje,
sobre las escenas y cmaras del que ser recibido por un
GameEngine. sensor del mismo tipo.
Algunas operaciones que
permite este actuador son:
Resetear una escena, cambiar de En To podemos especificar la
escena (cuando pasamos un propiedad que deben tener los
nivel), especificar una cmara destinatarios del mensaje. En
distinta, eliminar una escena... Body podemos introducir el
nombre de una propiedad o un
String de texto.
Sesin2::Transp.31
[Contenido][Link]::[Link]::[Link]::[Link]
Conclusiones :.
En esta sesin hemos estudiado una herramienta
integrada de generacin de videojuegos 3D, y en
concreto, el uso del GameEngine.
La evolucin de la plataforma augura un futuro
prometedor.
Puede servir perfectamente como base de desarrollos
grandes. Ha sido empleada satisfactoriamente en
productos comerciales.
La cmoda gestin de la lgica del juego mediante
sensores, controladores y actuadores eleva la
productividad en cualquier proyecto.
Sesin2::Transp.32