Hi guys, I have a problem and I hope you can help me. I must solve it as soon as possible.
Problem is that I made rig for my character and during rigging process I totally forgot to care about scaling and now it’s problem. Does there any plug in or something similar to scale together model, joints and controllers? For example when I scale main controller some elements don’t have proper scale value, I have double scaling on bind mesh. Do you had similar problems and how I can solve it. I suppose there is way to group all elements on a locator and to scale it.
mrfred , i dont think that would be perfect if you have a character with expressions and controllers based on length and distances thats in MAX but you may edit your expressions to be related to the master thing you scale from i guess it would be character set , for Boba3d i think the same goes right for maya
you’re right … it all depends on the complexity of the rig… it worked fine on a simple rig with triple Ik leg, spine, head, FK arms and tail.
We did this for a testing purpose cause animator wanted to animate 2 characters for fun and wanted 1 of them to be 2 times bigger than the other one. It wasnt meant to go into the production pipeline.
Here are some suggestions and I may have made some mistakes.
Some of the quicker type of scale fixing are
– if geo is skinned to a joint (turn geo’s inherit transform off), why to prevent joint moving moves geo and scaling moves geo double movements.
– for all spine ik curves (turn inherit transform off), why to prevent curve moving when scaling (note this does not correct the curveInfo arcLength)
Some of the more involved scale fixing and I think they mostly happen for stretching areas are
– any expressions using distance (need to use a normalized distance )
– any nodes using distance (need to use a normalized distance)
Some suggestions for the more involved fixes are
Have global scale untouched at 1.
create a normalized multiply divide node for each distance node in scene
Why? by having denominator global scale and numerator distance we in a sense are telling the joints the distance in their local space that they understand.
That is before scale if one joints local translateX is 5, uncorrected distance is 10 after scaling rig twice bigger joints local translateX doesn’t change it remains at 5 but uncorrected distance is 20. By doing correction corrected distance is 10 in the same local space as before so joints understands it and don’t stretch. (corrected distance = uncorrected dist/ global = 20/2 = 10 )
have the normalized nodes default output be the distance nodes default output
Why? so on first reconnections it is as if the normalized node is measuring what the default distance was. This is so
no joints get moved while doing the new connections.
make sure normalized divide node is hooked up to all the things the distance node was outputing to
Why? so things are using the default multiply divide node value from old distance default measurement. This was the reason we did 3. Also, because global scale at 1 this is okay for now.
make sure distance node is hooked up to normalized divide node
Why? so things are using corrected distance when global scale is changed from 1.
Thank you for suggestions, I will try some of these ideas when I am able. This time I made new rig because I thought it’s the best and fast way to solve the problem, because I had short deadline and it was big risk to research solutions. But definitely I will make some researching for this problem in a case it happens again. I will try some of your ideas. Unfortunately I am not familiar with scripting and expressions and all of my rigs are based on system without expressions and scripts, but I know scripting and expressions are necessary for professional riggers. Instead these script lines I usually try to sort things with set driven keys and with constrains.
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.