Community
Maya Animation and Rigging
Welcome to Autodesk’s Maya Forums. Share your knowledge, ask questions, and explore popular Maya animation topics.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Cluster Deform rotation and scale acting up

10 REPLIES 10
SOLVED
Reply
Message 1 of 11
azuline_teulie
636 Views, 10 Replies

Cluster Deform rotation and scale acting up

Hi!

I'm trying to have my cluster deformers deform my mesh after rigging.
So I have my cluster in a groupe that has it's pivot the same as the cluster then the group is in another group world centered.
Cluster's relative is OFF

Cluster's input is AFTER the skin input
The cluster translate, rotate and scale are linked to the control in the node editor.

 

The Translate works perfect buuuut rotate and scale doesn't...

I tried relative ON/OFF, input before/after, group pivot points different places, number off groups, parent constraints between a lot of things... I feel like there's something I'm not understanding in the cluster deform pipeline haha. 
Please heeeeelp, thank you!

10 REPLIES 10
Message 2 of 11
mcw0
in reply to: azuline_teulie

Having the cluster before the skinCluster is how I generally do things.  The cluster acts on the character in the default position.  Before the skinCluster.  This way, you can check to see if the rotation, scale and translate is doing what you want.  Then when you add the skinCluster deformation, you are guaranteed to have the cluster deformation work as intended.  The skinCluster carries the cluster deformation around and adds to it.  The cluster can be grouped and stay at the origin/default position.  If you have the cluster as relative, then it could be under a group and the group can be parented to your rig.  But it doesn't need to be.  It's up to you how you want to organize nodes in your setup.  I hope that makes sense.

Message 3 of 11
azuline_teulie
in reply to: mcw0

Hi!
Thanks for your answer, I tried doing what you told me on a sphere (just in case a had problems with my rig), but it ends up with the same results that I had with that way of doing it:
It works fine on the spot but then when I rotate my Position ctrl (that moves all the rig), the cluster deformation doesn't keep the same translation deformation. Like on the spot if I translate the cluster in X (the deformation comes out straight) and then I rotate the root, the cluster X translate becomes the Z or something (the deformation is not straight out anymore but is to the side).


I attached photos because I feel my explanation is not very clear haha. I also put the sphere scene. Sorry I didn't delete any history on any objects so it's kind of dirty but I think it should be alright just for demonstration (in my real scene every thing is history deleted and all)

 

Anyway thank you for taking the time to help me!

Message 4 of 11
mcw0
in reply to: azuline_teulie

Sorry if I wasn't clear about what having the cluster before the skinCluster means.  I've made the fix to your file.  See how in the inputs stack, the cluster is listed below the skinCluster.  This means it's deformations will happen before the skinCluster.

Also, the cluster should be in relative mode.  What this means is that only values on the cluster will have an effect.  It doesn't matter what the parent node is doing.  Only what the cluster is doing.  Since you had a constraint on the cluster, it was getting values as you can see in the channelbox.  So you will get a deformation.  I've placed the cluster under a group node and grouped it under your main control curve.  Notice how up until frame 5, there are no values on the cluster other than the default zeros and ones for the scale.  Only when the second animation control moves are values applied to the cluster via the constraint you have.  I hope this makes sense.  Let me know if you have any questions.

Message 5 of 11
azuline_teulie
in reply to: mcw0

Hi, thanks so much for taking the time to look into this. You're file absolutely works and I tried reproducing it with a bit more complexe rig and it also worked.

Created kind of a 2 leg rig, with a ctrl for the root and the position.
Put a sphere in the middle of the 2 legs that is skinned to both foot.
Then a cluster on that sphere.  that I grouped and put under the root ctrl. relative mode activated. cluster input moved benith skincluster on the sphere

created a ctrl for the cluster, put it into a grp same pivot as cluster.

poly point constraint the group of the controle to a vertex of the sphere (so that it moves with it when rig moves)

put the group under the root also

and connected translate rotate and scale of the control to the cluster via node editor.

it works fine, even when I mode root, leg or whatever in translate, rotate and scale.
buuuuuut I went and redid it into my rig and it doesn't! haha
So I attached my rig and it would be really amazing if you could explain why it doesn't work 😞

on the image I circled all my clusters, but the one marked 1 is the one I completely redid as the same way I explained. The other ones are with my different workflow (that still doesn't work hahahaha)

 

There's also the simpler rig that works.

 

I'm really grateful for your time 🙏

P.S: oh yeah and the global ctrl is scaled down to 0.027 that's 'normal' because I realized after ward that my character wasn't really much too big for my sets... And the clusters didn't work well with scaling that much so did them on the scaled version directly... I really hope that's not why it's not working properly though... 😮

Message 6 of 11
mcw0
in reply to: azuline_teulie

All clusters are behaving with the exception of the one you indicated.  And that one was also working based on how it was driven.  What needed to happen is on the "GRP" node in the attached image, there is a scale of 37.  That means your "CTRL" has to move 37 times farther than your cluster.  Reset the scale of the "GRP" to 1.  Then the only other thing is the pointOnPolyConstraint.  That is causing a double transform resulting in your "CTRL" being much farther than your cluster.  I zeroed the weight of that constraint and the results were much better.  I hope that makes sense.  Good luck with your project.

Message 7 of 11
mcw0
in reply to: mcw0

fix.pngOOPS, forgot to attach the image

Message 8 of 11
azuline_teulie
in reply to: mcw0

Thanks for the help, freezing the scale to 1 is actually making it better (the scalled automatically changed when I parented the group I don't know I I didn't think of freezing it afterward to counter that in the node editor I actually add a multiply node for the translate because it didn't move enough like you said haha)
But zeroing the weight of the point to poly constraints is the same as deleting it if I understand, and in which case the control doesn't follow the geometry anymore which makes it hard to animate in the futur.

I guess I'll keep my set up how it was (with freezed scales added) and it will have to be good enough, but the other ones are broken because the rotation and scale are kind of being translated as the same time as if the center of pivot and scale weren't the center where the ctrl is. (For the clusters on the chest I actually locked and hide rotation and scale because it was making me too sad to try and  use them and realize it didn't work haha)

 

Cluster5.PNG

Thank you again for your help! I'll continue doing my best and eventually I'll finish this 💪

Message 9 of 11
mcw0
in reply to: azuline_teulie

The issue you are having rotating and scaling the other clusters is because you said you created them after you scaled down your rig.  If the clusters act before the skinCluster, then they have to relate to the mesh while at scale 1.  If you reset your rig scale to 1, and then snap all the clusters pivots to match where the respective CTRL pivot is, things will work better.  But those pointOnPolyConstraints will still cause a bit of weirdness.  But it will be a lot less after resetting your pivots.  I hope that helps.

Message 10 of 11
mcw0
in reply to: azuline_teulie

strip.pngThere's a lot going on in your setup so I don't want to dive too deep.  A quick solution to your "double" transform with the pointOnPolyConstraints is to use a proxy mesh to constrain to.  This will allow you to position your CTRLs but not double transform them.  In the image, to create the highlighted strip, duplicate your mesh at scale 1.  Extract that strip from the duplcate mesh.  Now copy the skinning from your original mesh to the strip.  Use the strip as the source for your pointOnPolyConstraints.  And then hide the strip.  No clusters on this strip.  Only the skinCluster.  I hope that makes sense.

Message 11 of 11

HOUUURAYYY! FINAAALLLYYY! I'm soooo happy! it works great! Great tip about duplicating the mesh to have the constraint on it! This is what I was missing to not have that double transform! Thank you so much!

And now it works like a charm when I do it with the rig scale to 1 and freezes the scales in the groups!

I should have asked sooner haha I've been struggling with this on and off since December XD
Thank you sooo much both of you again! 🤜💥🤛

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report