§1 · §1e — Colour
The stack, in section
Every other page here draws a Sandwich as a cross-section, which is the right picture for understanding the mechanism and the wrong one for understanding the object. This page draws the same thing as a block you can turn round, and it spends most of its length on the question everyone gets to second: what is underneath.
- no gate
- nothing new to switch on
- reference
Why a block and not a diagram
A Sandwich is 0.20 mm of plastic. Drawn to scale on top of a 40 mm part it is a hairline, so every picture of one is exaggerated, including all of these. What the exaggeration costs you is a sense of proportion, and what it buys you is the only view in which the passes are separate things rather than lines in a legend.
A cross-section
Shows the mechanism: which pass is where, how the millimetres split. Says nothing about what the surface looks like or what is under it.
A block
Cut open, the same information is on the cut face. The top face then shows the composited result at the same time, which is the comparison that matters.
Every block on this page is drawn with the Z axis stretched, and each one says by how much on
its own face. Everything else is real: the millimetres, the fill line width, and every colour,
which comes out of the same blend_stacked the app uses.
Build one and turn it round
Pick what the object is printed in, then stack up to three passes on top of it. The cut face shows the ingredients, the top face shows the result, and the readout tells you how much of the base is still getting through.
ColorSci::blend_stacked, transmittance from the same
decadic Beer–Lambert the engine uses. The geometry is an illustration; the numbers are not.
Make the top pass thin. Take it to 0.03 mm and watch the result slide back towards whatever is under it. That is the entire trick this fork is built on: a pass you can half-see through is a pass that mixes.
Swap two passes. Same filaments, same thicknesses, different colour. Light is absorbed on the way down and again on the way back up, so the operator is associative and not commutative. Nothing else on this site makes that as obvious as doing it once.
What is underneath is part of the recipe
This is the bit that catches people who have understood everything else. A pass does not have a colour. It has a colour over something, and the something is usually the filament the object is printed in. Change the body filament and every recipe you saved changes with it.
Rows are what is underneath. Columns are what goes on top. Move the thickness slider and watch the whole grid collapse into four flat columns.
| What you see | What it means |
|---|---|
| A cell far from the diagonal, at a low thickness | The base is doing most of the work. This is a colour you get for free, without loading anything new. |
| A column that is all one colour | That filament has gone opaque at this thickness. Every millimetre past that point is wasted range. |
| ΔE under 2 | Most people will not see the difference side by side. Not worth a toolchange. |
| ΔE over 5 | Two different colours by any normal standard. |
TD is a shape, not a number
A TD value is easy to misread as "how see-through it is", which makes it sound like a slider between opaque and glass. What it actually sets is how fast the material stops letting light past as it gets thicker, and that is a curve with a knee in it. Where the knee sits is the only thing that matters, because everything past it is a colour you cannot reach.
t(d) = 10^(−d / TD_mm), with
TD_mm = TD × layer height. That conversion is the one everybody forgets.
The practical reading: at TD 0.5 the useful range is the first 0.06 mm or so, and a pass any thicker than that is just a solid colour. At TD 4 the whole layer height is useful. Matte PLA lives near the bottom of that scale, which is not a reason to avoid it and is a reason to keep the passes that need to mix genuinely thin.
A gradient, as geometry
PathBlend is the odd one out, because its passes are not flat. One filament climbs as a physical staircase, one print-height step per fill line, and a second caps whatever is left. Here it is as an object, with the one control that decides whether the fade is even or all bunched up at one end.
The evenness readout says something useful and specific: with an opaque pair, the default floor of 0.04 mm puts most of the visible change into the last third of the surface, and raising the floor to about half the layer height trades some range for a fade that moves at a constant rate. It is derived from the optics rather than from a printed part. If you print the strip and it disagrees, the print is right.
The catch
- Every block here has its Z stretched, by the factor stamped on it. At true scale a Sandwich is one pixel.
- TD is one number broadcast to three channels. It is a grey absorber, so a filament that eats green harder than blue is not modelled anywhere, here or in the app.
- The base is not always the body filament. If the penultimate zone is doing something, that is what your top passes sit on. The bench treats the base as one colour, which is the simple case.
- Surface finish is not modelled. These blocks have a sheen along the bead because printed plastic does; the strength of it is drawn, not computed. RealColor is where that gets taken seriously.