How to create an elevated root system?

Hi all,

My question is regarding how to create a branched root system that begins above ground from a stem as shown in Fig 1. (Image) Fig 2. (Plan view) Fig3. (Section).

Steps taken:

  • I have used Grasshopper for creating the circular plan view L-branching
  • I have set the parameters for the depth of the roots (3m to 6m, increasing further away from centre)
  • I have the line work and overall components (Fig 4.)

Where I am struggling is how to elevate the curves from a central stem and pipe the curves/roots organically to an end rootball (Fig 3.)? I attempted to create the piping with a Delaunay triangulation connecting the curves but it failed. Scouring the forums there is the usage of Cocoon to possibly create this, so I wanted to ask if anyone could assist to learn from.

It would be much appreciated. Thank you

Fig 1: Mangrove Prop Roots
mangroveroots

Fig 2. Plan View_Root L-Branching

Fig 3. Section View_Root Branching
Section_Roots

Fig 4. Attempt

  1. Component/Rhino File
    Roots.gh (20.7 KB)
    Roots.3dm (111.3 KB)

For creating some sort of “realistic” result you should avoid at any cost any L-System and go the recursive way (but this requires code - if real-time results and complex solutions are required). See the “inverse” (i.e. grow in posZ that yields a tree (and a DataTree for monitoring the history of actions/recursion steps)).

Tips:

  1. Avoid your “ends” having the same Z
  2. Solve the problem with Lines first and if more realism is required (see 2nd image) distort them randomly (so to speak) while keeping the ends fixed.
  3. In order to apply a proper thickness (say: tubes having axis the solution Lines) you’ll need to monitor the recursion via a DataTree (as branches grow the thickness value (R tube value) shrink). So for eack recursive Loop the candidate parent Lines (that may or may not yield child Lines) are the ones from the tree.Branch(Loop-1) etc etc.
  4. Avoid at any cost stuff the likes of ExoW/Dendro : for big N of items (say 2-5+K ) you’ll need a day to finish.
1 Like

Hello
You can look at these discussions

2 Likes

Hi there,

Funnily, I used the Shortest Walk Tapered Branching Script to create the branching shown above since the L-systems weren’t working. The smoother geometry thread is exactly what I was looking for, so thank you :slight_smile:

Hi there,

This looks amazing, my reasoning for going with the method I initially did is because the roots don’t have much variation in angles/root numbers. Within the Range of Degrees slider, if reduced would that factor in a simpler form such as below?

image

In general with a proper recursion you can anything imaginable (and if something is missing … you just add another variable). All that are very simple … provited that you know how to code (otherwise is pure Chinese).

Anyway here’s the core of the matter (1st step: just Lines, prior distortion prior thicken prior foliage):

And here’s various results depending on what stage you want (foliage is not real-time … but is close).


So the 1M question is: are you familiar with C# ?

1 Like

Cheers,

In general I am familiar with it and have done a couple Linkedin learning sessions. Am I proficient in it, is a separate matter haha

Here some explanation on a way to have something more similar than that you want.
let say you want something in a cylinder of radius 10 and height 10, centered on 0, 0, 0
Let’s generate the roots with seed points on a disk. The points are set on 2 levels Z=0 and Z=-1.

Then points on the trunk

Then points to join roots and trunk. Points are generated using Populate 3d,


then some test to suppress points outside the cylinder. Then a Graph Mapper to change the density on Z.

All the points are merged. Then Proximity 3D and then ShortestWalk

Then some algorithm of mine allowing the smoothing of lines network. I think of others methods … quite better.
I also reuse the algorithm to calculate the radius of branch.
Then Dendro, not perfect as the radius calculation is not done with the smoothed curves.


Strange creatures (1000 points on bottom)
20201210_mangrove_tree_LD.gh (36.8 KB)



4 Likes

Hi Laurent,

Thank you for the explanation, I can see where I went wrong not having generated and connected the radial points with the separate trunk (and the shortest walk that connects through both). The smoothness of Dendro really is amazing despite it not being from smoothed curves. My initial piping process, came out far too clunky even when I did rebuild the curves.

Would it be rude of me to ask for the definition and play around with it further?

Warmest regards :slight_smile:

Don’t worry the definition is provided, see above! It is always more pleasant to work for polite people that makes effort.

1 Like

C# is like martial arts: you need isolation, NO Internet, NO computer, books, Karma, cigars and Vodka.

So … get this for a start and add things that you may need (for instance a ceiling option [ but why?] and/or an option to restrict the solution inside a blob and/or …).

Recursion_Tree_PhaseA_V1.gh (119.7 KB)

Then:

  1. Mastermind a way to distort the straight lines (i.e. get a Line divide randomly and do a Polyline where the middle nodes are randomly rotated and at some random dist > LOL) as shown in the pics above for a more natural effect. ALWAYS go for lines if you have lot’s of items in mind. NEVER use curves blah, blah (a real-time solution is the holly grail of things).
  2. Mastermind a way to add cones or tubes on a per distorted Line (i.e. Polyline) basis.
  3. Buy more Vodka and apply a Maelstrom Morph (only for the brave).
2 Likes

Hi Laurent,

Really sorry to disturb, when opening the file it keeps showing this error.

P.S.
The black export looks insane and alien-esque!

Item1

Hey Peter,

Small update, vodka has been purchased haha. Thank you aswell for your response, it was really informative and broken down well. The aim is to go for a large C# and overall coding growth for the year (and beyond)!!

Cheers

It is because I let one of my library. Indeed code was in script so
you can suppress “usingLDutils;”
And suppress what is before SmoothNetorkOfLines()


And right click on component
image
And “Manag Assemblies’”
and suppress
LDutils.dll

1 Like

Plan B: Sandra promotes potato vodka (yikes!). If things are really tough … give it a spin (only for the brave).

1 Like

And I forgot to mention that you can play with the number of point in Point Proximity 3D





it also possible to use the Length in Shortest Walk to have different directions …
Many many way to have better results.

3 Likes

Hello again Laurent,

The sincerest of gratitude for your responses, they were both clear and kind. I’ve managed to get it to work (small yay) and having a bit of childish fun playing around to see what else can prop up haha

Overall, from each image down the the annotations in the example script itself is very much appreciated and I hope it helps others too :slight_smile:

Why the point to volume is error i follow all your script

Hello and welcome
I understand you are not fluent in english, but in order to help you must give more information. Read that please.

My guesses :mage:
No points provided because I put a Dam
Radius too little …
Zoom on the script to see on the error message, send your script to the community …

Dendro is very powerful but sizes are important, so it is necessary to take a setting that has a relation with the size of the object.