miércoles, 25 de marzo de 2015

Colocar un arma en Mecanim

Hoy estoy contento, he conseguido solventar un problema que llevaba arrastrando meses, con buen resultado, me abre unas cuantas posibilidades y además lo he hecho trasteando, no encontré la solución en don google. El problema de unir la espada a la mano del personaje.

Espada separada del cuerpo

No es la primera vez que escribo sobre este problema, hice un artículo sobre cómo poner la espada en la mano al personaje en 3Ds max. El problema era que el formato FBX no soportaba las restricciones con las que se hacía, así que no funcionaba en Unity. Eso, y cómo lo solucioné metiendo la espada como parte del mismo modelo lo comenté en otro artículo sobre los problemas de exportar de 3Ds max a Unity. Eso hacía que funcionasen bien las animaciones de Mecanim sobre un modelo con espada, pero la espada era parte del cuerpo. Eso me preocupaba ya que no podría poner un collider solo a la espada para ver si golpeaba a un enemigo. Pero ahora me encontré otro problema, los sistemas que hay para hacer estelas (trails), para dar ese efecto cuando se moviese la espada, no funcionan bien si no tenemos la espada como una parte independiente.

Probé a sacar la espada como un modelo independiente del cuerpo, aunque exportado en el mismo fichero. El problema es que una vez importado en Unity, la espada no está en la mano, sino a unos metros de distancia. Entonces pasé a exportar por separado el cuerpo y la espada, dando a Unity toda la responsabilidad para conseguir que la espada se mueva cuando el personaje mueva la mano como si estuviera agarrada.

El problema viene de que al elegir el tipo de rig como Humanoid en Unity, el modelo no tiene en la jerarquía todos los huesos, solo tiene un objeto con la malla y los huesos quedan como ocultos, solo visibles desde el configurador de rig del asset. Así que no podría coger la espada y colgarla de la mano, ya que no veo ese hueso de la mano en la jerarquía de Unity. Pero encontré el truco, en la pestaña de rig del asset, hay una pequeña opción que se llama “Extra transforms to expose”, ahí puedes elegir cualquiera de los huesos para que aparezcan en la jerarquía de Unity. Así que solo tuve que elegir la palma de la mano izquierda (mi personaje es zurdo). Así aparece ese nuevo elemento dentro del asset. Lo malo es que no se añade a los assets que ya hay en la escena, así que tienes que volver a sacar el asset y configurarlo de nuevo como lo tuvieras.


Extra transformations to Expose

Y con esto ya se puede colgar la espada de la palma de la mano y (500 problemas por la posición o el escalado después) que la espada se mueva perfectamente como si el personaje la estuviera agarrando con el puño.

Esto también resuelve una duda que tenía, ¿cómo se hace un ragdoll en Mecanim? Porque para montar una ragdoll necesitas indicar los transforms de los huesos, pero claro, ahora puedo exponer las transformaciones de huesos que me interesen para el ragdoll y fabricar uno como lo hacía con el rig en legacy.

No hay comentarios :

Publicar un comentario