Siguiendo los consejos que da Mariel Cartwright, en su ponencia "Making Fluid and Powerful Animations for Skullgirls" durante el GDC 2016, decidí implementar un efecto de SMEARS en las animaciones de los personajes de NdE.
Si bien el efecto se podía apreciar apropiadamente en Maya, al momento de exportarlo a Unity los resultados eran muy diferentes, se podía apreciar una deformación demasiado exagerada que solamente hacían que todo se viera muy mal.
Si bien el efecto se podía apreciar apropiadamente en Maya, al momento de exportarlo a Unity los resultados eran muy diferentes, se podía apreciar una deformación demasiado exagerada que solamente hacían que todo se viera muy mal.
No fue sino hasta que en el grupo en facebook de Indie Game Developers, el desarrollador del juego PLASMA PUNCHER publicó un ejemplo del proceso que utilizaba para la animación de sus personajes. En dicho ejemplo se podía apreciar que escalaba los huesos, similar a lo que yo había intentado anteriormente, pero la diferencia era que en su caso, las deformaciones si funcionaban correctamente en Unity, cosa que yo nunca pude lograr.
Ejemplo de animación del juego PLASMA PUNCHER |
Aprovechando la oportunidad, pregunte cuál había sido su secreto, a lo que me respondió que era necesario desactivar mediante un script una propiedad de los huesos en Maya. Aún cuando no recordaba exactamente el nombre de dicha opción, fueron suficientes pistas para poder hacer una rápida búsqueda y encontrar que se trataba de un atributo llamado Segment Scale Compensate (SSC). Incluso el sitio oficial de Autodesk Maya ofrecía una descripción al respecto, así como el script en MEL que ofrecía la solución que tanto buscaba,
Este es el script:
{
string $selected[] = `ls -type joint`;
select -r $selected;
}
string $sel[] = `ls -sl`;
string $singleJnt;
for ($singleJnt in $sel)
{
setAttr ($singleJnt + ".segmentScaleCompensate") 0;
}
Una vez que el rig está terminado, solo basta con ejecutar dicho script en el archivo. Esto se puede hacer antes o después de la animación. También se menciona que si el esqueleto es modificado (se agregan o quitan huesos) es necesario volver a correr el script.
Ya hice la prueba y efectivamente la animación pasa sin problemas =D así que con esto podré mejorar las animaciones del juego.
Este es el script:
{
string $selected[] = `ls -type joint`;
select -r $selected;
}
string $sel[] = `ls -sl`;
string $singleJnt;
for ($singleJnt in $sel)
{
setAttr ($singleJnt + ".segmentScaleCompensate") 0;
}
Una vez que el rig está terminado, solo basta con ejecutar dicho script en el archivo. Esto se puede hacer antes o después de la animación. También se menciona que si el esqueleto es modificado (se agregan o quitan huesos) es necesario volver a correr el script.
Ya hice la prueba y efectivamente la animación pasa sin problemas =D así que con esto podré mejorar las animaciones del juego.