This article is not a tutorial. It is the honest documentation of how a simple technical problem became a complete software project — without that being the plan.
The starting question was concrete and small: how does filament behave under intense grow light? Which materials transmit light, which absorb it, which become brittle under UV exposure? These are not academic questions — they are directly relevant to anyone printing grow box components that sit permanently under a powerful LED matrix.
What came out of it is Litho Studio — a complete, browser-based lithophane generator with real-time light simulation, CMYK sandwich export and 3D preview. And the path there is more instructive than the result.
The Original Question — Filament and Light
Anyone printing parts for a grow box will sooner or later encounter a problem that no tutorial covers: not every filament behaves as expected under grow light.
A sensor bracket made from cheap standard filament that went soft after three months under an 80-watt LED matrix and lost its shape — that is not a theoretical scenario. It is a real problem that arises when you do not know the thermal and optical properties of a material.
Thermal stability is one thing. But light transmission is the other — and the more interesting one. A material that partially transmits intense light instead of absorbing it distributes thermal load differently. A white part reflects differently from a black one. A translucent material conducts heat into the core instead of absorbing it at the surface.
Why a Lithophane Specifically?
A lithophane is a relief object that transmits light to varying degrees by varying material thickness — thereby creating an image. Thin areas let more light through, thick areas less. The result is only visible through back-lighting.
This makes lithophanes the perfect measurement tool for light transmission: they force you to understand the optical properties of a material over a defined depth range. If a material transmits differently at 1.2 mm wall thickness than at 2.0 mm — you see that directly in the finished object. No measurement lab needed, no spectrometer — just a printer, a light behind it, and eyes.
What I found: The available tools were either paid, qualitatively unsatisfying, not browser-based, or provided no controllable resolution. The desire to do it better was inevitable.
From Material Test to Complete Generator
Phase 1 — The First Prototype
The first attempt was a simple Python script: read image, convert brightness values to depths, output STL. Three hours of work, functioned basically. But the resolution was too coarse, the mesh quality poor, and there was no preview.
Anyone who has printed a lithophane without knowing in advance how it will look — and then invested 4 hours of print time for a result that is wrong — understands why a real-time preview is not a comfort feature but a necessity.
Phase 2 — Browser-Based with 3D Preview
The move to the browser was the decisive step. Three.js as rendering engine, a parametric mesh generator in JavaScript, canvas-based image processing. The real-time 3D preview — change a parameter, immediate visual feedback — fundamentally changed the workflow.
Now it was possible to visually assess contrast, gamma and relief height before a single line of G-code was generated. That is the difference between blind printing and informed decision-making.
Phase 3 — The Light Simulation
The light simulation was the moment when a tool became a studio. Instead of holding the printed object in front of a light source, you can simulate in the browser how light falls through the relief — with adjustable light intensity, colour and material density.
- Vary light intensity — how does the image change with weak vs. strong light?
- Set material density — simulates the opacity of different filaments
- Choose light colour — warm, cool, neutral — relevant for the final presentation
- Light demo — automatic intensity sweep for visual quality checking before printing
Phase 4 — CMYK Sandwich Export
The CMYK mode was a direct consequence of the question: what if you want not just black and white, but colour? A normal lithophane is monochrome — depth determines brightness, but not colour.
A CMYK sandwich is the answer: five separately printed layers — diffuser, cyan filter, magenta filter, yellow filter, relief — that together create a colour lithophane object. Each layer is its own STL file, treated in the slicer as individual parts of a shared object.
What Lithophane Tests Really Reveal About Filaments
| Observation in test | Meaning for grow box parts |
|---|---|
| High transmission at thin wall thickness | Material conducts light into the core — thermal load distributes differently than expected |
| Uneven transmission / spots | Uneven fill rate or layer adhesion — structural weakness in the material |
| Yellowing after UV exposure | Filament is not UV-stable — becomes brittle under grow light over time |
| Very low transmission even at minimal wall thickness | Opaque material — good for light-blocking parts, bad for light diffusers |
| Even gradient from bright to dark | Homogeneous material, consistent print quality — reliable for precision parts |
Litho Studio Today — What the Tool Does
- Browser-based — no installation, no account, no cloud dependency
- Real-time 3D preview in three modes: Studio (white), Analysis (technical), Darkroom (light simulation)
- Fully parametric: relief height, base plate, curvature, contrast, gamma, resolution
- CMYK sandwich export: 5 separate STL files with Strict Additive algorithm
- 1:1 PDF export for paper preview and duplex printing
- Bed limit warning when print size is exceeded
- Trilingual: German, English, Dutch
What This Path Teaches
Litho Studio does not exist because it was planned. It exists because a concrete question had an unsatisfying answer — and because meticulousness has no natural stop signal.
The most interesting tools do not come from product planning. They come from genuine curiosity that meets a problem for which there is no good solution. The path from material test to lithophane generator was not linear and not planned. It was the natural consequence of taking a problem seriously.
The Growix Core was built the same way. The RootCore Cup too. And the next unplanned project will probably come from a question I have not yet asked.