Jump to content
Sign in to follow this  
Jhonatan00_00

Ajustar altura animaciones

Recommended Posts

Buenos días, a ver si alguien sabe decirme como solucionar esto, que a priori parece una chorrada y por eso mismo lo he ido dejando, pero que no hay forma de solucionar: Cuando salto con mi personaje, al tocar el suelo y pasar a la animación de agacharse para después volver a la animación de reposo, varia su altura metiendo los pies en el suelo y después volviendo a su posición normal.

He probado a subir la altura (sin que toque el suelo) en la pose de agachado para que al hacer la transición no lo traspase y mejora un poco, pero si vas viendo la animación fotograma por fotograma desde Unity se puede apreciar que bien del todo no queda...

¿Como se soluciona este problema?, ¿por que se produce?.

Un saludo y gracias.

Share this post


Link to post
Share on other sites

prueba a meter una capsula o cubo con las dimensiones de tu personage.... si el cubo o capsula tambien se "meten" en el suelo la culpa NO es de la animacion si no de las fisicas... en ese caso deveras explicar como haces laa fisicas del salto y la deteccion del suelo....  usas rigidbody, ....character controller... o lo haces con vectores para el movimiento y raycast para la deteccion....

yo suelo hacerlo siempre de la ultima manera calculando yo el movimiento y la colision... asi tienes mucho mas control sobre lo que quieres que pase.

si no es culpa de las physics.... si el cubo o capsula no se meten en el suelo pero el personaje si... entonces es por la animacion... tendras que modificarla un poco.... es mejor que cuando hagas una animacion de personaje (en tu programa de modelado/animacion) el personaje se mantenga siempre centrado, (en el 0, 0, 0) ...que corra, salte, ataque sin moverse del sitio

  • Like 1

Share this post


Link to post
Share on other sites

Como comenta @Igor es importante determinar si todas las animaciones del personaje tiene el pivote en el mismo lugar de referencia, en este caso siempre debería estar abajo entre ambos pies.

UDK | FBXSkeletalMeshPipeline

Sin embargo, la causa más común de este comportamiento puede ser el offset del colisionador que estás utilizando, recuerda que siempre que modificas la altura del colisionador se realiza de forma paralela en ambos extremos como si se estuviera escalando en el eje vertical, una solución rápida a este problema es aplicarle un offset según la altura del colisionador para que este siempre se mantenga abajo independientemente de su altura. 

 

Share this post


Link to post
Share on other sites

@francoe1

es ese modelo de la imagen tuyo?

sea como fuere me ha sorprendido la genial idea de ponerle un hueso extra para las hombreras.

lo usare de ahora en adelante (con personajes que lleben armaduras con hombreras o similar)

gracias.

te iba a dar un "like" pero no se puede dar a los administradores....

😔 

asi que te lo doy asi...

todo para ti: ❤️

Edited by Igor
  • Like 1

Share this post


Link to post
Share on other sites

Hola, tuve que lidiar con esto recientemente. Andá a los clips de animación importados, y modificá el offset del Root Transform Position (Y).

MecanimAnimClipRed.png

Si tu personaje ya está animado y modifica alguna propiedad de su root bone (por ej al hacer un salto), podés forzar que el cambio sea nulo (altura, plano XZ o rotación) con solo poner Bake into pose. Por ej, si aplicás esto a la posición Y, la altura del root será 0 (además podés seleccionar qué referencia usar).

Edited by lightbug
  • Like 2

Share this post


Link to post
Share on other sites

buena info lo del root transform position (y)

esas opciones nunca les habia hecho caso....😅

Share this post


Link to post
Share on other sites
Just now, Igor said:

buena info lo del root transform position (y)

esas opciones nunca les habia hecho caso....😅

Jaja yo tampoco, nunca les había dado bola. Hace poquito tuve que implementar dos nuevas abilidades: ladder climbing y ledge hanging (para este asset). Esto sumado a root motion y blender me hizo sacar varias canas 😵

Share this post


Link to post
Share on other sites
12 minutes ago, francoe1 said:

Pero esto funcionaria en el caso de estar usando RootMotion?

No, funciona siempre, incluso para Generic también. Si usas o no root motion no influye en este caso, el clip se ve afectado por el offset siempre.

Por ej, si vas a tener un personaje controlado por scripts (sin root motion), para idle, walk y jump (o similar) yo usaría un BakeIntoPose de posición Y basado en Feet. Te soluciona cualquier diferencia de altura automaticamente, haciendo root = posición entre pie izq y der. Si creaste el clip pensando en esto (como debería ser) podés usar Original también, debería dar el mismo resultado (o muy parecido).

Edited by lightbug
  • Like 1

Share this post


Link to post
Share on other sites
1 hour ago, lightbug said:

No, funciona siempre, incluso para Generic también. Si usas o no root motion no influye en este caso, el clip se ve afectado por el offset siempre.

Por ej, si vas a tener un personaje controlado por scripts (sin root motion), para idle, walk y jump (o similar) yo usaría un BakeIntoPose de posición Y basado en Feet. Te soluciona cualquier diferencia de altura automaticamente, haciendo root = posición entre pie izq y der. Si creaste el clip pensando en esto (como debería ser) podés usar Original también, debería dar el mismo resultado (o muy parecido).

La verdad es que siempre lo solucione con el origen del pivot, pero esto tiene un poco más de sentido. Thanks.. 

Share this post


Link to post
Share on other sites
23 hours ago, lightbug said:

Hola, tuve que lidiar con esto recientemente. Andá a los clips de animación importados, y modificá el offset del Root Transform Position (Y).

MecanimAnimClipRed.png

Si tu personaje ya está animado y modifica alguna propiedad de su root bone (por ej al hacer un salto), podés forzar que el cambio sea nulo (altura, plano XZ o rotación) con solo poner Bake into pose. Por ej, si aplicás esto a la posición Y, la altura del root será 0 (además podés seleccionar qué referencia usar).

Buenas tardes, he probado de todo tocando esos parámetros y no ocurre nada, sigue metiéndose un poco por debajo del suelo para después volver a su lugar. La versión que utilizo de Unity es la 4.7.2 aunque creo que no es por la versión.

El personaje lo controlo con un Character Controller y con Raycast detecto el suelo para cuando toque iniciar la animación de agacharse y volver a la de reposo, pero no importa que el Raycast sea mas largo o menos que siempre actúa como si los pies del personaje fuesen de goma al tocar, cae, se hunde y vuelve a su lugar.

Share this post


Link to post
Share on other sites
2 hours ago, Jhonatan00_00 said:

Buenas tardes, he probado de todo tocando esos parámetros y no ocurre nada, sigue metiéndose un poco por debajo del suelo para después volver a su lugar. La versión que utilizo de Unity es la 4.7.2 aunque creo que no es por la versión.

Hola, abrí la previsualización, en las opciones de importación, si tocás el offset y el modelo sube o baja, entonces funciona.

2 hours ago, Jhonatan00_00 said:

El personaje lo controlo con un Character Controller y con Raycast detecto el suelo para cuando toque iniciar la animación de agacharse y volver a la de reposo, pero no importa que el Raycast sea mas largo o menos que siempre actúa como si los pies del personaje fuesen de goma al tocar, cae, se hunde y vuelve a su lugar.

Eso seguramente pase porque se este ajustando la animación de un solo clip (o de algunos sí y de otros no), pero cuando el animator pase a usar el otro clip vuelva a la posición de este último. Osea, la posición del personaje es la misma (la del character controller, esta no cambia), pero si tenés diferencias entre las animaciones te van a aparecer inconsistencias. Por eso siempre es recomendable crear las animaciones respetando el pivot (puede haber excepciones, como el salto por ej) . Estas opciones te deberían dar la posibilidad de "re-calcular" dicho pivot, medirlo desde los pies, usar centro de masa, etc.

  • Like 1

Share this post


Link to post
Share on other sites
Sign in to follow this  

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...