How to model strangler fig structures? (Baubotanik)

I took this picture of a strangler fig a few weeks ago in Roatán, Honduras:

How would I approach modelling such a structure in Rhino? Eventually I would like to be able to create illustrations with strangler figs growing on architecture and geometric objects. The illustrations don’t need to be photorealistic. They can be minimalistic and abstract. To be more specific, I’m looking into a field called Baubotanik.

One approach that I considered are 3D voronois. That could be a start, although I’m not sure if it will allow me to precisely model what I want.

Another approach may be to create a network of curves, pipe the curves with different diameters, then fuse the network to make it look more organic, maybe using SubD. Eventually leaves would need to be added to selected branches, no idea how to do that.

Of course, I’m also thinking about rendering the underlying solid structure in Rhino, then drawing the plants on top using a 2D drawing program. That could be OK to get my ideas across, although it may look very basic.

Speaking of drawing programs, something like ZBrush, a 3D drawing program, may provide a solution as well. Just I’m not sure that I’ll have the time to get into that. It’s pretty complex.

project curves on a base surface then use multipipe in the projected curves (in v7) would be one way

1 Like

_multipipe is interesting, but how would I vary the thickness of the pipes? Otherwise it’s not even close to natural. Some branches are thinner than others, and then some are tapered, especially the ones growing towards the sun.

select the horizontal edge loops and scale to get varying thicknesses.

If you are a grasshopper user, a mesh based approach would probably help the organic look. I would use a series of variable diameter pipes, turned them to mesh and combine them (I would use Dendro) and then smooth the resulting mesh (I would use Weaverbird).

But my first through would be clay moddeling like Z-Brush too. There’s a nifty web version here which can output .obj which can be brought into Rhino; SculptGL - A WebGL sculpting app

Look forward to seeing the results - hope you post them up here!

Thanks! But that’s a painful process.

I just tried out the following process:

  1. Pipe the curves individually first, with different thicknesses and tapers.

  2. Create a boolean union.

  3. Apply _QuadRemesh.

The result looks organic, yet a bit weird, and _QuadRemesh is slow. So I didn’t try more than three curves.

tree.3dm (222.3 KB)

@Patt Thanks for the suggestions!

I wonder if there is a program specific to designing organic trees. In the end I may just ask a graphics designer friend to help out. I am already trying to get him interested in ZBrush. :grin:

try multipipe, it makes a subd surface and will save you the boolean and quadremesh steps.

remember you can project points of a sud onto another object as well-

see this video-

you should use the grasshopper version of multipipe it allows you to set individual node thicknesses

That doesn’t fuse organically at the joints:

draft.3dm (194.0 KB) (16.1 KB)

i am not much of a grasshopper specialist, maybe @DanielPiker could provide a simple example for how to address different node sizes. anyway for this to function the curves should touch each other i assume.

Tried that already, but doesn’t make a difference. I also played with the options, not really knowing what they all mean, and never did I get any smooth joints.

Any other ideas? No way to get smooth organic joints with Grasshopper’s Multipipe?

Well maybe I could do piping and boolean unioning with with meshes in Grasshopper, then apply QuadRemesh to create organic joints. I’m a bit lost with all the options that seem out there. In the end it seems to be a tradeoff between visual quality, performance, and manual time to invest.

Hi @feklee

If you want a joined result you need to input curves which share some end points.
This means if you have one curve meeting the side of another curve, you need to split the second one so there’s a point there.
Here’s an example showing this, and random radius values for the nodes:
(if you want specific radii instead of random - input a list of values at each of the points going into ‘SizePoints’) (9.2 KB)
For more info on the settings see the example files and pdf here.

Not sure if this is the kind of thing you are after though. For something more amorphous and blobby you might be better going the route of merging pipes together with Dendro.


cool, i was looking for something like that, but the only thing i had and could find was from the skeleton fattener a manual, which on first glance looks like it now has changed quite a bit, there was something with placing spheres on the nodes to define the radius if i am not totally mistaken

Indeed that’s how the old version worked - now the SizePoints and NodeSize inputs play the same role as those sphere centres and radii respectively.

i am using a mac version the latest i believe, still i got this component missing.

Hi @encephalon - can you post the release number of Rhino you have?
(found under help>about rhinoceros)
eg 7.9.21201.5001

Thanks! But here you use MultiPipe from Kangaroo2.

This documentation is very useful. I played with it, and the result looks useful:

draft.3dm (194.0 KB) (11.6 KB)

The points don’t even need to be on the curves, although, if they aren’t, then - according to my brief experience - the result is somewhat unpredictable. Anyhow, not an issue.

What is an issue though: It looks like a pain to maintain which sizes correspond to which points. Is there a way to perhaps store the size in an attribute of a point right in Rhino? (i.e. outside of Grasshopper)

Yet another tool (plugin) to learn. Let me see…

1 Like

“Is there a way to perhaps store the size in an attribute of a point right in Rhino?”

One way can be to bake the points of the curves into Rhino, create circles centred on them, reference these circles back into GH and use their centre/radius like this:

Then you can select your circles and scale them with the gumball handles to control the node radii

1 Like