3DS Max Bone Sine Movement

Hi all,

I have a question about a bone system and making it move using a sine wave. It’s for a tail and it consists of around ten bones. The means of control is an Attribute Holder modifier with a float parameter.

Now I can get the basics of what you could call a sine wave using a simple (sin(radToDeg(Swing))) using Wire Parameters where Swing is the name of the Float in the Attribute Holder. The rest of the bones use the X_Rotation from the parent bone.

But here comes the part that I’m struggling with. The bone system is just wiggling around and isn’t acting like a moving sine wave.

What I’m looking for is a wave like motion. This probably means I have to think of some way to insert a “motion”/frequency and an amplitude to control the waveheight. I have some experience rigging and have no problems making custom rigs but this is one of my first adventures in the more advanced topics of rigs

If you guys could point me in the right direction that would be much appreciated.

Thanks for your time.

Hello,

I’ve attached a file which should help. Almost as soon as I had completed it I remembered that Felix Joleanes had an article on his website about procedural animation, the simple version is exactly what I produced but he also created another version for individually controlling the amplitude of the curve at the beginning and end: http://joleanes.com/technical_stuff/ProceduralAnimation_Experiment_4_Sentinel.php

-Harry

If what you are asking is how to control both the amplitude and swing in wire parameters…

Well… wire parameters pretty much use maxscript syntax, so you could in theory introduce the second parameter using “$YourObjectName.modifiers[#attribute_holder].custom_attributes.amplitude”, but it’s a really really really bad way to do it; for many reasons.

In cases like these it’s better to use an expression controller, add variables for your swing and amplitude, point them to the custom attribute slider/spinner tracks and use something like “sin(degtorad(swing+360*boneNumberStartingAtZero/totalNumberOfBones))*amplitude” for expression. At this point you can easily figure out how to make it use separate amplitudes for start and end, and how to blend between them along the chain.

Thanks both.

I downloaded haz’s file which gave me quite a good picture of what I needed. I never thought of using expression controllers, I hadn’t used them before. It took me a while to find though. Also that link is really useful, thanks for sharing.

Zhalktis, you’re dead on about the wire parameters, the expression controller is exactly what I need. I’ve already got some ideas on how to continue and get some sexy motion going.

Thanks again guys.