Cómo solucionar problemas de blendshapes con skinning en Maya

vlk - 15/03/2011 01:10
software -> Maya 2011.

Qué tal. Bueno quería preguntarles de una duda que tengo del deformer blendshape para eso prepare un pequeño y muy simple ejemplo.


🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #143914


Como verán en la imagen número 1 existen 2 cubos(polymesh) llamados pcubeb, pcubea presentados en ese orden, verán que está seleccionado pcubea con 3 nodos conectados que seguro ya conocen y el timeslíder con 2 keys que pertenecen al Joint que tiene movimiento donde la malla pcubea está conectado a los Joint con el bindskin(smoothbind) el mismo que da como resultado al nodo skincluster.


🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #143915


En la imagen número 2 muestra la rotación del Joint con sus respectivos keys que guardan la transformación del Joint dándole a pcubea una forma parecida a pcubeb. Seguro ya se dieron cuenta de qué se trata el tema.


🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #143916


En la imagen número 3 muestra ya al blendshape aplicado a pcubea con la referencia de pcubeb con el valor de peso igual a 1 dando la forma exacta de pcubeb al pcubea. Cabe notar que el timeslíder está en el keyframe 10(keyframe 1 postura inicial - 10 postura final de pcubea).


🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #143917


Vemos que en la imagen número 4 que al al poner en el keyframe a 0 pcubea no respeta su conexión con el Joint mediante el bindskin como antes porque el nodo blendshape está en el valor de peso igual 1 y al dar valor de 0.5 recién trata de adquirir la forma inicial en que el Joint indica claro no es completa porque el valor del peso 0.5 del nodo blendshape no se lo permite, es en ahí donde se genera mi duda viendo como la malla de pcubea sufre una especie de encogimiento en el valor 0.5 y el problema del Joint y el blendshape mencionado trate con cambiar las posiciones de los nodos en(imputs) pero no se soluciona.


🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #143918


En la última imagen gracias al nodo tweak el cual le da una solución a mi problema, pero.

Como podrán observar el nodo blensshape esta con el valor de peso 0(inactivo), el node skincluster con valor de 1(activo). En el keyframe 10(pose final de pcubea) manualmente por así decirlo con las herramientas movetol, snaptopoint tuve que mover cada vértice al lugar que corresponde tomando de referencia el pcubeb, almacenándose la transformación local XYZ de los vértices en el node tweak, en el timeslíder puse keys que hago coincidir los valores de peso de tweak con los valores del Joint y sus keys correspondientes dando como resultado el movimiento deseado de pcubea (video .mov 108kb

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #143919

)aunque con un leve encogimiento, pero no tan notorio como del blendshape, pero al querer modificar los vértices de pcubea para seguir corrigiendo tenemos que empezar de nuevo todo lo descrito de la imagen número 5 , en cambio en blendshape basta con mover los vértices que queremos corregir de la malla de referencia en este caso pcubeb y se refleja automáticamente en pcubea debido a su conexión.

Ahora ¿cómo se puede lograr el mismo movimiento con blendshape u otro (s) o necesariamente se tiene que crear un Mel-script combinando la conexión de los vértices de la malla base pcubeb con pcubea de blendshape con la transformación local de XYZ de los vértices de tweak que sería genial?
A ver si me echan una mano por favor. Gracias.
.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #143914



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #143915



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #143916



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #143917



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #143918



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #143919

3dpoder - 14/08/2025 23:50
Cuando trabajas con Blendshape y SkinCluster en Maya, es frecuente que la malla base sufra encogimientos o deformaciones incorrectas al animar los joints si el blendshape tiene influencia activa. Para mantener la forma de la malla mientras los joints se mueven, necesitas organizar correctamente los nodos y, en casos complejos, usar un nodo Tweak o un script que combine ambas deformaciones.



Preparar la malla y los joints

Crea tu malla base y vincúlala a los Joints mediante Smooth Bind. Esto generará un SkinCluster que controla cómo la malla se deforma al mover los joints. Verifica que los weights estén correctamente distribuidos antes de añadir cualquier blendshape.

Aplicar el Blendshape

Añade la malla de referencia (por ejemplo, pcubeb) como objetivo del Blendshape. Ajusta el valor de peso inicialmente en 0 para mantener la forma base de la malla. Esto permitirá que cualquier animación de los joints no se vea afectada al principio.

Ajustar la influencia durante la animación

Al animar los joints, si incrementas el peso del blendshape, la malla puede encogerse o deformarse incorrectamente. Aquí entra el nodo Tweak, que te permite mover vértices manualmente y almacenar sus transformaciones locales XYZ. Así puedes mantener la forma deseada de la malla mientras los joints se mueven.

Mantener la flexibilidad del Blendshape

Si quieres continuar ajustando la malla de referencia, los cambios se reflejarán automáticamente en la malla deformada sin necesidad de mover los vértices manualmente. Para animaciones complejas, considera un script MEL o Python que combine la deformación de los vértices del tweak con la animación del blendshape, automatizando la corrección y evitando encogimientos.

Organizar correctamente la secuencia de nodos y usar tweaks o scripts permite combinar SkinCluster y Blendshape sin perder la forma de la malla durante la animación.