Z anti-aliasing: smooth shallow slopes with micro non-planar printing
ZAA nudges the nozzle height within a layer so 5–25° top surfaces come out about 3× smoother (Ra ~80 → ~25 µm). In OrcaSlicer 2.4 and later. Where it helps and where not.
- ZAA keeps the part's layer height; it only moves the Z of the top-surface lines to follow the real shape.
- It pays off on top surfaces sloped 5–25°. Above about 25° the steps are narrower than a line and ZAA has nothing to fix.
- CNC Kitchen measured 0.2 mm layers with ZAA about as smooth as plain 0.1 mm layers, which can save print time.
- As of October 2026 it ships in mainline OrcaSlicer since 2.4.0 as Z contouring, hidden in Expert mode.
Shallow curves and slopes on a 3D print show clear stair-steps, and the shallower the slope, the wider each step. Z anti-aliasing (ZAA) fixes this by letting the nozzle move up and down slightly within a single layer, so the top-surface lines follow the real shape instead of sitting flat. CNC Kitchen measured roughness on 5–25° slopes dropping from about 80 µm to about 25 µm.
As of October 2026 the feature is in mainline OrcaSlicer from 2.4.0 (the latest stable is 2.4.2, and 2.5.0 alpha came out on 16 October). In the program it is called Z contouring.
Where the stair-steps come from
A normal slicer cuts the model into flat slices of equal height, so a slope turns into steps. The horizontal width of each step is:
step width = layer height ÷ tan(slope angle)
Worked through at 0.2 mm layers:
- A 10° slope: tan 10° ≈ 0.176 → 0.2 ÷ 0.176 ≈ 1.13 mm per step, clearly visible.
- A 25° slope: tan 25° ≈ 0.466 → 0.2 ÷ 0.466 ≈ 0.43 mm per step.
- A line from a 0.4 mm nozzle is about 0.42–0.45 mm wide.
At 25° the step is as narrow as one line. That matches CNC Kitchen’s finding that the two curves meet around 25°: there is no room left to shift the path. Steeper than that, ZAA does nothing. Shallower than that is where it helps most.
How ZAA works
The idea comes from a 2017 paper, “Anti-aliasing for fused filament deposition”. Community developers turned it into a post-processor and a slicer fork, and it was then merged into OrcaSlicer through a pull request in 2.4.0.
The principle:
- Only up-facing top surfaces are changed. The rest of the part prints as usual.
- The slicer checks each point of those surface lines against the original mesh and adjusts Z, within a small margin, to follow the real surface.
- Only Z changes; X/Y paths stay the same. That is why it is called micro non-planar, and why no special nozzle is needed.
A side effect CNC Kitchen points out: because the top follows the shape, spots of over-extrusion and voids shrink, so dimensions get more accurate too.
Measured results
CNC Kitchen measured roughness (Ra) with a surface tester on PLA printed at 0.2 mm layers.
| Test piece | Normal | ZAA |
|---|---|---|
| Shallow slopes (5–25° range) | about 80 µm | about 25 µm |
| Top half of a sphere | 50 µm | 21 µm |
| Slopes above about 25° | similar | similar |
The other finding is about time. 0.2 mm layers with ZAA were about as rough as plain 0.1 mm layers, and 0.3 mm with ZAA came out almost the same as 0.2 mm with ZAA.
Put into time for a part 30 mm tall:
- Plain 0.1 mm layers = 30 ÷ 0.1 = 300 layers.
- 0.2 mm layers + ZAA = 30 ÷ 0.2 = 150 layers, with a similar top finish.
- Half the layers. CNC Kitchen calls savings of around 50% “very realistic” for some parts.
That is not every part. Modern printers that are limited by melt rate (see print speed vs quality) get less time back than older printers limited by head speed.
ZAA helps shallow top surfaces, not vertical walls. If most of your part is walls, a smaller layer height or a better orientation still does more.
Compared with other ways to get a smooth finish
| Method | What it fixes | Cost |
|---|---|---|
| Lower layer height everywhere | every surface | print time grows with layer count |
| Variable / adaptive layer height | curved zones | adds layers only there, but whole layers get thin |
| Ironing | flat top surfaces | extra pass, does not fix slopes |
| ZAA | top surfaces sloped 5–25° | changes only top lines, little extra time |
| Sanding and priming | every surface | your labour, see sanding and painting |
The basic methods are in smooth surfaces.
Turning it on in OrcaSlicer
From OrcaSlicer 2.4.0, go to Print Settings → Quality. Switch to Expert mode first (a new mode between Advanced and Developer), or these settings stay hidden.
| Name in the docs | Variable | What it does |
|---|---|---|
| Z contouring | zaa_enabled | turns ZAA on or off |
| Minimum z height | zaa_min_z | the thinnest local layer the lines may be lowered to |
| Minimize wall height angle | zaa_minimize_perimeter_height | lowers top-surface perimeters on slopes steeper than this; default 35°, 0 = off |
| Don’t alternate fill direction | zaa_dont_alternate_fill_direction | same top-fill direction every layer, for a more even pattern |
A first try:
- Pick a part with a shallow curved top, such as a dome lid or a turtle shell.
- Turn on Z contouring and leave everything else at default.
- Slice and look at the preview. The top lines should curve with the surface, not sit flat in steps.
- Print two copies, one off and one on, and compare with a fingertip and low-angle light.
Limits to know
- No downward-facing surfaces. The OrcaSlicer docs say upside-down curves are not handled.
- The nozzle can drag. The nozzle tip is wider than the line it lays. Filling a surface from high to low drags it over fresh lines and roughens them. CNC Kitchen found low to high works better, but on complex parts that is hard to guarantee.
- Rough edges remain. Examples are gaps between layers when Z is not reset, and flow that changes in steps, because G-code has no command for a smooth flow ramp.
Common mistakes
- Can’t find it in the menu. You are in Simple or Advanced mode; switch to Expert.
- Expecting it to fix walls or steep faces. Slopes above about 25° barely change.
- Not checking the preview. The feature is new. Check the G-code preview every time, especially the layers right after a top surface.
- Staying on an old fork. If you installed an experimental ZAA fork earlier, mainline OrcaSlicer now does the job; old profile values may not match.
- Going to thick layers and hoping ZAA covers it. It smooths the top; side walls still show the thick layers.
Next in this series: 90° overhangs without supports using wave toolpaths
Sources
FAQ
Do I need new hardware or firmware?
No. ZAA is just G-code where Z moves together with X/Y, which any normal FDM printer can do. Still check the G-code preview before every print, because the feature is new.
Does it work on bottom surfaces or walls?
No. The OrcaSlicer docs say it targets up-facing top surfaces only; downward-facing or upside-down curves are not handled. Vertical walls still step at the layer height.
How is this different from ironing?
Ironing smooths flat top surfaces but does nothing for stair-steps on slopes. ZAA fixes the steps on shallow slopes. They solve different problems.
Circuits and code were tested on sample boards. Boards differ in pin layout, so check your board's pinout before you power anything.