РЕДАКТИРОВАНИЕ · УПРОСТИТЬ

Упростить сетку STL: меньше полигонов в модели

Уменьшить количество полигонов STL в редакторе можно ползунком «Сохранить геометрию»: он задаёт, какая доля треугольников останется — от 10 до 100% с шагом 5, — а панель ещё до нажатия показывает «N сейчас» и «≈ M после». Каждое применение строится из исходной сетки, поэтому сколько ни двигай ползунок, ошибки не накапливаются.

Инструмент откроется на демо-модели Benchy — свой файл можно открыть там же

Файл не покидает устройство

Паспорт инструмента

Сохранить геометрию
10–100% от исходного числа треугольников, шаг 5, умолчание 100%; при новом файле и «Сбросе изменений» возвращается к 100
≈ M после
прогноз = исходное число треугольников × процент / 100, округлённо, не меньше 1; «N сейчас» — текущее число, формат ru-RU
Движок
MeshoptSimplifier из meshoptimizer 0.18.1; целевая ошибка 0.01, опция LockBorder (границы открытой сетки не сдвигаются)
Порог меша
меш меньше 100 треугольников пропускается; целевое число индексов кратно 3 и не меньше 12 (4 треугольника)
Подготовка сетки
все атрибуты кроме position снимаются, вершины свариваются с допуском 1e-5; после упрощения нормали, bounding box и sphere пересчитываются
Где считается
отдельный Web Worker «polyzon-mesh-task», по одному на задачу; нужен WebAssembly
Таймаут операции
120 секунд, затем «Превышено время операции. Модель слишком детализирована.»
Запись в истории
«Упрощение сетки» — отмена Ctrl/Cmd+Z, повтор Ctrl/Cmd+Y или Shift+Ctrl/Cmd+Z

Упрощение сетки STL: как это работает

  1. Откройте модель кнопкой «Открыть модель» или перетащите файл в окно. Если пришли по ссылке с ?section=simplify, раздел откроется сам, как только модель загрузится.
  2. Переключитесь на «Редактирование» и в рейке «Инструменты модели» выберите «Упростить» — подсказка «Меньше полигонов». Стрелки ← → на рейке переключают соседние инструменты.
  3. Сдвиньте ползунок «Сохранить геометрию». Под ним — «N сейчас» и «≈ M после»; прогноз считается от исходного числа треугольников, а не от текущего.
  4. Нажмите «Применить к исходной сетке». Пока кнопка показывает «Упрощение…», счётчик проходит стадии «Запуск оптимизатора», «Подготовка сетки», «Упрощение сетки», «Пересчёт нормалей», «Передача результата»; кнопка «Отменить» прерывает задачу без сообщения об ошибке.
  5. Не устроил результат — сдвиньте ползунок и примените ещё раз: инструмент снова возьмёт исходную геометрию. Или Ctrl/Cmd+Z — в истории лежит запись «Упрощение сетки».
  6. Экспорт берёт уже упрощённую сетку: STL, 3MF, GLB или OBJ уйдут с новым числом треугольников.

Упрощение сетки STL: где предел

  • Меньше 10% оставить нельзя — ползунок и воркер зажимают значение в 10–100%; меши меньше 100 треугольников пропускаются целиком, как есть.
  • С сетки снимается всё, кроме координат: UV-развёртка, цвета вершин и исходные нормали упрощение не переживают, нормали строятся заново. Покраска граней тоже теряется, если число треугольников изменилось.
  • Итог всегда от исходной сетки, а не от текущей: «доупростить» отремонтированную или полую версию нельзя, а состояние полости и дренажа после применения сбрасывается. Пока идёт упрощение, другие операции над сеткой и экспорт ждут.
  • Нужен WebAssembly, иначе «Браузер не поддерживает WebAssembly…»; предел времени — 120 секунд. Допустимая ошибка не настраивается: 0.01 зашито в воркере.

Упрощение сетки STL: вопросы

Как уменьшить число треугольников в STL онлайн?
Откройте файл, переключитесь на «Редактирование» и выберите в рейке «Упростить». Ползунок «Сохранить геометрию» задаёт долю оставляемых треугольников от 10 до 100% с шагом 5; кнопка «Применить к исходной сетке» запускает упрощение. Считает MeshoptSimplifier из meshoptimizer 0.18.1 в отдельном Web Worker'е — файл не покидает браузер.
Сколько треугольников останется после упрощения?
Панель показывает это заранее: «N сейчас» — текущее число, «≈ M после» — исходное число, умноженное на процент ползунка. Воркер берёт ту же долю от числа индексов, кратно 3 и не меньше 12 индексов на меш, поэтому итог совпадает с прогнозом с точностью до округления. Меши меньше 100 треугольников не трогаются.
Можно ли откатить упрощение модели?
Да, двумя способами. Ctrl/Cmd+Z снимает запись «Упрощение сетки» из истории — со снимками геометрии до и после. А если поставить ползунок на 100% и снова применить, воркер не запускается: модель просто возвращается к исходной сетке, которая хранится отдельно с момента загрузки.
Почему после упрощения пропала покраска или полость?
Упрощение снимает с сетки все атрибуты, кроме координат, и пересобирает треугольники, так что слой покраски сохраняется только при совпавшем числе граней — иначе он пересоздаётся пустым. Состояние полости и дренажа после применения сбрасывается: их нужно применять заново, уже к упрощённой сетке.
Что делать, если STL не упрощается или выходит «Превышено время операции»?
Воркер живёт 120 секунд, после чего задача снимается с сообщением «Превышено время операции. Модель слишком детализирована.» — попробуйте больший процент. Если ничего не меняется, проверьте ползунок: при 100% воркер не стартует, а меши меньше 100 треугольников пропускаются. Без WebAssembly инструмент отвечает ошибкой прямо под панелью.