lunes, 23 de febrero de 2015

Problemas al exportar de 3DS max a Unity3D

En entradas recientes he hablado sobre cómo poner la espada al héroe mediante una restricción, y en cómo hice cambios tardíos en el modelo con bastante suerte. Una vez más el demonio está en los detalles y he tenido problemas con todo esto cuando he tenido que pasar a las siguiente etapas.



Modelo importado en Unity3d


No había conseguido que me funcionase mi modelo con animaciones ya hechas de las que hay en el Asset Store de Unity, así que comencé a hacer mi propia animación de correr en el 3DS max, poniendo al lado otro modelo corriendo del Asset Store y copíandole un poco las poses, adaptado a mi personaje.



Al tener al personaje corriendo, giré la cámara alrededor buscando que todo fuera bien, y algunas veces veía alguna cosa rara. Pero era muy sutil, si lo miraba frame a frame durante solo un frame salía un triángulo raro por algún lado, que se veía solo desde cierto ángulo. Y todo venía por esas partes interiores duplicadas que puse para evitar que el faldón y las mangas fueran transparentes por dentro. Y claro, si un trozo de estos se sale de donde debe, como está mirando hacia el lado inverso, se va a ver transparente, salvo en algún ángulo extraño, y justo eso es lo que estaba viendo. La solución es pegar (weld) los vértices internos y externos en el borde. Algo que de todas maneras debería haber hecho en su momento al crear esos nuevos telares.




Sorprendido me quedé cuando importo el modelo en Unity y veo que el modelo todavía tiene el abrigo hasta los pies. Había dejado ese trozo oculto en 3DS max y Unity no hace caso a ocultos. Pero la sorpresa fue mayor cuando me cargo esa parte del modelo, reimporto y sigue estando en Unity. Por más vueltas que daba, en 3DS max no existía y en Unity sí. Reinicié programas, borré assets, probé varias veces, y nada, el maldito abrigo seguía ahí. Era un problema con la pila de modificadores, me explico. El modelo inicialmente era un Editable Poly, le puse el podificador Skin para unir con los huesos y poder animar, y encima otro Edit Poly para poder mover algún vértice suelto en un frame concreto y perfeccionar alguna animación chunga. Y yo estaba eliminando la parte baja del abrigo del Edit Poly de la cima de la pila de modificadores. Pero Unity no se enteraba de que me había cargado ese trozo si no lo hacía en el Edit Poly de abajo del todo en la pila. Y al eliminarlo en el edit poly de debajo, al volver hacia arriba en la pila me desaparecían polígonos de las piernas del personaje. Por suerte, Unity no se entera de estos desperfectos (supongo que por la misma razón que seguía mostrando el abrigo) y así conseguí el modelo sin abrigo y sin fallos.



Otro problema ha sido la restricción que unía la espada a la mano. En 3DS max funciona. Resulta que el formato FBX con el que se exportan los modelos y animaciones para luego importarlos en Unity no admite las restricciones. Así que al llegar a Unity pues la espada no se mueve. Se puede precompilar la animación al exportar en 3DS max (bake), y ya con eso debería ir. Y digo debería porque no me va bien en todos los casos. Si uso como tipo de animación en Unity3D “legacy”, funciona bien, la espada se mueve con la mano y está en su sitio. Pero si uso la opción “humanoid”, necesaria para poder utilizar mechanim, ya no funciona, la espada se mueve, pero no como debería y vuela sobre el protagonista, no está en su mano.



Mapeado de huesos para mechanim


La espada está como un objeto aparte en el modelo, para poder tener el personaje sin espada y con espada. Así que probé a ponerla adjunta como parte del mismo modelo del cuerpo, a ver si así al precompilar la animación quedaba bien. Y me encuentro que en Unity deja de salir la espada. Claro, lo he adjuntado usando el Edit Poly de arriba de la pila, lo hago con el de abajo y ahora ya funciona. Se ve la espada en Unity y la animación va bien, con la espada en su sitio en mechanim. Así que tengo que decidir si quiero poder tener la espada como objeto aparte o poder usar mechanim. Creo que va a ser lo segundo. Aunque me de mucho más problemas, acabo de conseguir cargar animaciones externas y que funcionen, y tiene un potencial tremendo. Dedicaré uno o varios artículos enteros a mechanim.

No hay comentarios :

Publicar un comentario