Guide

Printing your map in color.

A TopoSaic model can print in anything from one color to eleven. This guide covers setting the palette, choosing which filament each layer prints from, getting all of it into Bambu Studio or OrcaSlicer without a fight, and picking a layer height that suits terrain.

1. Set the palette

The Colors tab holds every printed color in one place, grouped by what it draws: terrain and land cover, roads and transport, structures and markers, and the display base.

Two things there are worth knowing before you print.

Two layers, one color, one spool. Set any two layers to the same hex value and they share a single filament in the export. Painting roads and railways the same color costs one spool, not two. This is the easy way to keep a busy map down to the number of filaments your printer can actually load.

Colors stay editable while a layer is switched off, so a setup can be prepared in advance. A color only reaches the model when its layer is on and the map really contains that feature — a map with no cable cars never asks for the lift color.

Or let the ground pick its own colors

The four land-cover colors are one flat color each: every tree the same green, every bare slope the same grey. That is the right answer for a map and a poor one for a landscape, because a red rock desert and a white rock desert arrive identical.

Ground colors, in the Surface tab's Terrain section, offers two ways to read the colors off the place itself. Both sample the ESA WorldCover Sentinel-2 composites — the same 10 m lattice the land cover comes from — and cluster what they find into a small printable palette.

SettingWhat you get
Mapped classes
the default
One fixed color per class, as before. Nothing is sampled.
Satellite shades inside classes Clusters within each mapped class, so forest keeps its own greens and rock its own greys. A bay grey and an asphalt grey stay separate materials.
Satellite palette Clusters the imagery alone, with no regard for the classes. The most faithful to the photograph, and the least legible as a map.

Three settings shape the result: how many colors discovery may keep, the share below which a color merges into its neighbour instead of taking a filament, and how strongly shadows are evened out first. That last one matters more than it sounds — at zero, a shadowed hillside can become a color of its own and spend a spool on the time of day the satellite passed.

Spare colors follow variety, not area. Once every class has one, the colors left over go where the ground is most varied rather than where it covers most. A two-tone desert keeps its red rock and its white rock even when a uniform forest covers more of the map — which is the whole reason to sample the imagery instead of painting classes.

What it costs in filament

Each discovered color takes a slot like any other, and the same packing rules apply: a color no piece actually paints costs nothing, and one that lands on a class color you already print shares that slot rather than asking for a second spool of the same filament.

Only the ground hands over. Roads, buildings, railways, ferries, and airport pavement are drawn from the map on top of the terrain and keep their own colors — a road that took the color of the dirt beside it would stop reading as a road.

Where the composite is masked, the mapped color stays. The Sentinel-2 composites mask cloud and, often, permanent snow — so a summit can come back with no usable imagery and print its mapped snow color. On an 8 km Mount Rainier model about a fifth of the surface does exactly that. It is a fallback, not a fault: the alternative is a hole.

A finished job pins the palette it found into its setup, so running that setup again reproduces the same colors instead of discovering a fresh set — and across a super-tile, the first tile's palette is handed to every tile after it, so no seam changes filament for no reason on the ground.

2. Choose the filament slots

Below the preset picker, the Colors tab lists every layer that will print, in order, with the filament number it prints from. Use the arrows to reorder them so the numbers line up with the spools already loaded in your printer.

The filament preset above the list names the material each slot asks the slicer for: Generic PLA, Bambu PLA Basic, PolyLite PLA, or PolyTerra PLA. Naming one is what stops a slicer choosing a material of its own. Slicer preset names also carry a printer suffix, like PolyTerra PLA @BBL A1, which a file cannot know in advance — so a slicer that cannot match the exact preset still reads the right vendor and the right material.

3. Pick an export style

The Output tab offers three 3MF styles. Each states the model's colors one way, matched to how the slicers read them.

StyleWhat the file carriesUse it for
Color project
the default
Standard color group, face-paint codes, and filament settings Bambu Studio and OrcaSlicer
Painted colors Face-paint codes only A pre-painted model for OrcaSlicer, touching none of your presets
Geometry only The standard 3MF color group only Every other 3MF tool

If you are unsure, leave it on Color project. It carries its colors both ways the two slicers read them.

4. Import into Bambu Studio

Bambu Studio does not apply another program's embedded filament settings. Colors arrive through its Standard 3mf Import color dialog instead, which opens for any color 3MF that Bambu did not write itself.

  1. Open or import the Color project 3MF.
  2. In the dialog, click Color match.
  3. Check the mapping rows — each shows a model color and the filament number it will print from.
  4. Click OK.

Check the mapping before you click OK, and avoid Append. When the dialog opens it has already staged one new filament per model color, so accepting the defaults can add the whole palette to your filament list without you ever pressing Append. Color match re-points those rows at spools you already have.

It matters because of how Bambu builds an added filament: each one is a copy of the last filament in your list, whatever that happens to be. One TPU spool at the end turns every added color into "Generic TPU". And the filament list is stored by the app, not the project, so the copies come back in every later import until you delete them.

If your filament list already holds stacks of same-colored "Generic TPU" entries, earlier imports added them. Delete them once, and use Color match from then on.

5. Import into OrcaSlicer

OrcaSlicer works the other way around: it reads the embedded settings and has no import dialog at all. That gives two clean workflows — pick by whether you want the file to set up your filaments, or to fit into a setup you already have.

🎨

Let the file set the colors

Open a Color project 3MF as a project. The filament list becomes exactly the palette from the Colors tab, each slot on the preset you named there.

🧷

Keep your own setup

Import a Painted colors 3MF into a project you have already set up. Nothing in the file touches your presets: each layer prints from the filament number the Colors tab showed, so load the spools in that order first.

6. Set the layer height

Terrain is one long slope, which is the shape layer lines show up on worst: a shallow hillside slices into wide steps, and the steps read as contour rings the map never asked for. Layer height is the setting that fixes it, and the setting that costs the most time.

Layer heightWhat you get
0.2 mm
most slicer defaults
Fast, and fine on steep ground. Shallow slopes and summits show stepping.
0.08–0.12 mm Smooth relief everywhere. Print time roughly doubles going from 0.2 mm to 0.1 mm.
Variable, or adaptive Thin layers where the surface is near-flat and thick ones on steep faces. Most of the smoothness, a fraction of the time.

Both Bambu Studio and OrcaSlicer can vary layer height across a model rather than holding one for the whole print, deciding per layer from how steep the surface is there. Terrain is exactly the case it was built for: the flat summits and valley floors that step worst get the thin layers, and the steep faces where a layer line is nearly invisible get the thick ones. On a relief map it is usually the better trade than simply slicing the whole thing thin.

Match the road height to your layer height. TopoSaic raises roads by one print layer, 0.2 mm by default and settable from 0.08 to 0.4 mm on the Surface tab. Slice at 0.12 mm without changing it and a road is 1.67 layers — the slicer rounds, and the crisp one-layer color change turns ragged. Set the road height to whatever you slice at and it stays one clean layer.

Variable layer height pulls against this, since the height is no longer one number. If sharp roads matter more than smooth slopes, set the road height to the thinnest layer in the range, or slice at a fixed height instead.

One more setting counts in layers. Edge color bleed, on the Surface tab, carries the terrain color a little way down each piece's side wall so the wall's rock color does not draw a grey outline around every piece. It starts at 0.4 mm — two layers at 0.2 mm — and wants a whole number of the layers you slice at, so the band ends on a layer boundary.

Layer height changes nothing about the colors — the palette, the slots, and the import all work the same at any height.

Other slicers and tools

Geometry only writes a plain standards-based 3MF: the core-spec color group and nothing vendor-specific. That is the one channel non-slicer 3MF tools read, so use it for viewers, mesh editors, and anything outside the Bambu and Orca family.

Troubleshooting

What you seeWhat happenedFix
Dozens of filaments after an import, many the same color Bambu's import dialog added one per model color, at its default setting Delete the extras once; use Color match on every later import
Every added filament says "Generic TPU" Bambu copies the last filament in your list when it adds one Same as above; the copies are not coming from the file
The model prints in the wrong colors, but the right pattern The paint codes landed on filament numbers whose spools differ from the map's intent Reorder the layers in the Colors tab to match your loaded spools, or remap in the slicer
Shallow slopes print as visible steps, like contour rings The layer height is coarse against a nearly flat surface Slice thinner, or turn on variable layer height
The model arrives with no colors at all Geometry only, or Painted colors opened by a tool that reads neither channel Export as Color project

The full technical findings behind this guide — what each slicer reads, and the source they were read from — are in docs/slicer-3mf-import.md.

More projects from theatr.us