We need your help! 🔥
Please consider disabling your ad-blocker to support this website! 🔑
We are a free, community-supported website! 🥰
We only display small unobtrusive ads which help us stay online! 💯
Thank you in advance! ❤️
1|Mesh Graph
2|Weight Graph
3|Primary Segmentation
4|Secondary Segmentation
5|Iterative Segmentation
6|Special Segmentation
7|Fabrication
8|Mesh Info
9|Other Tools

Ivy

ADDON. Version 1.2.5. Released on 30-Dec-2022. Provides 45 components. Created by Andrei Nejur. Features 5 video tutorials.
Ivy is a plug-in for mesh analysis, segmentation and unrolling inside the Grasshopper environment. Ivy uses notions and algorithms from Graph Theory and applies them towards mesh geometry exploration. In order to enable the use of graph theory specific algorithms, a new custom data type was created. The MeshGraph is an abstract construct that combines the geometric characteristics of the mesh with sets of linked data containers. The data containers that can be visualized as the mesh faces are the nodes of the graph and the links between them are the graph edges. The graph edges can be visualized as the mesh topological edges.

3|Primary Segmentation

Agents Programmed Behavior (AgentPB)
Create a series of trees on the given graph that spread out based on the limits imposed and a programed behavior that switches between two characters Explore and Consume
Agents Control Random (AgentsCR)
Create a series of trees on the given graph that spread out based on the limits imposed and the behavior given as a chance pick between two characters Explore and Consume
MST Kruskal Valence (mstKv)
Compute the minimum spanning tree for the mesh graph using a modified Kruskal's algorithm with max valence preference
Multi Root MST concavity (mrMSTconc)
Constructs a set of trees based on the given graph
Multi Root MST node weight (mrMSTnode)
Constructs a set of trees based on the given graph
DFS Edge Weight (dfsEdge)
Compute the a tree from the graph using a Depth first search based on edge weight
MST Kruskal concavity (mstCon)
Compute the minimum spanning tree for the mesh graph including convex, concave and flat region detection. This uses a modified Kruskal algorithm with weight limits
MST Djikstra (mstD)
Compute the minimum spanning tree for the mesh graph using Djikstra's algorithm
MST Kruskal (mstK)
Compute the minimum spanning tree for the mesh graph using a modified Kruskal's algorithm
MST Prim (mstP)
Compute the minimum spanning tree for the mesh graph using Prim's algorithm
Multi Root MST edge weight (mrMSTedge)
Constructs a set of trees based on the given graph

9|Other Tools

Get deepest nodes (DeepestN)
Retrieves the deepest nodes in a tree graph. Here the deepest node/nodes are considered the ones that have the longest traceable route to a leaf(edge node)
Cull Graph Duplicates (CullGrph)
Cull graph duplicates from a graph list. Equality is based on topology
Graph Equality (GraphEqual)
Test equality between two mesh graphs. Only topological equality is tested
Set Node Geometry (setNGeo)
Assign geometry (flat curves) to nodes
NodeGeo to Graph (Ng2Gr)
Insert the node geometry into a MeshGraph
Set Tree Root (TreeRoot)
Set the root of the graph to the specified mesh node
CreaseMesh (CreaseM)
Create a set of creases in the faces of the mesh along the edges of the Mesh Graph
Weave MGraphs (Weave)
Weave two MeshGraph segmentations
ThinMesh (Thin)
Create a thiner mesh based on the connections in the MeshGraph
GraphStructure (GrphStruct)
Create a set of lines that approximate the graph and have different offsets from the base mesh according to the number of steps from the root

2|Weight Graph

Color Edge Weight (ColorWeight)
Assign a weight value to graph edges based on the color averaged for an edge. Values will be normalized to the 0...1 interval
Face Size Node(mesh face) Weight (fsFaceWeight)
Assign weight to graph nodes based on the area of the mesh faces. Largest faces will have the smallest values.
Face Midpoint Distance Edge Weight (MDistWeight)
Assign a weight value to graph edges based on the distance between the midpoints of the faces the edge conects. Values will be normalized to the 0...1 interval
Custom Edge Weight (cEdgeWeight)
Assign a custom weight to graph edges - Warning ! If you reference mesh edges, naked edges will not be considered. Values are normalized in the 0..1 interval
Custom Face Weight (cFaceWeight)
Assign a custom weight to graph nodes (mesh Faces). Values are normalized in the 0..1 interval
Face Angle Edge Weight (FAWeight)
Assign a weight value to graph edges based on the angle between the faces connected by an edge. Values will be normalized to the 0...1 interval

1|Mesh Graph

Graph Edges (Edges)
Outputs the relevant information (geometric and numeric) stored in the MeshGraph object edges
Graph Nodes (Nodes)
Outputs the relevant information (geometric and numeric) stored in the MeshGraph object nodes
Graph from Mesh (GrphMsh)
Creates the graph correspondence of a mesh. Faces will be nodes in graph and the mesh topological edges will be the edges in the graph
Graph to Mesh (Grph2Msh)
Creates the mesh from the graph nodes(faces) and edges. Only the nodes still present in the graph will be referenced back into mesh faces.

8|Mesh Info

EdgeTypes (mEt)
Extracts the edges of the base mesh for the graph based on their use in the graph. Graph Edge or Cut Edge
EdgeAngle (eAngle)
Extracts the dihedral angle of an edge. Only the edges in the graph are used
EdgeTraversal (eTrav)
Calculates the traversal distance for an edge of the graph. Here it is the lenght of the polyline connecting the face centers and edge midpoint
Orange PEEL Edges (OPE)
Gets a set of edges in the MeshGraph that separate peel layers

7|Fabrication

Flat Fabrication Multi (FlatFabM)
Takes care of the fabrication preparation for the parts.
Special version for dealing with complex data structures. Use especially in conjunction with multiple weaved strands
SimpleFlap (sFlp)
Create a standard simple data flap to use for the unroll component
CustomFlap (cFlp)
Create a custom data flap to use for the unroll component
Flat Fabrication (FlatFab)
Takes care of the fabrication preparation for the parts

6|Special Segmentation

Shortest Paths in a weighted mesh graph (SPath)
Compute the shortest (Cheapest) path between 2 nodes in a mesh graph using Djikstra's algorithm. Calculation uses edge weight.
MeshGraph Visual Unroll (mgUrollViz)
Unroll the underlying mesh of a tree graph on the object itself as a from finding technique.
MeshGraph Unroll (mgUroll)
Unroll the underlying mesh of a tree graph.

4|Secondary Segmentation

Weight Deviation Split Graph (DevSplit)
Splits a mesh graph in subgraphs based on whether edge weight is larger than next edge in tree hierarchy
Weight Split Graph (WSplit)
Splits a mesh graph in subgraphs based on whether edge weight falls in the supplied interval

5|Iterative Segmentation

K-Means Clustering (kMeans)
Splits a mesh graph (not a tree) in an iterative fashion based on a number of parts specified by the user

Video Tutorials

Site design © Robin Rodricks.   Ivy and associated data © 2024 Andrei Nejur.  
Rhinoceros and Grasshopper are registered trademarks of Robert McNeel & Associates.  Hosted by GitHub

Report an Issue  |  Terms of Service