Parametric Slinky lamp



Author:

Categories: PN3+DC3 | Tutorials

Tagged with: | | | | |


Introduction

In this tutorial, I will show how to design a parametric lamp from the geometry and motion of the Slinky toy, using its coiled structure as a starting concept to explore how movement can be translated into light and form. Through Grasshopper, I developed a parametric system where variables such as twist, diameter and shape control the lamp. By adjusting these parameters, the form can shift from compact to open, changing how light passes through the coils and interacts with the surrounding space.
The goal is to design a 3D-printable lamp that combines playful motion with structural logic, turning a simple toy into a usable design object.

The Slinky toy

The Slinky toy is a simple toy made of a helical spring that can be stretched and compressed. Its smooth, flowing motion comes from the balance between gravity and elasticity. It is well known both as a playful object and as a clear, intuitive example of basic physics principles, such as elastic deformation and the transmission of motion.

The Script

In the following tutorial, I will present two variations of the Slinky Lamp. The first one is created using the Twist component and is constrained to follow a linear axis. The second one, instead, is generated by following a custom curve, which can be freely shaped to achieve different formal results.

1) Parametric Slinky lamp using “Twist” component

1.1) The first step is to create a reference axis, which will act as the central spine of the Slinky lamp. This axis is then offset from the origin to define the radius of the spiral. Along this axis, we generate a series of points. These points will later be used as control points to deform the spiral and shape the lamp according to the desired geometry.

1.2) Next, we move the previously created points randomly along the Y axis using the Random component. Then, we create an Interpolate Curve through this new set of points. This curve defines the profile of the Slinky lamp. At this stage, we can apply the Twist component to generate the helical shape of the lamp around the central axis.

1.3) At this point, we divide the spiral into segments and use the Random and Variable Pipe components together. The pipe radius can be controlled with a Graph Mapper, allowing us to design how the thickness changes along the length of the spiral (for example, thicker at the base and thinner towards the top). By adjusting the graph curve and the random values, we can explore different formal variations of the Slinky lamp, balancing regularity and irregularity.

This parametric control makes it possible to quickly generate multiple design options from the same definition, supporting an iterative design process and experimentation with different aesthetic and structural outcomes.

2) Parametric Slinky lamp designed following a curve

2.1) In this second approach, we start by drawing a free-form curve in Rhino and linking it to Grasshopper. This curve plays the same role as the axis created in the first method. However, in Grasshopper the Twist component cannot directly use a generic curve as a rotation axis, so we need to work with a referenced curve from Rhino.

The second step is to generate a series of perpendicular frames along the curve. On these frames, we create a set of circles, which define the surface around which the spiral will be generated. This surface acts as a guide for the helical motion, allowing the Slinky lamp to follow a custom, free-form path instead of a straight linear axis.

2.2) In this step, we define the twist parametrization that controls how the spiral rotates along the axis. First, we generate a list of progressive angle values using the Series component. The total number of turns is controlled by the turns slider, while the number of samples defines how many points are distributed along the axis. These values are then scaled by multiplying them by π , converting them into angular values suitable for rotational transformations. The resulting list of angles represents a progressive rotation along the length of the lamp.

Next, the angle values are applied to the points along the axis, defining how much each section of the spiral is rotated. Finally, the rotated points are connected using Interpolate Curve, generating a smooth helical curve that becomes the base geometry of the Slinky lamp.

2.3) In this step, the pipe radius is controlled along the spiral curve to create a smooth pulsating effect. The curve is divided into segments, and the parameters are used to modulate the radius with a sine function. By adjusting pulse density and radius variation, the thickness of the pipe expands and contracts along the curve. A base thickness value is added to keep the geometry consistent.
The resulting values are applied to the Variable Pipe component, generating a dynamic and controllable final surface.