top of page

Illuminated Octopus Arm Install // Non-Planar 3D Printing

My need to explore non-planar 3D printing emerged as part of a commissioned installation to create a set of large illuminated octopus arms. This commission focused on delivering a portable, animated and dazzling visual art piece bringing life to a stage, dancefloor or music studio. The soundsystem this piece was designed to pair with is dubbed Wheke Sound, after New Zealand's largest octopus species and a giant sea monster in traditional Māori legend. I decided to use recycled PETG to 3D print these arms. Because visual effect is at the heart of this piece, I wanted layer lines to be continuous along the length of the arms, adjusting to the curvature. This required slicing GCODE in a completely new way, as all available slicers only allowed for items to be printed in flat, planar layers. I created a non-planar slicing tool to run in my browser for this task, I tested and developed this tool over the course of a few weeks of printing. See images for examples of how this functions and the additional features I've implemented over time. Full list of features: Core non-planar slicing

  • Layers generated from a harmonic scalar field solved across the input mesh (cotangent Laplacian), so print layers are smooth curved isolines as opposed to flat Z-slices

  • Vase/tube mode - creates a continuous spiral toolpath for open tubes

  • Surface mode - creates continuous serpentine GCODE for single-wall open sheets, layer lines running side-to-side and climbing from bottom to top

  • Adaptive layer height - vertical layer thickness adapts to local geometry

  • Surface conformity control - blends between hugging the surface exactly and even planar layers

  • Layer steepness cap, layer density targeting, and path smoothing

Overhang & bridging

  • Overhang slowdown - print speed scales with how far a line reaches into mid-air, so filament cools before it lands

  • Square-wave bridged shelf - crenellated bridges that span gaps between layer lines, with perpendicular strands and interlocking layers (no double-deposition)

  • Hysteresis trigger - bridging activates only on large holes and then fills them completely, ignoring small gaps

  • Bridge strand thickness, tooth spacing, speed cap, and a dwell-at-turn setting to let strands solidify

  • Overhang reduction - optional mesh pre-process that relaxes surfaces steeper than a set angle

Mesh preparation

  • Uniform isotropic remesh - split/collapse plus surface-preserving tangential relaxation; evens out triangle sizes without deforming the part

  • Mesh reduction - decimate to a target % of triangles

  • Automatic mesh repair - welds duplicates, removes degenerate faces, splits bow-tie/pinch vertices, fills spurious holes; runs automatically before boundary analysis

  • Topology diagnostics - reports boundary loops and which slicing mode the mesh suits

  • Bed-face reorientation - flip the model onto any flat face to print upside down

  • Export the repaired mesh as STL

Part preparation

  • Vase splitter - cut a tall part into printable segments with join flanges

  • Stacking flange generator - adds a filleted, angled spigot to the top rim (perpendicular or tangent-to-surface) for stacking multi-part builds

  • Sequential multi-part printing - several models in one job with lift-and-travel between parts

Viewer & diagnostics

  • Real-time 3D preview of mesh and toolpath, with travel moves and triangle wireframe

  • Colour-by layer height, speed, or volumetric flow

  • Nozzle model with drag-positioning, Z-offset, and layer-tilt/clearance warnings

  • GCODE inspector - layer slider, within-layer scrub, single-move stepping, and a live readout of the exact GCODE line and command

  • Post-slice verification (surface match and self-overlap checks)

Output & delivery

  • Klipper-flavoured GCODE with relative extrusion, configurable start/end scripts, retraction, temperatures and fan

  • Print statistics - filament length/mass, estimated time, max Z

  • Runs entirely in the browser via Pyodide (WASM CPython) — models never leave the user's machine - plus a local desktop version

  • Licensed distribution with a free demo on bundled example models

Project Gallery

© 2024 by Ben Hofmans

bottom of page