Look At - Why diving, and why sometimes not?


Experimenting with Bongo I tested if I could make an object “float” on a surface (and yes, it could). :relieved:

Then I also tried if I could make a rising wave and still have the object floating on top and, here’s what I’m wondering about: Sometimes the object actually floats up with the rising wave/surface, but other times it doesn’t!

How can this be? And, what should I try tweaking to have a better chance to make the outcome more predictable? (using Rhino 5, Bongo 2 latest release of both)

Compare the two pictures below. A Point at each end of the floating object follows the surface with a “Look At”-constraint, which means that the object (the object ends) should “sink” only halfways down in the water (as in Fig 1. below). At the same time an upwards movement in the surface (a “wave”) takes place while the object is approaching (such movement only on this wave top though, the rest of the surface is still).

Fig. 1: Object floating as expected :

Fig. 2: Object is “diving”, cutting right through the wave (probably following the “still” path, that is, the surface as it was when the animation started) :

Edit: Is should add that once the object actually floats as expected in an animation run, then it keeps working (when coming back and while looping, I let the animation return back to start position). I have also tried to drag the TimeLine manually and stopped dragging when the object was “diving”, and when the motion stopped the object suddenly “floated up” to the surface (and kept following it thereafter, until I reloaded the file again).

// Rolf

A few assumptions:

Look At is a Simple constraint. I don’t see how this can work.
The IK decoration in your image tells me your system is IK. So I assume you mean a “Pivot Constraint” , in particular “Constrain to object”, the object being the wavy surface.

The white curve in your images is probably a path along which the primary figure is moving by means of a “Simple Constraint: To Path”, hence make the float move along the surface?

I guess you animated one or more control points of the water surface to create waves. In other words, you used morphing.

I made a pastiche based on your images and the assumptions above.
floating.3dm (118.5 KB)
As long as the primary figure is just moving (I used a linear displacement) everything is OK. When the waves are arising at keyframe 50 it appears as if the “Constrain to object” doesn’t work.
The thing is that Bongo has to do 2 jobs: first remodel the surface acording to the morphing and secondly recalculate the IK constraints. Only the first is done when previewing (“Play”ing) the animation.
A trick around is to press the next-frame-button on the timeline slider constantly to get a (little more bumpy) correct Preview. An enhancement of the Preview is already on the wishlist for Bongo 3.

When you finally render the animation everything will look fine though :relaxed:.

Yes, you guessed right about just everything. It was me confusing two different points in my post, sorry. Correct is (starting from the tip on the left):

  1. Tip (Pt) : Simple Constraint = To Path (leaning bumpy curve)
  2. Tip (body): IK Joint = Hinge (relocated to the tip)
  3. Link (Pt in 1:st ball joint). : IK Joint & Constraint = Hinge & Look At
  4. Link (Pt in 2:nd ball joint) : IK Constraint = Constrain To Object (Surface)

The whole chain:
( Pt#1 -> (Tip#2 -> **(**Pt#3 -> (Link+Pt#4) ) ) )

So yes, the Tip/Pt follows the leaning curve, making the whole thing slide back and fourth on the surface while the tip is pointing up and down, while the Link “floats” the surface by means of their Pts in the center of the “ball joints” (ball joints, because I planned to try something even nastier than this, which only uses Hinges)

Yes, tried to be nasty there. :smiling_imp:

Looking forward to Bongo 3 :slight_smile:

Last question: Is it possible to hide the Hinge symbols (and path) as to be able to capture the viewport without them littering the picture frames?

// Rolf

Video: https://drive.google.com/file/d/0B2OlFpI0gNEGeUdmWFhadklIeWc/view

Have a look in Bongo Document Properties

You can easily Hide Rhino objects (like the leaning curve path) without disturbing Bongo. You can Simple-constrain or IK-constrain to any invisible object just fine.

Another question:

I made a variant of the axle joint, a std rotating universal/cardan joint, which is known for it’s lesser than optimal smoothness in transferring torque (due to the “elliptical” acceleration and deceleration in the cross joint), and so the whole thing tends to start swinging and whipping back and forth.

So I would like to find a way to stabilize the joint somewhat, somehow (making the axle stumps strive to stay aligned), but I don’t seem to find a working solution for that (for example I don’t understand the Rubberband Joint). Any hint would be appreciated.

I also set a (technical) limitation to the angle, of +/- 15 degrees (although that of course doesn’t do away with the whipping). A 2 sec video clip demonstrating a wild ride… :slight_smile:

// Rolf

I guess you have a superfluous joint. It’s hard to tell, based on a movie.
Could you upload the model so we can have a look?

It’s actually a very simple configuration, but the other stuff (like the lines) in there was used for trying to stabilize (like “Look At” etc). But that isn’t part of the IK chain in the clip. All that’s in there is a :

  1. Point (Simple Contraint - To Path)
  2. Axle A (IK Joint - Hinge X)
  3. Cross (IK Joint - Hinge X)
  4. Axle B (IK Joint - Hinge Z)
    4.1 Point B1 (IK Constraint - To Object/Surface) : making Axle B to "float"
    4.2 Point B2 (IK Constraint - To Object/Surface)

Hinges limited to ~15 degree angle. That’s it.

Except for the ol’ surface which is “making waves” in the background, but the swinging of the axles is the same also with the surface being still.

The (superfluous) lines where earlier used for testing if I could find a way to “pull the axles together” as to stabilize them making them strive to stay aligned, but none of that is in effect in the video.

// Rolf

I’m sorry, I’m afraid I cannot help you this way. When your model is confidential you can send it to me (luc@mcneel.com) via WeTransfer, Dropbox or similar.

Its just a test model:
Cardan Joint Test.3dm (1.4 MB)

// Rolf

My guess was wrong. This is what causes the “swinging and whipping back and forth” :
'Pt Axis A Tip’ has rotation data (0°…720°), ‘Axis A’ being child of ‘Pt Axis A Tip’ rotates along, hence the Hinge X-axis rotates along. Observe e.g. at tick 12 both X-axes point downwards,

hence the ‘stump’ (being Hinge X) turns left pursuant to the constraints. The same occurs for instance at tick 87 where the X-axis is nearly upright.

What you want (I suspect) is the Hinge axis to stay horizontal allowing the entire system to twist up and down and the ‘stump’ to rotate around his own axis. To achieve this Rotation and Hinging must switch places in the IK chain; the Hinge first, then the rotation.
So make ‘Pt Axis A Tip’ Hinge (X) and give ‘Axis A’ the rotation data via keyframes.
Cardan Joint Test 001.3dm (864.5 KB)

When you want to reinstall the Simple constraint ‘To Path’ an extra point (coinciding with ‘Pt Axis A Tip’) must be put on top of the chain because ‘Pt Axis A Tip’ cannot be Simple constraint and Joint (Hinge) simultaneously.
Cardan Joint Test 002.3dm (809.6 KB)

BTW in an IK-chain a ‘Rubberband’ allows the object to scale (with his pivot as base-point) in order to comply to the IK constraints - just like a Hinge does with rotation and a Telescope with displacement.
A example Rubberband 001.3dm (95.1 KB)
For practical use (like in a mechanical structure) a drawback can be that all of its children scale along with.
http://download.mcneel.com/s3/mcneel/bongo/2.0/samples/en/BongoIK_01.3dm is a example that figures on Bongo’s web page. And I don’t know anymore where I got this cutie from RubberbandExample_Animated.3dm (845.1 KB)

PS. Nevermind. We all make “test models” :blush:

Hi again Luc,

Looking much better! Thank you for this post, this is very helpful in all its simplicity.

Also the rubberband examples clarifies a lot. Those examples will help a lot for solving other problems I’ll try out. The Rubberband Scaling didn’t seem to be a problem in the crane example (BongoIK_01.3dm).

In any case, rubberbands are useful stuff. Duct tape is too. :grin:

// Rolf

That’s because the rubberband is at the end of the IK chain, apart from the point Object 6 which luckily has no dimensions are therefore is unscalable.
Same thing in the 2 structures in Rubberband 001. In the left one the ruberband is at the end of the chain (apart from a point), whereas in the right one the cube is child of the ruberband hence scaling along. Unfortunately it is not always possible to reverse the structure of a chain.

BTW regarding the preview of your floats. I hope you understood well. It is not necessary to repeatedly click the ‘next-tick-button’ in the timeline (that indeed would be annoying). You can just press (not click) continuous, ongoing, constant the LMB button and you’ll see the mouse pointer running along with the timelineslider. Just release the LMB to stop.

Have fun with your project.

Yup, got that one. It helps a lot to know that trick.

But now I have bad news for you. In the other thread we tried to solve a problem with EdgeSoftening not sticking to my solids. A solution was suggested, I could restore the capability of EdgeSoftening sticking but, and here it comes, the objects stay Softeneed only if NOT linked in a Bongo IK-Chain, or if only Children to any such object.

I just sent the model to tech@mcneel.com but when sending that mail I had not yet disclosed when or what is stripping the objects of the Softening. But after only one (1) rendered Keyframe in a Bongo animation (its all in the file I sent) the EdgeSoftening was gone.

If it’s Bongo or something else causing the failing EdgeSoftening I do not know (of course), but take a look at that and let me know if I can prevent this happening, somehow.

I’ll repost this new finding in the linked thread.

// Rolf

I was aware that ‘Render tools’ like “ApplyCurvePiping” or “ApplyEdgeSoftening” also didn’t refresh in Preview.

I’ll pass the concerning tread on to the developers.

It seems to be worse than that, because the EdgeSoftening doesn’t survive using Rhino Renderer for the animation directly after “restoring” the EdgeSofteing (without previewing any keyframes). So, it seems to be not only a problem with the Viewport preview, since the final (Rhino rendered) video lacks the EdgeSoftening.

Hopefully this will put you guys on track of the cause.

// Rolf