Guide
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.
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.
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.
The Output tab offers three 3MF styles. Each states the model's colors one way, matched to how the slicers read them.
| Style | What the file carries | Use 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.
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.
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.
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.
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.
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.
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 height | What 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.
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.
| What you see | What happened | Fix |
|---|---|---|
| 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