Notifications
Clear all

[Closed] Planted Key -> Free Key

Hey Maxscript-Gurus,

some days ago I recognized a problem which I can not handle myself anymore:

I want to convert planted keys into free keys. Okay this is really no big deal you might say.
Just go to the keyframe with the planted key and execute “biped.setFreeKey <bone>” but it is tougher.
Because when you convert planted keys to free keys, 3D Studio Max starts creating freaky interpolation curves between those two free keys, even if both the starting and the ending position are completely the same.
What I could do is setting a key every frame between the to planted keys, which I don’t want to.
Does anybody knows something about my problem?

Thanks in advance.

kogen

12 Replies

What do you mean by freaky?

You could also try looping through the keys and changing the Joint to Previous Key and IK Blend options. That will make them free keys and possibly avoid your problem.

Yeah you’re right I’ve got to be precise. When I say freaky I mean the fact that when you have two planted keys the leg rests still between these two keys. When you change the keys to free keys. The leg starts moving between the two new free keys (like the leg would be swimming). I could not find any solution besides creating keys in every frame between the two former planted keys. This is my current problem.

Unfortunately, there isn’t really a solution. You found it, baking…

I even tried applying keys in inverse order, and to my recollection that failed as well (note this is a couple of years ago, wouldn’t hurt for you to try). Off the top of my head, you can also attempt to bake throughout (maintain your planted keys), and then do a pass to delete obsolete keys.

Either way, my solution was not quick.

My impression is that those functions are really macros that “call” the UI, except unlike a user interfacing with the UI, calling the macro from a function does not work the same way.

Its a very long time since I used biped, but can you not change the tangency between your two ‘same’ keys so there’s no overshooting interpolation?

Hey Matt,

unfortunately it’s not that easy, I’ve already tried to modify the tension curve and also check the tangents in the Curve Editor. The problem with sliding keys is that the hip or the torso might move while the limbs have become pinned to the position. So when I convert sliding keys into free keys the hip is moving and the limb “assumes” that it has to follow the hip (or the torso) what I really need is either totally remove the sliding or “swimming” from the free keys. Or counter-animate the hip or torso by a function which seems to be even more impossible than finding a solution to remove the swimming.

           have you tried another way.. chaing key props..

  keyIndex = 1
   k = biped.getkey $'Bip001 L Foot'.controller keyIndex
   k.ikBlend = 0
   k.ikSpace = 0
   

Hey Huijun,

thanks for your idea, well yes, I’ve tried that and it did not work out.
I’ve experienced another weird thing:
When I create a planted key on every frame (for the whole animation where the objects has to stand still) and change all of those keys to FreeKeys manually it works, the limb rests on its place.

But when I create a loop to avoid setting FreeKeys manually that does exactly the same as I did by pressing the “Free-Key” Button (biped.setFreeKey obj). The limb starts moving again.
I don’t understand that.

Have you tried working the keyframes TCB ?

There’s several ways to avoid the interpolations set by biped, for example setting the Continuity to 0 on two consecutive keys, or setting the Tension to 50, or also modifying the bias to 0 on the first one, and 50 to the second one.

It’s a bit tricky, but I think it could work.

Yes, this was one of my first assumptions but it did not work out. As I said what confuses me the most is that the manual way of the conversion works but the script driven way does not.

Page 1 / 2