3MF color explainer

How 3MF Stores Color: Object Colors, Per-Triangle Properties, and Textures

3MF can store color as an object color, a per-triangle property, or a texture. See how each works, why tools lose them, and which one your file uses.

Quick answer

3MF stores appearance in the model's resources. An object can carry one color, individual triangles can reference a color or material, and the Materials and Properties extension adds textures and other properties. These are different representations, so a tool that supports one can silently drop another.

  • 3MF can encode color at the object level, per triangle, or through textures.
  • Base materials, color groups, and textures are separate resource types.
  • Slicer paint data is often kept in private files inside the package, not in the standard resources.
  • Converting between representations, or cutting a mesh, can change how color is encoded or remove it.

Ways a 3MF file can hold color

  • Object-level property

    The object references one material or color, so the whole object has a single appearance.

  • Per-triangle properties

    Each triangle references a material or color, and can use three values to blend across its corners. Painted or multi-color regions are usually stored this way.

  • Textures

    The Materials and Properties extension lets triangles map into an image. The image is a separate file inside the package.

  • Slicer-specific data

    Some slicers keep paint and filament assignments in their own files in the package. Generic applications do not read them.

What the resources are called

In the XML, base materials hold named colors. The Materials and Properties extension adds color groups, texture groups, composite materials, and multi-property groups. Objects and triangles point at these resources by ID, so a color is a reference, not a value stored on each triangle.

That indirection is why edits break color. When a tool creates new triangles, it has to create new references for them too.

Why color gets lost

  • Core-only readers

    A tool that reads only the core mesh ignores every appearance resource.

  • New triangles without references

    Cutting, splitting, or repairing creates triangles that have no property assigned unless the tool copies one over.

  • Representation conversion

    An object color can become painted faces, or a texture can be flattened to a single color.

  • Renumbered resources

    Resource IDs can change on export. That is harmless only if every reference changes with them.

  • Private extensions

    Slicer paint data stored outside the standard resources is dropped by tools that do not know it.

How to tell which one your file uses

  1. Copy the file and rename the copy to .zip

    Open the archive and find the model file in the 3D folder.

  2. Search the XML for property references

    Properties named pid and p1 on triangles mean per-triangle properties. A pid on the object means an object-level property. Look for basematerials, colorgroup, and texture resources.

  3. Look for images and private files

    Textures are images in the package. Slicer paint data sits in files outside the model part.

  4. Or use an inspector

    The free 3MF Color Inspector on this site lists colors, materials, textures, and reference integrity without uploading the file.

Keeping color through an edit

Test one operation on a copy, reopen the result in the slicer you print from, and compare the preview with the source. Do this before you process a whole project.

Common questions

Technical answers and limitations.

Is 3MF color per object or per triangle?+

Both are possible. An object can reference one color, and individual triangles can reference different colors or materials. Which one a file uses depends on the application that wrote it.

Does 3MF support textures?+

Yes, through the Materials and Properties extension, which maps triangles into an image stored in the package. Not every slicer renders or preserves textures.

Why do my colors look different in another slicer?+

The other slicer may support a different subset of the specification, or the color may be stored in private data it does not read. Compare the file in the slicer you will print from.

Can an STL file store color?+

Standard STL has no color field. Some tools write nonstandard color into the attribute bytes of binary STL, but there is no common agreement, so do not rely on color in STL.

Primary references

Verify the underlying guidance.

Apply these checks in Meshworthy

Inspect the model, review the operation, and verify the export.

Meshworthy applies these checks locally on your Mac and does not upload your model.

Check what a 3MF keeps before you edit it ↗