View Full Version : 3dsMax scale Expressions

08 August 2011, 11:29 AM
Im gonna open this up to everyone because its hurting my brain!

I make judicious use of list controllers with expressions inside on my rigs. These expressions are ususally fine, but we've recently got Scale working in our game engine and I have managed to put a simple scale expression onto bicep bones which scale when the forearm rotates. These work fine.


When I try to do anything a little more complex which will have multiple inputs I hit a problem. In order for me to get my bicep scale expressions working, I had to add an offset into the expression as follows:

1 + (ForeArmRotation)

This has to be done, otherwise the 'bind' pose of the bone will be at 0 scale which send the skin modifier crazy.

Unfortunately, I cant simply do this for every single expression running on a joint because I get an addiditive plus one on the expression. For example (lets say the joysticks are at a zero position i.e a bind pose style pose):

with one joint I get (1 + joystick1 value) added so I get a scale of 1 when using joint.scale.x

with two joints I get ((1 + joystick 1 value)+(1+ joystick 2 value)) so i get a scale of 2

with three joints I get ((1 + joystick 1 value)+(1+ joystick 2 value)+(1 + joytsick 3 value )) so i get a scale of 3

Has anyone encountered this problem before? I've tried allsorts. I just tried activating the average weights checkbox but I dont think this is going to help me either or if it is then Im misunderstanding something with it...

08 August 2011, 07:00 AM
Instead of 1+(Forearmrotation) for the expression, have you tried to replace "1" for a variable that holds scale at the binding pose? Have you freezed transform?

And how about turning off and on "allways deform" if the skin modifier gets crazy?

These are weird solutions, but you never know...

08 August 2011, 04:21 PM
can you post a very simple example scene exhibiting the problem?

08 August 2011, 04:38 PM
I've actually just managed to get this working by concatenating all of my expressions into one float expression.

For example if i had two expressions as follows:

joystickA * 0.2


joystickB * 3

then my final concatenated expression will be:

1 + ((joystickA * 0.2) + (joystickB * 3))

08 August 2011, 08:03 AM
I don't know if this will help, but in the past I've used objects to perform all the math for rigs instead of expressions. I created tutorials for the techniques a couple years ago and recently loaded them to youtube here ( or you can look at them on my website ( Perhaps you can find something useful within them.

CGTalk Moderation
08 August 2011, 08:03 AM
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.