Grasshopper

algorithmic modeling for Rhino

Hi all, I would like to be able to bend polylines using Kangaroo the way they did bend wood in the pre-computer era to build ships. Like so:

I found a definition from Mårten Nettelbladt and already tried a few things, but the only thing I really found out is, that using Kangaroo to imitate this the end point wouldn't be a real anchor point but moving towards the start point while the "curve" is deformed. Also the springs need to have more or less the same lengths when resting again. Otherwise things look more like a worn out rubber band than (thin,) bended wood.

(The black points in the second image are supposed to imitate the nails in the first image.)

I've added a definition showing a few things I already tried. I also tried, not in there, to use Translation Lock and Equalize Angles, but that gave me strange or no results at all. Any hints?

Views: 6193

Replies to This Discussion

Hi Marcus,

Your question makes perfect sense, and I think this is a very nice application - linking back to the physics-based origins of splines.

As you have found - anchoring points along the polyline and moving them sideways will stretch the curve - I think you need something that lets you push the curve aside, but so that it can still slide past it.

The next version should have a point-line (or sphere-cylinder) collision option, but as this is in plane, I think we can use the existing line-line collision with vertical lines for the nails. I'll try and put an example together now.

Is this more like what you had in mind?

See how the points of the polyline/spline can now slide past the 'nails'.

Here I've anchored one end and constrained the other to move only in X.

If you wanted to also fix the tangent at the start of the spline, you could anchor the first and second points.

Also - if you are interested in reading more about elastica and the relationship between physical and CAD splines, Ralph Levien's thesis is well worth a look:

http://www.levien.com/phd/thesis.pdf

Attachments:

Hi Marcus,

Do you mean the bouncing? This is just the usual oscillation before settling into a static equilibrium.

If you increase the number of sub-iterations or increase the drag in the settings then this will reduce the amount of oscillation you see.

In the dynamic-relaxation technique used for form-finding the important result is the final static solution, so the mass, damping and time-step are usually chosen just for the sake of convergence (ie to make it stably and quickly reach equilibrium). This is what terms such as fictitious mass refer to.

So although the equations used are the same from Newtonian mechanics as those which accurately describe real-world dynamics, the choice of parameters can mean the movement and velocities are not necessarily a direct simulation of actual dynamics (and indeed, the material properties chosen for form-finding are anyway often totally different from the materials that will be used in the built structure, as I discussed here).

This is the distinction between dynamic relaxation and just direct dynamics simulation.

You can use Kangaroo for either, but it is good to be aware of the difference.

Also, if you are wanting to simulate actual dynamics, be aware that the amount of time it takes to simulate and display 1 second of dynamics will vary, depending on the settings, computer speed, and complexity of the model. In some cases it can be around 1:1 (real-time), but not always.

This is why I call Kangaroo a live physics engine rather than a real-time one. For reasonably sized simulations it should be possible to see things update, and interact with them at several frames per second. However in order to guarantee truly real-time (1 second per second) behaviour, the complexity of the simulation would have to be limited based on the speed of the specific computer, and I don't see enough advantage for most applications for this to make sense.

You can of course record frames of the movement and play them back as an animation at any precise time-scale you want, including real-time.

(perhaps more information than you were after! - but I thought it could be helpful to clarify these things, as similar questions have been raised before)

i cant download this definition for some reason ?

did you manage to download it? right click the link and choose "Save link as"

Hi Daniel, 

Thanks for your great work. 

Is this been implemented in the new Kangaroo 2.1.2? I am working on a very similar process and I will need to simulate the procedure as close as possible to the material behaviour. 

cool. thank you very much Marcus. 

hi, great! could you please send a screenshot of the definition, so i can rebuild it with the mac. otherwise, it says there are missing plugins. :)

Glad that helps, and thanks for posting the cleaned up definition.

It should work fine with even with a hundred segments or more - it would just take longer to settle.

Hi Marcus. Could you please share the reference from which the first picture comes from? Thanks in advance. 

Thanks a lot Marcus!

RSS

About

Translate

Search

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service