IK Animation problem


Hi everybody,

I am facing many problems when creating the IK animation. My job is related to shipping business and i need to create working ship’s crane model with IK constrains. The task is look simple from first approach. So what I exactly need - the crane structure has to follow the cargo on the hook. The biggest problem for me is the rubber band joint where child object is always scaling with parent, in my case hook block is the child of runner(wire is rubber band ). Hook is set up as a child with rubber band joint and checked constrains with relax to motion and rotation - doesn’t help, the hook still scaling or ’ constrains goal is not reached’…
When i created similar IK connection with simple solid boxes and dots then everything works smoothly but never work with more detailed objects, even worse- it works unpredictable. Some other issues i listed below:

  1. Appearing the ‘phantom ticks’ - without activation of animation some movements start recording on the time line (no ticks shown),
  2. The model is not respecting the Limits
  3. The screen picture is not reacting on the objects settings in the real time, i have to click on the object and moved a bit to accept the last alterations.
  4. The object is not respecting the Relax Constrains menu in the most of the time with mashes or more detailed blocks.

I’m official user of Rhino5, Flamingo NxT and Bongo 2.0. Below is the picture of crane. Is it anybody can advice me how i could fixed it? Thanks in advance.


Maybe a workaround for you, I use this method often: create the animation with simple objects and than use the “select child” option to connect your simple model with the complex one. Hide the simple model on a layer that is turned off. Advantage: you can delete parts of your complex model and place new part without to lost you animation setup, simple recreate the child connection.

(Luc Adriaenssen) #3

I can sympathize with your irritation concerning scaling parts in an IK-structure. Indeed all descendants of a scaling object happily scale along. An enhancement of the Hierarchy setting is on my wish-list for Bongo 3.
But then again scaling objects are hard to find in real life, apart from springs and obviously rubber bands itself. When it comes down to it, the cargo is simply moving “away” from the top of the crane’s boom; hence a telescope can do to generate the basic mechanism. The lines are merely “decoration”, and can be attached to the basic structure.

In crane.3dm (96.3 KB) you find the basic structure (left). At the right 2 scaling ‘lines’ are hooked up.
2 notes:
-The pivot of Line B is oriented according to the line’s center line. AND ‘Rotate is world space’ is unabled (in the Bongo Object Settings), if not the rotation of the pivot is without impact.
-The helper point “Hookgrip” is needed because when you constrain an object to a (poly-)surface it can freely move around on that surface.

Concerning your other issues:

  1. Could you send a sample model holding these ‘phantom ticks’. I’m compelled by the teacher in me to ask whether you use the correct therminology. A “tick” is the unit of the timeline – time is (initially) measured in ticks . Not to be confused with a “keyframe” which holds animation data (and is located at a distinct tick). What exactly do you mean here?
  2. Be aware that Joint Limits are relative to the pivots position and orientation (Object-space, not World-space). I guess that’s what’s bugging your model.
  3. Which “object settings” do you mean: object properties, keyframe data,… ? A sample model if possible?
  4. What do you mean by “mashes” and “detailed blocks”? A sample model if possible?


Two ideas for stretching rubber band, maybe you can use it for your animation:

  • draw curves
  • enable history
  • create pipe based on the curves
  • animate the control points of the curve

an other idea:

  • use two disconnected curves
  • history enabled and use arcblend between the two curves
  • history enabled and create a pipe on the curves
    Now your two initial curves can be moved and the pipe is updated always.

Here I used arcblend between two edges of the blocks (history enabled). Now the blocks could be animated and the rubber band keep both connected.


Thanks Micha, thought i can use this method. Let you know with the result.


Thanks Luc for support.
Good idea with telescopic connection, need a bit more time to study it on my model. What i noticed on your file “crane” that IK structure will work when Animation is not activated. For example when i move Load 1 then all structure moved according to hierarchy (parents-child) and IK could be activated when i start recording of animation. Is it kind of protection or wrong set up on my computer? Never happened this in the past.
Another concern is orientation of 'Load". On my model the block is following the boom (otherwise wire will be twisted) and hook need freedom in horizontal rotation.

Do you have a solution for it?

I will come back with other issues as listed above when have a bit more time.

(Luc Adriaenssen) #7

I hope I understand you correctly. When you Rhino-move Load1 the entire structure moves along, in animation mode it does not, right? This has to do with the cooperation of Rhino and Bongo. An IK structure is basically an hierarchical chain. Any child, grandchild, great-grandchild etc… will follow the ‘head’ of the family. In the crane model Load 1 (as well as Load2) is ‘head’ of the IK chain, hence moving (rotation, scaling) them using standard Rhino commands will move (rotate, scale) along all the descendants, regardless of their IK properties. Bongo (the plugin) is submissive.
In Animation mode (recording animation) however Bongo is in command over Rhino and all IK-constraints are kept in place and taken into account.
Nothing wrong with your setup I guess. Confusing? Maybe.

About the rotation of the load; various solutions:

  1. Often the structure of a IK chain can be turned upside-down. In the video on Bongo’s website http://bongo.rhino3d.com/video/whys-of-ik I speak of the snake being shaken by the head or pulled by its tail (i.e. is constrained to a moving object). In case of your crane the chain can start of by the bottom of the boom, hence all of his descendants (including the load) will rotate along. Problem (as you can see at the left in crane inv.3dm (150.1 KB)) is that a Constraint To Object is only about position and thus automatically releases rotation by the constrained object towards the target. In case of the crane however the line to the boomtip should remain vertical (gravity, isn’t it). This can only be achieved via some trickery, by adding an extra proxy which is given full freedom of movement but constrained to the directions of the World’s XY-plane.

  2. In the former IK setup an Expression can be used to transmit the rotation of Swivel to the Load (#Swivel1.ObjectAngleZ# for RotateZ of the Load) : crane expr.3dm (87.6 KB). Because this could cause a recursive calculation (a result based upon a result) Bongo denotes in the command-line: ”Unresolved animation hierarchy.” Although the model is operational this ill can be avoided by using a proxy in the IK chain. The Load, made child of it, can happily rotate. Aditional hardware (like blocks) can easily be hooked-up.

Not for sissies he!

Depending on how strict the path is you want the load to follow I dare suggest a 3th option which – I believe – will enhance the naturalness of the movement. You could use IK only for the displacement of the load from and to the crane (as well as up and down) and use plain FK (forward kinematics) to take care of the rotation of the crane. In crane combi.3dm (91.3 KB) a rotating element is introduced: the foot of the crane. The load is child of it, hence turning along. The bottom of the boom (point ‘Swivel2A’) is constrained to a point (‘Swivel2B’) child of the rotating circle in order to comply with the image of the crane you posted earlier.

Any questions – you know where to find me.