Sunteți pe pagina 1din 9

PhylloMachine v1.

Daniel González Abalde

05/05/2015

PhylloMachine is a set of scripts/UserObject for Grasshopper to model plants using some


properties of phyllotaxis.

The basic idea is that a mesh with phyllotaxis proportions has a topology described by two
Fibonacci numbers, and its topology (indices of vertices of faces, parastichies spirals, cycles and
topological neighbors) is described by simple number sequences without geometric calculation.
Thanks to these, it can be modeled parametrically plant organs such as branches, leaves or
petals, with very nature-like results.

PhylloMachine continues to be a work in progress, it's written in VisualBasic and it is open source.
I encourage those interested in further developing this plugin to contact me, especially if they
have experience with L-Systems.

Contact email: dga_3@hotmail.com

License

PhylloMachine is released under the GNU General Public 3.0 license. This license applies to all
files included in the download file.
You are free to modify, copy and derive, but always being subjected to this license.
You are free to use the designs made with PhylloMachine components for commercial
purposes. Considers the option of rewarding the author, or at least let him see the design or
product of your work with PhylloMachine.
You have obligation to release/publish your modifications if you publish some results done with
modified components.
PhylloMachine comes without warranty of any kind, but you can contact the author for any
matter related with PhylloMachine via email to dga_3@hotmail.com

For more information about license visit: https://www.gnu.org/licenses/gpl.txt

Installation

1. After downloading the files from food4Rhino, unzip them.


2. Copy and paste the PhylloMachine_UserObjects folder in UserObjects Grasshopper folder. It
can be found at:
• Grasshopper interface> File> Special Folders> User Object Folder.
• C: \ Users \ YOU \ AppData \ Roaming \ Grasshopper \ UserObjects
3. Restart Rhino.
4. You'll find the components in “Extra > PhylloMachine” tab.
Introduction

Phyllotaxis is a class of patterns in nature that describes the spatial distribution among plant
organs. Each species has its own formal pattern and may be an evolutionary solution to maximize
resources and minimizing the cost.
Phyllotaxis (from Ancient Greek, phýllon "leaf" and táxis "arrangement") is studied in botany and
biomathematics as the arrangement of leaves on the stem, which could work to optimize the
position of the leaves relative to others to maximize the sun exposure minimizing interference
between them.
There are several types of phyllotaxis, but here let us focus only on the spiral phyllotaxis, with
divergence angle of 137.5 degrees. It is the most common type in nature and is intimately linked
to the phi number, 0,618 ^ 2 * 360 = 137.5 known as golden angle, and as we shall see, also
with the Fibonacci sequence:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144...

Imagen de http://www.math.smith.edu/phyllo/About/Classification.html

For more information about phyllotaxis visit:


math.smith.edu/phyllo/index.html
algorithmicbotany.org/papers/abop/abop-ch4.pdf
sciteneg.com/PhiTaxis/PHYLLOTAXIS.htm
maths.surrey.ac.uk/hosted-sites/R.Knott/Fibonacci/fibnat.html
Among many others.
In cylindrical coordinates, we can represent a set
of points from a center rotating 137.5 degrees and
increase the radius and angle at each iteration.
(Picture)

The spiral shape that vision forms by proximity


between points are linked to the Fibonacci
numbers and are the base of mesh topology on
PhylloMachine.

Applying this distribution of points on a curve, we get the basic mesh points collection called
PhylloPoints. In the image below, spheres are displayed instead of points for easy viewing of
the spirals that are formed in both directions, clockwise and counterclockwise. These spirals
are known under the name of Parastichies.
Mesh topology - Parastichy Numbers

PhylloMachine uses some properties of phyllotaxis to wrap a curve on a quad mesh, adding
organs such as petals, leaves, or branches. All components of PhylloMachine are designed to
work with four-vertex faces, so that the use of triangular meshes is discouraged.

Is considered a PhylloMesh when a mesh is defined by:


• Points that are remappable to cylindrical coordinates,
• parastichy numbers that define the mesh topology.

Parastichy numbers are a pair of numbers (a, b) of the Fibonacci series - consecutive ancestors
or descendants. Other numbers could be used, such as the Lucas series for other types of
phyllotaxis, but is not the case in PhylloMachine.

These two numbers respectively describe the number of spirals in the clockwise and
counterclockwise directions. Spirals in this context means the imaginary curve formed by
joining certain plant organs between cycles of leaves, branches, or petals.

Imagen de http://scotton.freeshell.org/

In this picture we see two combinations of parastichy numbers. The image above shows PN =
(3, 5), the image below PN = (21, 34). These numbers are unique to each species of plant,
and are linked to the number of elements per cycle, whereas a cycle is one complete revolution
of all spirals. A cycle has a size of a + b, on the image above 8, below 55. The greater the
number of elements per cycle, the greater the parastichy number.
Furthermore, parastichy numbers correspond to the indices of the points closest to the first
point of the list. In the picture below, from left to right, we have:

In a set of phyllopoints (made with the definition you can see here), the two closest points to
the point at index 0 are numbers 3 and 5, which correspond to the parastichy numbers. These
two numbers are related to a) the number of points, b) the radius c) the length of the curve.
Keeping variables b and c constant and increasing the amount of points, there would be a time
when the PN would be (5, 8), and if we continue (8, 13) …

The next point which lies above parastichy numbers (3, 5) is 8 (that is 3 + 5). Therefore we
can say that to form the faces of a phyllomesh from phyllopoints, it holds that:

Let A, B, C and D be indexes for each vertex in an iterative function for each point (except the
last a + b elements, in this case 3 + 5, that is, for all points except the last 8), we have:

A = index
B = index + PN (a)
C = index + PN (a) + PN (b)
D = index + PN (b)
meshFace (A, B, C, D)

In our case PN = (3, 5) would be:


Face (0) = (0, 3, 8, 5)
Face (1) = (1, 4, 9, 6)
Face (2) = (2, 5, 10, 7)

If we wanted to flip the direction of the faces to reverse the normal vectors, one would simple
have to reverse parastichy numbers, ie PN = (b, a).

In the image below we see how points are managed according to the above explanation about
indexes of vertices of each face. The Merge component has a list of four points (instead of four
indices as in the above) within each branch. Then the branches that contain less than 4
elements (only so the Construct Mesh component doesn't return an error for lack of points) are
removed.

This is the basic topology of a PhylloMesh but parastichy numbers also determine, without
making geometric calculations, topological neighbors, cycles, and spirals parastichies.
Components

We have four groups of components:

The first includes all the components that make


PhylloMeshes;
the second groups functions to organs such as branches,
leaves, and petals;
the third group has modified components;
and the fourth group contains utilities.

PhylloBranch

Wraps a curve to form a mesh with the phyllotaxis pattern and welds one end to a mesh face.

PhylloMachine

Main component that wraps a curve to form a mesh with the phyllotaxis pattern. Also returns
the indices of the vertices of each face, 8 neighboring indices, the indices of spiral parastichie
PN (a), PN (b) and PN (a) + PN (b), and cycle indexes.

PhylloSurface

Creates a PhylloMesh over a surface from a cylindrical remapping.

PhylloCap

Use the naked edges of a PhylloMesh to cap the ends forming a mesh with the phyllotaxis
pattern.

PhylloMesh

Wraps a curve to form a mesh with the phyllotaxis pattern from radius and face size.
Parastichy numbers are automatically calculated.

BezierCurve

Quickly creates a bezier curve of four points from a mesh face.


Its used to shape branches, petals, and leaves.
Branch

Extrudes a mesh face with several subdivisions controlling their sizes.


Its useful for creating branches, stems, or seeds.

Petal

Creates a petal or leaf from a mesh face and a guide curve.

ExplodeMesh

Returns the faces of a mesh as single meshes.

MoveFace

Move and scale a mesh face.

OffsetMesh

Extrudes a mesh to form a solid based on a distance or list of distances.

JoinMesh

Join and combine multiple meshes into one.

MoveVertex

Move a mesh vertex.

Ifibonacci

Uses an index of the Fibonacci series to return the respective number or pair of consecutive
numbers.

RndRange

Creates a range of random values within a domain.

RatioBox

Boxes used as a visual reference to help adjust the design parameters proportionally.
Logic PhylloMachine

Here are the basic steps used to create plants with these components:

1. PhylloMesh (any components that allow it) to generate the stem or main form.

2. Explode faces.

3. Select faces. Divide the list of faces based on their function (ex: petals, leaves, the rest).

4. Create shape curves. We use selected faces to create a curve shape for our petals or leaves.

5. Create organs. We make petals, leaves, and branches from the selected faces and their
shape curves.

6. We join all meshes. Petals, leaves, and all other unused faces.

7. Smooth the welded mesh. Preferably use Weaverbird's Catmull-Clark Subdivision.

In ExampleFiles folder you will find several examples and a detailed tutorial (1DaisyTutorial).

Next season

I leave open several paths to follow for those who want to continue the development of
PhylloMachine. Anyone is free to share new features, make improvements or changes,
provided that license conditions are met.

In particular, two issues that I have not yet resolved:

• PhylloMesh branched.
Wrap several curves simultaneously in a phyllomesh, so that we can create
interconnected branches from a series of intersecting curves. Similar to ExoWireframe,
but with a phyllomesh.
• L-Systems.
The PhylloMachine component has been coded as a class for this purpose. You can add
all components of the plugin as functions of this class and use them with the L-System.
The system would then be used with its own grammar (or use the usual), to model the
process through simple rules. It should be a parametric system different than the
classical L-System, as it should generate not only the lines but also the phyllo-wrap and
other organs of the plant.
I encourage anyone interested who has experience in this kind of generative modelling
to contact me. The result would be simply wonderful.

S-ar putea să vă placă și