Оптимизация полигонов 3D-моделей в реальном времени
Оптимизация полигонов 3D-моделей в реальном времени
Коротко об инструменте
На вход идёт OBJ-файл, на выход — та же модель с меньшим числом треугольников и уменьшенным весом. Ползунок уровня детализации двигает результат в реальном времени, а вьюпорт показывает, где силуэт начинает разваливаться. Нужно, когда экспорт из сканера или CAD весит десятки мегабайт и тормозит сцену в Three.js, Roblox или веб-конфигураторе. Файл читается прямо на вашем компьютере. Смотрите также: автоматический риг скелета многоножки, перевести текстуры PNG в лёгкий WebP.
Только OBJ — поле загрузки ограничено расширением .obj, и результат выгружается тоже в OBJ. Модели в FBX, GLB или STL сначала пересохраните в OBJ в Blender: File — Export — Wavefront. Материалы в отдельном MTL-файле инструмент не обрабатывает, геометрия важна ему одна.
Ограничения по мегабайтам жёстко не задано, всё упирается в память вкладки и видеокарту. Модели в несколько десятков мегабайт обычно открываются, но разбор текстового OBJ на сотни тысяч граней занимает время и на слабой машине вкладка может подвиснуть. Если страница перестала отвечать, закройте лишние вкладки и попробуйте снова.
Нет, рассчитывайте на потерю. Упрощение перестраивает треугольники, и текстурные координаты в местах слияния вершин рвутся, а швы развёртки становятся заметны. Порядок работы такой: сначала упрощение геометрии, потом новая развёртка и запекание текстур в Blender.
Универсального числа нет, ориентируйтесь на роль объекта в сцене. Для дальнего фона нередко хватает 5-10 процентов исходной сетки, для предмета в руках персонажа безопасный предел ближе к 40-50. Смотрите на силуэт: как только контур стал угловатым, вы прошли нужную границу.
Нет. Файл читается через файловый API браузера, разбирается и отображается библиотекой three.js, подключённой с CDN, а скачивание собирается из данных, которые уже лежат в памяти вкладки. Ни исходник, ни результат на сайт не передаются.
Так проявляются дефекты исходника: несваренные вершины, вывернутые нормали, незамкнутая оболочка. Алгоритм схлопывает рёбра и на такой сетке рвёт её ещё сильнее. Прогоните модель через Merge by Distance и пересчёт нормалей в Blender, после этого результат обычно становится чистым.
Да, ради этого инструмент и нужен: облегчённый OBJ импортируется в Roblox Studio, Unity и Unreal без дополнительных шагов. Проверьте только масштаб и ориентацию осей после импорта — OBJ не хранит единицы измерения, и разные редакторы трактуют размер по-своему.
До: OBJ из фотограмметрии, около 240 000 треугольников, файл на 26 МБ
После: Ползунок на 25 % — примерно 60 000 треугольников, силуэт сохранён, мелкая фактура поверхности потеряна
До: Модель ящика из CAD-экспорта с избыточной триангуляцией плоских граней
После: Ползунок на 10 % — форма коробки не меняется, а сетка становится пригодной для дальней прорисовки
Оценка и фидбек помогают понять, что улучшать дальше.