Dendro for Grasshopper

Volumetric Modeling for Rhino/Grasshopper


Dendro is a volumetric modeling plug-in for Grasshopper built on top of the OpenVDB library. It provides multiple ways to wrap points, curves, and meshes as a volumetric data type, allowing you to then perform various operations on those volumes. Dendro includes components for boolean, smoothing, offsets, and morphing operations.


When working with meshes or Breps, these types of operations are often computationally heavy, prone to failures, or cannot handle complex geometry. OpenVDB's volume data structures allow for quicker computation with higher repeatability, enabling you to leverage more complex operations within Grasshopper.

  • Mesh, Curve or Point wrapping
  • Fast Boolean operations
  • Offset complex geometry
  • Smoothing operations
  • Watertight mesh output
  • Highly repeatable

The goal was to make Dendro integrate into Grasshopper as seamlessly as possible. Whereas many voxel solutions require you to think of geometry as living with a bounding box, Dendro makes working with volumes no different than handling any other geometry in Grasshopper. Dendro works with many native Grasshopper components, avoiding the 'blocking' found in other plugins, and allowing you to move in and out of volume operations very quickly.


For discussion and more information on Dendro, please visit Food4Rhino

All releases and source code available on GitHub

Latest Release

Example Files


The typical workflow for the Dendro plug-in is to generate a volume, run your operations on it and then output your volume as a mesh. Volume objects can be created from Meshes, Curves or Points.


You can use the Dendro conversion components to switch to and from volume data. For converting geometry into volumes, you can use the “Mesh to Volume,” “Curves to Volume” and “Point Cloud to Volume” components. Use the “Volume to Mesh” for getting your volume back into a closed mesh.

dendro mesh to volume
Mesh to Volume
dendro curve to volume
Curve to Volume
dendro point to volume
Points to Volume
dendro volume to mesh
Volume to Mesh

Boolean operations are one of the more compelling features within Dendro. Where mesh (and even NURBS) booleans can be prone to failure, volume booleans are incredibly stable and can be computationally lighter. The standard boolean operations available are Union, Difference, and Intersection.

dendro csg boolean intersection
dendro csg boolean union
dendro csg boolean difference

Filters are a group of Dendro components that modify volume objects. Filters offer some amazing flexibility in modifying volumetric input data. Using other volumes as masks, you can even isolate specific areas to apply filtering to.

dendro offset geometry
dendro smooth geometry
dendro blend between geometry

Dendro's filter components (Smooth, Offset and Blend) all have a “Mask (M)” input, which allows you to perform the filter operation in specific areas. Mask data is created by the Create Mask component and is defined by a volume which represents the bounds of the mask.

dendro mask filter
dendro mask filter result

Dendro has basic read and write capabilities for OpenVDB binary files. This can be utilized to interact with OpenVDB files generated in programs outside of Rhino/Grasshopper such as Houdini or Maya.