Normalising joysticks on creation - maxscript, xform

I’ve also posted this in the Maxscript forum on CGTalk.

For a while now I’ve had a joystick creation system that lets me link joystick sliders to bones (or anything else really) to control their rotation and translation.

This issue that I’ve always had is that the scale I have to work at is quite small so building a joystick that goes from -1 to +1 is massive on the screen - therefore I build all my joysticks so that they go from -0.05 to +0.05 and then normalise in my expressions or wiring.

I’m now thinking that this is a hack, and that I must be able to build them at that small scale, yet have them work as if they run from -1 to 1.

I’m at home rather than at work so I can’t experiment, but I’m thinking that I might be able to construct the joystick (bounding box with circle and text) and then scale it with an Xform modifier. I’m sure someone will have ran into this issue before and can advise me if I’m heading in the right direction.

I dealt with this same issue when I was building facial rigs and our engine required that Max be set to One Unit equals One Meter. If I recall correctly, I think I just put a multiplier in the expression to get the final result I was looking for. Will that work for you?

Actually, after looking at it again - I was using the reaction manager to define the relationships between the bones and the joystick controllers. That way I could give it whatever values I needed to get the right movement ratio.

Yup, 1unit = 1metre.

The multiplier is what I’m doing currently - normalising the joysticks in the equations. I was just hoping to avoid that step by building the sticks at full size and shrinking them after the fact.

I’ve always used this manipulator. I haven’t tried it in 2009, but it works
in Max9. I assume it’ll still work.

joystick-manipulator

Not sure if it suits your needs.

Cheers TechChimp, I’ll have a look.

I had to go back to this today as we were putting stuff into the engine, and as expected the effect was out by a factor of 20.

In the end, the fix seems to be simple - I create the joystick from -1 to +1, then scale the bounding box to 5%. The controller is small on screen, but the parent space value of the actual joystick still reads -1 to +1.