ВИКИ · WATERTIGHT И 3MF STL против 3MF для многоцветной печати
Главная · Вики · Watertight и 3MF · STL против 3MF для многоцветной печати

STL против 3MF для многоцветной печати

СправкаОбновлено: июль 2026Проверил: mesh-sage

Скачали красивую модель, а на печати она вышла одноцветной серой болванкой? Часто виноват сам формат файла. STL физически не умеет хранить цвет — в нём есть только треугольники. 3MF умеет почти всё: цвета, материалы, отдельные детали и даже единицы измерения. Разберём, почему для многоцветной FDM-печати 3MF — не «модный», а единственно рабочий формат, и почему BunnySplit всегда отдаёт результат именно в нём.

Коротко

STL: только треугольники — и всё

STL — самый старый и универсальный формат FDM-печати. Он хранит поверхность модели как «суп из треугольников»: список граней, у каждой три вершины и нормаль. И на этом всё. В STL физически негде записать цвет, материал, единицы измерения, метаданные или несколько отдельных тел — стандарт этого просто не предусматривает.

Из-за этого многоцветную деталь в один STL не упаковать. Классический обход — экспортировать по STL на каждый цвет и вручную совмещать их в слайсере по общему нулю координат. Работает, но хрупко: сдвинулся ноль — детали разъехались.

Отдельная застарелая боль STL — единицы. Формат не пишет, миллиметры это или дюймы, поэтому одна и та же модель то приезжает в 25,4 раза больше, то во столько же раз меньше. 3MF эту путаницу закрывает, потому что единицы в нём заданы явно.

3MF: не файл, а контейнер

3MF (3D Manufacturing Format) устроен принципиально иначе. Это не «один файл с треугольниками», а OPC-контейнер — по сути ZIP-архив с XML-частями внутри. Спецификация прямо требует, чтобы это был ZIP. Если распаковать .3mf как обычный архив, вы физически увидите: [Content_Types].xml, папку _rels с файлом .rels и главную часть 3D/3dmodel.model — именно эту структуру пишет наш экспортёр.

В этот контейнер помещается всё, чего не хватало STL: цвета и материалы, несколько независимых тел в одной сцене, метаданные и явные единицы измерения. Один файл — вся сборка целиком.

Приятный бонус: по разным оценкам 3MF обычно на 30–60% компактнее эквивалентного бинарного STL — за счёт ZIP-сжатия и более экономной модели данных. Это вторичные данные, а не пункт спецификации, но на практике файл почти всегда легче.

Что несёт файлSTL3MF
Геометрия (треугольники)дада
Цвет и материалынетда
Единицы измерениянетда, явно
Несколько тел в сцененетда
Метаданныенетда
Контейнерплоский файлZIP (OPC)

Почему BunnySplit отдаёт именно 3MF

Когда BunnySplit режет модель по цветовым зонам и добавляет snap-fit замки, на выходе получается не одна деталь, а сборка из нескольких тел — каждое под свой филамент. Донести до слайсера «какая деталь каким цветом печатается» умеет только 3MF.

Каждая деталь уезжает в 3MF отдельным объектом со своим цветом филамента: цвет прописан через блок basematerials и displaycolor в формате #RRGGBBAA. Слайсер (Bambu Studio, PrusaSlicer, Cura) открывает готовую сборку, где цвета уже назначены — не нужно вручную красить каждое тело.

Второй режим — мультицвет внутри одного тела. Здесь цвет задаётся не на деталь, а на каждый треугольник через атрибут pid/p1. Так один объект печатается несколькими цветами сменой филамента, без физической разрезки — подробнее в статье про мультицвет без AMS на одном экструдере.

3MF доносит до слайсера не только форму, но и «какая деталь каким филаментом» — этого STL сделать не может в принципе.

Два пути к многоцвету — и оба живут в 3MF

Многоцветную модель получают двумя способами, и 3MF поддерживает оба.

Первый — разрезать модель на детали по цветовым зонам, каждую напечатать своим филаментом и защёлкнуть snap-fit замками. Цвет получается физической сборкой, без AMS и без покраски. Как именно проходит рез — в статье как разрезать модель на цветные детали.

Второй — оставить одно тело и красить его сменой филамента по слоям или по треугольникам. Разница между «сменой по слою» и «резкой на детали» разобрана отдельно: смена филамента по слою против деталей. В обоих случаях носителем цвета выступает 3MF, а не STL.

Почему у нас свой 3MF-writer

Казалось бы, экспорт 3MF есть в любой mesh-библиотеке — бери и пользуйся. Но здесь спрятана тихая ловушка.

У популярной библиотеки trimesh функция export_3MF объявляет XML-namespace материалов, но не пишет ни сам блок basematerials, ни атрибуты pid/p1 на треугольниках. Файл формально валиден и спокойно открывается — но все детали приезжают серыми: цвет теряется молча, без единой ошибки. Заметишь только когда откроешь сборку в слайсере и не поймёшь, куда делись цвета.

Именно поэтому у BunnySplit свой мультиматериальный 3MF-writer. Он гарантирует, что назначенный цвет каждой детали доедет до слайсера, а не «выпадет» по дороге.

Generic-экспорт trimesh отдаёт серые детали — цвет теряется без ошибки. Поэтому мы не полагаемся на него и пишем 3MF сами.

Золотой мостик: 3MF сам требует watertight

И вот главное, что связывает формат с печатной готовностью. Стандарт 3MF не принимает любой «суп из треугольников». Для объектов типа model он требует манифолдности: каждое ребро граничит ровно с одним другим треугольником, ориентация согласована, нормали смотрят наружу. Иначе это просто не валидный 3MF-объект.

Значит наш watertight-гейт — внутренний критик is_manifold_volume, который бракует дырявые и самопересекающиеся меши — это не перестраховка, а прямое требование формата. «Печатно-готовый 3MF» по определению стандарта равно «watertight + manifold».

Что такое герметичный меш, какие бывают дефекты и как движок их чинит — в статье что такое watertight-меш и почему без него не печатается.

Получить мультицветный 3MF из обычного STL помогает инструмент разрезать модель по цветам.

3MF по стандарту требует манифолда — поэтому watertight у нас не «дополнительная опция», а условие существования корректного файла.

На чём основан сервис

BunnySplit рассчитывает соединения не «на глаз». Зазор замка складывается из посадки (по умолчанию 0.30 мм на сторону) и компенсации усадки материала — PLA 0.3%, PETG 0.5%, ABS 0.7% — а прогиб защёлки проектируется с запасом не меньше двукратного по пределу деформации пластика (PLA около 4%, PETG около 7%). Геометрия консольных защёлок следует инженерному канону snap-fit Bayer/Covestro «Snap-Fit Joints for Plastics».

Числа — из движка сервиса и справочников FDM; величины snap-fit — по Bayer/Covestro. Разработчик и издатель: BunnySplit.

Загрузите модель — получите готовый 3MF

BunnySplit сам разрежет модель по цветовым зонам, расставит snap-fit замки и соберёт печатно-готовый 3MF, где каждая деталь уже знает свой цвет филамента. Загрузите файл и разрежьте модель в редакторе BunnySplit — на выходе сразу цветная сборка без покраски и без AMS.

Загрузить модель →

Печатаете на заказ? Продавайте свои модели и услуги на BunnySplit →

Частые вопросы

Чем 3MF лучше STL для многоцветной печати?

STL хранит только геометрию — треугольники, и всё. В нём негде записать цвет, материал или несколько отдельных деталей. 3MF везёт всё это в одном ZIP-контейнере: каждая деталь со своим цветом филамента, единицы измерения заданы явно, а слайсер открывает готовую сборку с уже назначенными цветами.

Почему в STL нет цвета?

Так устроен формат: STL описывает поверхность как список треугольников (вершины плюс нормаль) и не предусматривает полей под цвет, материал или единицы. Это не баг, а изначальная простота формата — он создавался только под форму. Для цвета нужен контейнер вроде 3MF.

Можно ли сделать многоцветную печать из STL?

Косвенно — да, но неудобно: придётся экспортировать по отдельному STL на каждый цвет и вручную совмещать их в слайсере по общему нулю координат. Это хрупко. 3MF решает задачу в один файл: несколько тел, у каждого свой цвет, ничего не разъезжается.

3MF действительно меньше STL по размеру?

По разным оценкам 3MF обычно на 30–60% компактнее эквивалентного бинарного STL — за счёт ZIP-сжатия и более экономной структуры данных. Это практическое наблюдение из вторичных источников, а не пункт спецификации, но на деле файл почти всегда легче.

Какой формат открывать в Bambu Studio или PrusaSlicer для цвета?

3MF. Именно он передаёт слайсеру и геометрию, и назначение цветов: каждая деталь приходит со своим филаментом (basematerials), а мультицвет в одном теле — через атрибуты на треугольниках. STL цвета не донесёт — детали откроются серыми.