Skills:
Python
Grasshopper
Rhino 7
Parametric Modelling

Develop python modules in Grasshopper to create a powerful, open-ended plugin for terrain modelling in Rhino 7.

Current terrain modelling tools and plugins do not allow for sufficient specificity and fluidity for quickly creating detailed geographical features. By controlling the generated surfaces using user-inputted mathematical expressions, this plugin gives greater freedom and precision while maintaining a followable intuition.

To achieve the desired behavior, a simple mathematical expression parser was written to output height value for each point along a surface based on its proximity to an input curve. The mathematical expressions can use any standard arithmetic operator as well as sin, cos, tan, log, abs, ceil, and floor. The variables applicable in the expressions are X, S, M, and L which represent the shortest distance to the input curve, how far along the input curve the closest point is, the height of the input curve at that point, and the total length of the curve, respectively. By using wave functions on the X and S axes, users can form peaks and perpendicular ridgelines. Terrain behaviors can thus be easily selected for. Homographic functions lead to sharp peaks and ridgelines while second degree polynomials create softer shapes.

Although still in development, the end-goal of this project is to expand from ridgelines to include modules for simple mountains, closed-curve canyons, forests, and even vegetation placement—based on user-inputted altitude and slope rules.