Movimiento de un esqueleto Dirigido por Otro esqueleto

Preguntas y respuestas relacionadas con el desarrollo de videojuegos y aplicaciones 3D interactivas, usando Blender Game Engine.
Responder
Dude C
Mensajes: 10
Registrado: Sab Nov 18, 2017 2:48 pm
Nombre: Jose Alburqueque

Movimiento de un esqueleto Dirigido por Otro esqueleto

Mensaje por Dude C » Sab Nov 18, 2017 3:27 pm

Hace muy poco he Empezado a Usar el bge para la realización de software interactivo con objetivos educacional.

Este Foro me pareció una buena idea para buscar ayuda a un problema que desde hace mucho me está molestando.

El asunto es este:

He realizado un modelo 3D antropomórfico, el cual responde bien a las diferentes animaciones que se le ha puesto, sin embargo he notado, que las operaciones que debe realizar son muchas, y en situaciones estas deben realizarse de manera combinada, realizando las animaciones por separado: de la parte superior del cuerpo, y de la parte inferior del cuerpo, sin embargo muchos problemas han surgido

- Si la Malla es Única, y los esqueletos son separados, solo responde a uno de los esqueletos
- si el esqueleto es único, pero con acciones por separado (cuidando no generar animaciones en los huesos no correspondientes) el esqueleto solo ejecutara una de las animaciones, ya sea la parte superior del cuerpo, o la inferior,


con el pasar del tiempo, y bajo el método de ensayo y error, descubrí que podía mover parte del esqueleto principal usando un esqueleto secundario anexo a este, en el modo de edición de animaciones todo va bien, los huesos emparentados responden a los movimientos del esqueleto secundario, sin embargo a la hora de ejecutarlo, (pese a que las animaciones del esqueleto secundario si se reproducen), los huesos del esqueleto principal ya no responden, y el esqueleto vuelve a quedar intacto, desconozco que pueda ser un problema de parentesco entre las dos armaduras , de ser así como podría solucionarlo.

en caso que esto no tenga remedio, que me encantaría no fuese así,¿de que manera puedo realizar las acciones por separado?, y que se ejecuten las animaciones de la parte inferior del esqueleto (piernas, pies) y la superior (brazos, tórax, cabeza, etc.)

cabe resaltar que las animaciones las ejecuto mediante sripts y evito usar los ladrillos de lógica con regularidad.

Avatar de Usuario
soliman
Mensajes: 5501
Registrado: Jue Sep 01, 2005 1:13 pm
Nombre: soliman
Contactar:

Re: Movimiento de un esqueleto Dirigido por Otro esqueleto

Mensaje por soliman » Sab Nov 18, 2017 5:12 pm

¿Y por que tienes dos armatures para un solo objeto?

Puedes unir las dos armatures seleccionado las dos y Ctr+J

Avatar de Usuario
soliman
Mensajes: 5501
Registrado: Jue Sep 01, 2005 1:13 pm
Nombre: soliman
Contactar:

Re: Movimiento de un esqueleto Dirigido por Otro esqueleto

Mensaje por soliman » Sab Nov 18, 2017 5:14 pm

Si lo que buscas es animar por ejemplo el movimiento de los brazos por un lado y el de los pies por otro, esto se hace creando dos animaciones en el Dope Sheet > Action Editor y luego se pueden mezclar en el NLA_Editor

https://www.youtube.com/user/realsolima ... ?query=NLA

Dude C
Mensajes: 10
Registrado: Sab Nov 18, 2017 2:48 pm
Nombre: Jose Alburqueque

Re: Movimiento de un esqueleto Dirigido por Otro esqueleto

Mensaje por Dude C » Sab Nov 18, 2017 5:27 pm

Sin embargo en el BGE las animaciones no se Ejecutan

juani
Mensajes: 158
Registrado: Mié Oct 28, 2015 1:34 am
Nombre: Juan Antonio Sanchez Flores

Re: Movimiento de un esqueleto Dirigido por Otro esqueleto

Mensaje por juani » Dom Nov 19, 2017 12:40 am

¿Como estás ejecutando las acciones con PlayAction()? ¿ Podrias poner un ejemplo del código?

Dude C
Mensajes: 10
Registrado: Sab Nov 18, 2017 2:48 pm
Nombre: Jose Alburqueque

Re: Movimiento de un esqueleto Dirigido por Otro esqueleto

Mensaje por Dude C » Mar Nov 21, 2017 11:45 am

saque este código de uno de los tutoriales de fisicomolon, y es el que he usado por bastante tiempo:

import bge


g= bge.logic
co = bge.logic.getCurrentController()
o= co.owner
scene = g.getCurrentScene()
import mathutils

#[SENSORES]#
sensor = co.sensors["Keyboard"]
#[ACTUADORES]#
act = co.actuators["Action"]




AKEY= sensor.getKeyStatus(97)
SKEY= sensor.getKeyStatus(115)
DKEY= sensor.getKeyStatus(100)
WKEY= sensor.getKeyStatus(119)
SPACEKEY= sensor.getKeyStatus(32)

if (WKEY==0 and SKEY==0 and DKEY==0 and AKEY==0):
act.action= "RESPIRACION"
act.frameStart = 2.0
act.frameEnd = 80.0
act.blendIn = 11.0
act.mode = 4
act.priority = 1
act.layer = 0
co.activate("Action")


if (WKEY==2 or SKEY==2 or DKEY==2 or AKEY==2):
act.action= "CAMINATA"
act.frameStart = 2.0
act.frameEnd = 40.0
act.blendIn = 11.0
act.mode = 4
act.priority = 1
act.layer = 0
co.activate("Action")[/shadow]

juani
Mensajes: 158
Registrado: Mié Oct 28, 2015 1:34 am
Nombre: Juan Antonio Sanchez Flores

Re: Movimiento de un esqueleto Dirigido por Otro esqueleto

Mensaje por juani » Mar Nov 21, 2017 1:21 pm

Buenas, lo estás haciendo con un actuador Action, el código activa este actuador.Lo que veo en el código son tres errores.
Primero co = bge.logic.getCurrentController() lo debes de poner como g.getCurrentController() ya que bge.logic. lo has guardado en una variable que se llama g , luego en scene lo usas bien g.getCurrentScene(), no pasa nada no da error pero el código vuelve a buscar bge.logic sin necesidad ya que lo tiene guardado en la variable g mucho mas accesible.
Segundo : en los 2 if sustituye co.activate ("Action") por co.activate(act), act es la variable donde está guardado el actuador que se llama "Action".
Tercero: en la última linea de código [/shadow] no hace nada, es mas generará un error, bórralo eso no tiene que estar ahí, el actuador no tiene la propiedad /shadow.
Bien, creo que cuando corrijas eso te irá bien las animaciones pero tienes que tener en cuenta que en bge si un esqueleto tiene varias animaciones tienes que establecer prioridades a la hora de ejecutarlas, 0 máxima prioridad, en tu código tienes act.priority = 1 en las dos animaciones, creo que no va a haber problema por la forma en que se ejecutan las animaciones pero te puede pasar.Prueba y me dices si tienes algún problema.
Saludos.







La última linea del código te tiene que dar error en lo que pone [/shadow],

Dude C
Mensajes: 10
Registrado: Sab Nov 18, 2017 2:48 pm
Nombre: Jose Alburqueque

Re: Movimiento de un esqueleto Dirigido por Otro esqueleto

Mensaje por Dude C » Mié Nov 22, 2017 1:55 pm

En breve tratare de alcanzar los resultados de esa prueba, sin embargo, quisiera saber, ¿hay alguna forma diferente de, mediante scripts, reproducir dos animaciones a la vez en un mismo esqueleto?, de manera que las animaciones de las piernas tales como andar, correr, saltar, arrodillarse, se combinen con las animaciones de los brazos , sostener un objeto, señalar algo , etc, que sea funcional en el Game Engine .

juani
Mensajes: 158
Registrado: Mié Oct 28, 2015 1:34 am
Nombre: Juan Antonio Sanchez Flores

Re: Movimiento de un esqueleto Dirigido por Otro esqueleto

Mensaje por juani » Jue Nov 23, 2017 1:46 am

Buenas , si se puede hacer siempre y cuando las animaciones de cada hueso no entren en contradicción, es decir no puedo decirle a un hueso que rote a la derecha en una animación y en otra animación decirle que rote a la izquierda y lanzar las dos animaciones en el mismo tiempo, es de lógica, no crearía errores pero blender ejecutaría una de las dos.Si puedo entre hoy o mañana te haré un video para explicar como se hace, es mejor verlo.

Dude C
Mensajes: 10
Registrado: Sab Nov 18, 2017 2:48 pm
Nombre: Jose Alburqueque

Re: Movimiento de un esqueleto Dirigido por Otro esqueleto

Mensaje por Dude C » Jue Nov 23, 2017 12:29 pm

Lo se, trato de que ambas animaciones no se superpongan a la hora de ejecutarse.
Agradecería inmensamente el hecho de que pudieras hacerme alcance de ese vídeo, seria de gran ayuda.

juani
Mensajes: 158
Registrado: Mié Oct 28, 2015 1:34 am
Nombre: Juan Antonio Sanchez Flores

Re: Movimiento de un esqueleto Dirigido por Otro esqueleto

Mensaje por juani » Vie Nov 24, 2017 12:44 am

Buenas, te pongo el enlace del video, lo siento pero me explico fatal, si tienes alguna duda coméntamela.
Saludos.
Ah!, te pongo un enlace también a foro3d.com en la sección de scripts para un ejemplo que tengo puesto de playAction().

https://www.youtube.com/watch?v=JBHFrulQYTA
https://www.foro3d.com/f115/playaction- ... 26590.html

Dude C
Mensajes: 10
Registrado: Sab Nov 18, 2017 2:48 pm
Nombre: Jose Alburqueque

Re: Movimiento de un esqueleto Dirigido por Otro esqueleto

Mensaje por Dude C » Vie Nov 24, 2017 11:26 am

Agradezco la ayuda, tratare en lo posible poner en practica lo que me has mostrado, contaré sobre los resultados en breve.

Responder