
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

