Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Jump rope simulation
#1
Pregunta 
Hi,
I'm trying to implement jump rope like this video https://www.youtube.com/watch?v=4GI9efQsDn8
I have 1 character model, 10+ character animations of jumping.
I made rope horizontally, made 2 handles for each end of particle and rotated handles but unfortunately the rope didn't rotate I expected.
Is there any way to implment correctly?
Thanks for any advice.
Reply
#2
(19-01-2018, 10:29 AM)Prin_E Wrote: Hi,
I'm trying to implement jump rope like this video https://www.youtube.com/watch?v=4GI9efQsDn8
I have 1 character model, 10+ character animations of jumping.
I made rope horizontally, made 2 handles for each end of particle and rotated handles but unfortunately the rope didn't rotate I expected.
Is there any way to implment correctly?
Thanks for any advice.

Hi,

For the rope to behave like in the video, the character hand's movements have to be in perfect sync with the rope's inertia moment. This is far from trivial to accomplish.

Imagine you grab a jumping rope and spin it at any random speed you like (too fast, or too slow). Most of the time the rope will just "jerk" in place but will not begin rotating around you at a steady pace. You must continuously adapt your hand movement, syncing it to the rope's movement in order to keep it going.

So you'd need to derive the angular momentum on the rope's rotation axis (the axis going from your left to your right hand). This depends on the mass and the lenght of the rope. Then derive the required speed of the handles to maintain the rope's momentum. Now, since the speed of your character's hands is determined by the animation playback speed, things get quite nasty.

This is a closed-loop control scheme: the control signal (hand movement playback speed) needs to be adjusted automatically whenever the input (rope's movement) deviates from the desired value. So imho, your best bet would be to use a PID controller. The input would be the desired rope angular speed, and the output would be animation playback speed.

If the term "PID" is unknown to you, then I'd approach this project in a lot simpler way: just animate your rope, do not simulate it.

cheers,
Reply
#3
(19-01-2018, 11:02 AM)josemen dez Wrote: Hi,

For the rope to behave like in the video, the character hand's movements have to be in perfect sync with the rope's inertia moment. This is far from trivial to accomplish.

Imagine you grab a jumping rope and spin it at any random speed you like (too fast, or too slow). Most of the time the rope will just "jerk" in place but will not begin rotating around you at a steady pace. You must continuously adapt your hand movement, syncing it to the rope's movement in order to keep it going.

So you'd need to derive the angular momentum on the rope's rotation axis (the axis going from your left to your right hand). This depends on the mass and the lenght of the rope. Then derive the required speed of the handles to maintain the rope's momentum. Now, since the speed of your character's hands is determined by the animation playback speed, things get quite nasty.

This is a closed-loop control scheme: the control signal (hand movement playback speed) needs to be adjusted automatically whenever the input (rope's movement) deviates from the desired value. So imho, your best bet would be to use a PID controller. The input would be the desired rope angular speed, and the output would be animation playback speed.

If the term "PID" is unknown to you, then I'd approach this project in a lot simpler way: just animate your rope, do not simulate it.

cheers,

Thanks for your reply!
Actually my project needs to implement a virtual loop because I use kinect to represent the actual human's movement as an avatar.
However, a virtual rope doesn't have to physically reproduce the actual loop perfectly. I just want it looks plausible.
I've understood I should give the proper angular velocity to the loop, right?
The beat per minute (BPM) will be fixed constantly, so it seems to be OK to give a constant angular velocity to the loop.
Could you suggest me a way to give a constant angular velocity to the loop?
Reply