Iniciación con el Blender engine

comenzando con el Blender engine

Si nuna utilizaste el Blender engine, o te frustraste intentándolo, repasemos algunas cosas básicas.

El Blender engine no es una aplicación que tenga que ver con el modelado o el renderizado, así que, aunque este integrado (lo que nos facilita trabajar en un único entorno) tiene sus características particulares.

En principio, el be simula propiedades físicas como la impenetrabilidad de los objetos (colisiones), el rozamiento, la aplicación de fuerzas, velocidades, rotaciones.

El datablock o pantalla desde dónde controlamos la mayoría de las propiedades que, afectaran los objetos es la que se identifican con un packman azul

diferenciemos categorías de objetos por sus propiedades: si el objeto en cuestión no es un actor, el botón actor estará desactivado, y el objeto en cuestión no será evaluado por el engine (léase que no rebotara ni se moverá de acuerdo a las leyes de la física) pero si se le podrán aplicar movimientos, rotaciones, efectos de material que interactúan con los actores, Ipos, armatures,logic bricks.

pues actores dinámicos si son evaluados por el engine, y si los colocamos donde no hay piso, y si con el cursor en una ventana 3d precionamos la tecla p entonces el engine se activa, y comienza la simulación el actor que no tenga suelo debajo, caerá indefinidamente y se perderá del campo visual. Si presionas la tecla Esc la simulación se aborta, y todos los objetos estarán tal y como estaban al iniciarse el engine.

Es importante tomar en cuenta los layers activos antes de ejectutar el engine, porque solo existirán los objetos que estén en layes activos, y los que estén en layes inactivos no existirán, salvo como objetos almacenados que pueden ser creados por un objeto en un layer activo, durante la simulación (es como si fueran modelos a ser copiados al momento de ser llamas por un objeto activo), pero el objeto en si no pueden cambiar de layer durante la simulación, esta es una diferencia importante con el modo normal del Blender (como ya debe saber taz).

Por ahora no intentaremos hacer un juego, sino solo practicar, probando las distintas cosas que trae el engine. En este caso utilizo la versión del Blender 2.23, aunque la 2.25 trae algunas mejoras en los logic brik y en el interprete Python.

Con un sesión nueva del Blender, creemos un objeto (a gusto del usuario, puede ser un cubo, una esfera, un cilindro, etc.) no importa la forma, ya que será nuestro actor y, por ahora, los actores dinámicos son evaluados solo como esferas de un tamaño size (cuando presionamos el botón actor y dynamic se despliegan otros justo abajo que definen propiedades físicas), de una masa (que no es lo mismo que peso) mass. Asimismo es conveniente aplicarle un material (cualquiera), aunque si no lo hacemos el Blender evalúa el material por defecto (ese material gris que aparece cuando cramos un material nuevo). El material asigna propiedades al objeto, que se configuran con el botón dyn (de dynamic) que se encuentra al costado del cuadrado donde nos muestra el color del material. Por ahora dejamos la manipulación del material para más adelante.

Bien, ya tenemos nuestro objeto testigo, es un actor dinámico, y supongo que, tiene un material por defecto.

lo ubico en la pantalla 3d. Observemos que tiene un círculo de línea de Trazos, esta es la forma en que Blender nos indica que es un objeto dinámico, y el tamaño esférico respecto de su centro, es impenetrable por objetos sólidos dentro de ese círculo.

Y no olvidemos colocarle un piso, que puede ser un plano agrandado para que tenga un poco de espacio, con el mismo material. No queremos que sufra de vértigo.

ahora presionamos la p-key y.

A) si el plano tiene el material por defecto, el actor caerá hasta chocar con el plano y quedará estático ahí. No rebota.

B) si el plano no tiene material asignado el objeto testigo (el actor.) rebotara indefinidamente, o lo tiene y la restitution (restitucion:indice con que devuelve la fuerza de impacto) esta entre cero y uno rebotara cada vez más bajo hasta detenerse.

La cuestión es que la restitution le indica al material cuanta de la fuerza de impacto devuelve para el rebote, es decir, si el índice es cero, nada rebota en el, dicho material absorbe la totalidad del impacto, aunque si ambos son actores dinámicos, el rebote de cada uno dependerá del material del otro. Por el contrario, una restitutio de uno, devuelve la totalidad de la fuerza (el objeto que rebota lo hace con la misma fuerza que impacto, amen de que pierda fuerza por factores de Damp (son atenuaciones de la velocidad similar al rozamiento)

En nuestro ejemplo, no tiene mucha gracia ver rebotar (o no) un objeto sobre un plano. Avancemos un poco, aseguremonos de que el plano restituya la fuerza del impacto, dejemos la restitutio en uno.

Que sucedería si inclinamos el plano solo un poco? A probar. (p-key) (observamos.) (Esc-key).

que raro, el testigo reboto a un lado, paso en caída libre y desapareció del campo visual, indefinidamente. Que le sucedió? Se murió? O está justo ahí, solo que no lo vemos?

La triste realidad es que nuestro testigo se cayo al espacio infinito, y caerá eternamente hasta que detengamos el engine.

Los actores respetan rigurosamente sus restricciones, y si no hay nada que detenga su caída, la omnipresente gravedad artificial del Blender lo atraerá por siempre. El blendermaniaco deberá tener en consideración para sus juegos y simulaciones que los limites del escenario deberá ponerlos el, ya que sino sus actores se perderan en una caída infinita o vagaran por areas restringidas, estropeando la dinámica.

Ya siento que se están aburriendo de pelotas que rebotan. Que más se puede hacer con esto?

Remplazemos el plano que utilizamos de piso por un cubo (pueden borrar el plano y crear un cubo que contenga a nuestro actor testigo o extrudear el plano hacia arriba, da lo mismo), para aplicar texturas (no en el material.) asegurarse que la normal de todos los planos/caras del cubo estén mirando hacia adentro, ya que por defecto el be solo dibuja las caras del lado de la normal, si no saben hacer eso, es material de otro tutorial (no mio).

En principio si ejecutamos el be la única diferencia con lo anterior es que, si el plano sobre el que rebota el actor esta inclinado, el ector terminara rebotando entre el suelo y la pared. Habría que utilizar otras herramientas para dessarrollar un poco el ejemplo, por ejemplo, los fabulosos logic bricks que encontraremos aquí.

pero primero (siempre hay un, pero?) repasemos la logice de los logic brick :

Constan de sensores sensors, controladores controllers y actuadores Actuators, y hay que pensar más o menos así: yo quiero controlar una situación dinámica, que cumple condiciones exactas, pero que en conjutno e impredecible al milímetro, cuanto más compleja la escena, más difícil es saber que sucederá a cada instante, y si finalmente los acontecimiento estarán dentro del abanico de posibilidades que intente probocar, (ganar, perder, sumar puntaje, una movimiento creíble del protagonista, etc), y para conseguirlos tenemos que saber cuál es la situación a cada iteración (o instante), información que recolectamos con los sensores. Tenemos que procesarla (por ejemplo, la inteligencia artificial de los malos, porque si son muy tontos, el juego también lo es) aún las decisiones más sencillas deben ser tomadas, o no se producen las acciones deseadas, y finalmente, cuando sucedió lo que esperábamos y decidimos que había que hacer, hacerlo. Para eso son los actuadores.

Pueden experimentar hasta el cansancion con ellos, no producen ningún daño permanente.

Comenzamos con lo más sencillo: aplicarle una fuerza continua a nuestro testigo para ver que sucede.

Precionando los botones add se agrega debajo un logic brick, agregemos uno de cada uno.

en este caso utilizamos los lb que aparecen por defecto:

Sensor always (siempre) este sensor siempre emite el mismo pulso, el pulso es lo que activa el controlador, y si la condición se cumple, entonces genera un pulso (o uno o valor positivo o true) que activa todos los controladores que estén a su salida, en este sensor el prime botón (que está presionado) repite el pulso en cada iteración, en tanto que si estuviera no-presionado entonces solo emitiría un pulso la primera iteración, al comienzo de la simulación, y permanecería ocioso el resto del tiempo, con el puntero del cursor unimos el punto amarillo del sensor con el punto amarillo del controlador (si lo hicimos exitosamente veremos una línea negra que transmitira nuestro pulso positivo al controlador), y lo mismo con el punto amarillo de salida del controlador y el de entrada del actuador, ya está casi listo.

Controller and (y) este controlador es el más rudimentario, su condición a controlar es que todos los sensores que estén a su entrada estén enviando pulso al mismo tiempo. Es un operador lógico muy común. Si todos los sensores que están a la entrada (puede haber más de un sensor conectado a un controlador, más de un controlador conectado a un sensor, etc.) envían uno (siempre hablamos en cada iteración) entonces el controlador and envía un uno a todos los actuadores que estén a su salida, genéricamente seria.

Si recibo pulso positivo de todos los sensores conectados a mí entrada (sensor 1 y sensor 2 y sensor 3 y, y sensor n) entonces enviar un pulso positivoa todos los actuadores que estén a mi salida.

Actuator Motion(movimiento) este actuador es el que utilizamos para aplicar desplazamientos y rotacions que no estén previamente grabados (existe el actuador ipo), aplicando fuerzas, fuerzas de rotación (Tork), velocidades, velocidades de rotación y desplazamientos y rotaciones especificas. Las pequeñas letras l de la derecha en cada opción indican si se debe aplicar localmente o globalmente. En el primer caso, la rotación en el eje X se producirá con respecto al eje X del objecto, en cambio en el segundo caso la rotación se aplicará respecto del eje X del universo del engine, es decir los ejes ortogonales que utilizamos como referencia al editar. Si la l esta presionada, es local.

Otra observación más: la aplicación de fuerzas y velocidades a objetos que no sean actores dinámicos no tendrán ningún efecto, ya que (nunca me canso de repetirlo) no son evaluados por el engine, se los considera perfectamente fijos en el unverso, y solo se desplazan a posiciones on en distancia/ángulos específicos. Una fuerza aplicada, para calcular un movimiento debe tomar en cuenta la masa y el rozamiento del objeto, y en este caso no hay una ni otra.

En el lb>>motion agregemos una fuerza (force) en la primera el primer casillero de -2.00 (menos dos) quitando la l. La primera columna corresponde al eje x, la segunda al eje y, y la tercera al eje Z. Si terminaron de conectar el sensor con el controlador y este con el actuador, entonces al comenzar el engine, el actor debería tender a aumentar su desplazamiento en el eje X del Blender, probar con distintas fuerzas en distintos ejes, y también alterar la restitution y friction de los materiales, y observar.

Quizás ya hayan notado que nuestro testigo se desplaza y rebota alegremente, pero no gira, no rueda, siempre permanece parado. Si lo que queremos es un hombre que corre, estaría bien, pero si güera una bola del pinball, o una rueda de auto o bola de Bowling, entonces necesitariamos que ruede cómo si fuera de verdad, para que esto suceda, precionar en el actor correspondiente el botón rigid body(cuerpo rígido), y probar de nuevo el engine.

Fantástico, ahora se pueden tirar bolas con efecto en un juego de Pol, o jugar a la bolita (traduzca canicas), por ahora ignoraremos todos los botones que, aparecieron al precionar rigid body, sigamos una línea de pensamiento por ves.

No voy a transcribir aquí la lista completa de logic bricks con sus características, con presionar el botón blanco en dónde está la qtiqueta con el tipo de logic brik se desplegara un menú con todos los disponibles, según estemos en sensores, controladores o actuadores. En cualquier caso, podemos renombrarlos presionando en su nombre (por defecto sensor, sensor1, esto es muy útil cuando trabajamos con Python o para poder gestionar la telaraña de bloques interconestados), y se pueden borrar presionando x que tienen a su izquierda en cada uno.

Para ir terminando este tutorial iniciatico, vamos a tomar el control con el teclado (no es eso lo que querían?)

En primer lugar, configurar los lb del actor así:

probarlo, ya pueden controlar un actor en forma rudimentaria.

Practiquen y diviertanse hasta la segunda entrega.

Tip: prueben colocando más de un actor, prueben aplicándole rotación u otros en lugar de fuerza, prueben conectar la salida de un controlador de un actor a la entrada del actuador de otro (para eso presionar los botones sel que se encuentran arriba de los lb y seleccionar ambos actores al mismo tiempo).

cjd (Claudio. Dobniewski)

claudiojd@indicom.com.ar

Buenos Aires, Argentina en marzo 6 de 2003

.

Miniaturas adjuntas
-1.jpg   -2.jpg   -3.jpg   -4.jpg   -5.jpg  

-6.jpg   -7.jpg   -8.jpg   -x.jpg  

Imágenes adjuntadas
-9.jpg 

Ver más sobre el tema y los comentarios en el foro