ВИДЕО-ОБУЧЕНИЕ: Как сжать/уменьшить размер 3D-модели в Blender (GLB, GLTF, DAE, FBX, OBJ. )?
Blender — это мощное программное обеспечение с открытым исходным кодом, разработанное для создания трехмерной графики, анимаций и визуальных эффектов. Оно поддерживает широкий спектр форматов файлов для импорта и экспорта, включая GLB, GLTF, DAE, OBJ, ABC, USD, BVH, PLY, STL, FBX и X3D. Эта адаптивность делает его бесценным инструментом для различных проектов и рабочих процессов 3D (https://www.blender.org/download/).
Оптимизация размера 3D-файла для AR Code
Мы рекомендуем использовать Blender для преобразования и сжатия ваших 3D-моделей перед загрузкой их в AR Code для оптимального восприятия дополненной реальности.
Хорошее восприятие AR Code должно загружаться менее чем за 10 секунд на любом мобильном устройстве. Типичное мобильное подключение работает со средней скоростью 1 мегабит в секунду.
Чтобы сжать 3D-файл в Blender для отображения в AR, выполните следующие шаги:
1 — Сжатие текстур 3D-модели
Для этого шага требуется использование программного обеспечения для редактирования изображений. Мы будем использовать программное обеспечение с открытым исходным кодом GIMP. (https://www.gimp.org/downloads/)
Во-первых, получите доступ к файлам текстур вашей 3D-модели. Для этого используйте следующий формат: .gltf + .bin + текстуры:
- Импортируйте вашу 3D-модель в Blender
- Экспортируйте вашу 3D-модель в формате .gltf + .bin + текстуры
- Откройте файлы текстур в GIMP
- Масштабируйте изображения (до 1024X1024 или меньше для большей сжимаемости): Изображение > Масштаб изображения

- Экспортируйте текстуры в формате *.jpg с разрешением 90 (или меньше для большей сжимаемости): Файл > Экспорт

-
Замените текстуры в Blender или просто отредактируйте файл .gltf с помощью текстового редактора и замените форматы текстур по мере необходимости (например, «.png» на «.jpg»)

2 – Уменьшение сложности 3D-модели с помощью децимации в Blender
Вторым большим шагом в уменьшении размера 3D-модели является децимация ее мешей, которая заключается в уменьшении количества полигонов при сохранении общего вида.
- Импортируйте ранее отредактированный файл *.gltf в Blender
- Выберите меш, который нужно децимировать

- Продолжайте децимацию, стремясь уменьшить каждый меш до 50 000 граней. Всегда проверяйте 3D-визуализацию. Совет: Если ваша модель не анимирована, вы можете децимировать несколько мешей, объединив их сначала.
- Экспортируйте модель в формате *.glb , выбрав опцию «Применить модификаторы», но не опцию «Сжать».

Теперь вы можете загрузить свою 3D-модель в интерфейс AR Code.
Загрузка 3D-файла в AR Code
Для публикации 3D-модели на AR Code рекомендуется использовать модель, размер которой не превышает 15 МБ. Большая модель может иметь более высокое разрешение, но это также может вызвать замедление во время отображения AR. Меньшее разрешение может ускорить отображение. Для получения дополнительной информации см. Загрузка 3D-моделей на AR Code: какой размер файла и формат выбрать?

Видеоурок по сжатию/уменьшению размера 3D-файла в Blender
Вот видеоролик, который демонстрирует весь процесс сжатия 3D-файла и его загрузки в AR Code. В нем представлена пошаговая инструкция по выполнению этой задачи.

Вывод
Для оптимизации 3D-модели для отображения дополненной реальности необходимо учитывать размер файла и сложность модели. Следуя описанным шагам и используя мощные инструменты, такие как Blender и GIMP, вы можете создавать захватывающие и эффективные AR-проекты, которые отлично работают на различных устройствах. Не забывайте всегда тестировать свои модели в разных средах, чтобы обеспечить наилучший пользовательский опыт.
Чтобы сжать/уменьшить размер промышленных CAD-моделей, пожалуйста, следуйте этому руководству: Как сжать/уменьшить размер промышленной 3D CAD-модели с помощью MeshLab и Blender?
Часто задаваемые вопросы
Что такое Blender и какие форматы файлов он поддерживает для импорта и экспорта?
Blender — это мощное программное обеспечение с открытым исходным кодом для создания 3D-графики, анимаций и визуальных эффектов. Оно поддерживает различные форматы файлов для импорта и экспорта, включая GLB, GLTF, DAE, ABC, USD, BVH, PLY, STL, FBX и X3D, что делает его крайне гибким для различных проектов и рабочих процессов.
Почему важно сжимать 3D-модели перед их загрузкой в AR Code?
Сжатие ваших 3D-моделей перед их загрузкой в AR Code является необходимым для создания плавного и эффективного опыта дополненной реальности. Уменьшая размер файла, вы обеспечиваете быструю загрузку контента AR. Это помогает поддерживать вовлеченность пользователей и доставлять более удовлетворительный опыт на различных устройствах.
Каков процесс сжатия 3D-файла в Blender для оптимизации его отображения в дополненной реальности?
Чтобы оптимизировать 3D-файл в Blender для отображения в дополненной реальности, следуйте следующим шагам: сначала сжимайте текстуры 3D-модели с помощью программного обеспечения для редактирования изображений, такого как GIMP, чтобы уменьшить размер файла без значительной потери деталей. Затем сократите сложность 3D-модели в Blender, используя такие техники, как децимация, которая уменьшает количество полигонов, сохраняя при этом их внешний вид и форму. Этот процесс обеспечивает баланс между качеством визуализации и производительностью в AR-проектах.
Какой рекомендуемый предел размера файла для 3D-модели на AR Code?
Для оптимальной производительности на AR Code рекомендуется держать размер файла 3D-модели ниже 15 МБ. Более крупные модели могут иметь более высокую детализацию, но они могут вызывать медленную загрузку и возможные проблемы с производительностью во время отображения AR. Используя модели с меньшим разрешением, вы можете обеспечить более быстрый и отзывчивый опыт AR для пользователей.
Как уменьшить размер .stl и .obj файлов 3D Модели. Что из себя представляют .stl и .obj файлы.

3D-файлы могут быть очень тяжелыми. Это может быть проблемой при попытке загрузить 3D-файлы на веб-сайты, как getfab . ru или при попытке поделиться ими со своими коллегами и друзьями. В этой статье мы рассмотрим то, как вы можете уменьшить размер ваших файлов 3D моделей и к какому уровню детализации вы должны стремиться, чтобы получить 3D-печать высокого качества.
Зачем уменьшать размер вашего 3D-файла?
Теоретически, нет ничего плохого в большом файле. Но н а практике, сервисы расчета и услуг 3 d печати могут иметь ограничения при загрузке на их сервер. Это связано с тем что на обработку больших файлов потребуется много времени и ресурсов, а представьте если таких пользователей будет одномоментно несколько. Сайт просто не будет работать. Например, i.materialise. com , sculpteo . com и thingiverse имеют ограничение по размеру загружаемого файла
100 МБ .
Кроме того, большинство из этих очень тяжелых файлов, имеют уровень детализации, который выходит далеко за пределы того, что может видеть наш глаз или того что может напечатать любой 3D-принтер. Вот почему мы расскажем в этой статье, как можно уменьшить размер 3 d файла при сохранении отличного качества 3D-печати.
Что представляет из себя stl и obj файл?
STL-формат файлов были введены ещё в 1987 году для описания объектов в технологиях быстрого прототипирования методом стереолитографии. Отсюда и название stl. Опытные образы 3d принтеров уже существовали на тот момент. Информация об объекте храниться в виде списков треугольных граней (полигонов ) которые описывают поверхность, а их ориентация в пространстве — нормалями. STL может быть текстовым (ASCII ) или двоичным. Основное отличие между ними — двоичный имеет меньший размер нежели текстовый, т.к. записывается в более компактном виде — это 0 и 1. Более подробная информация на wiki.
Почему некоторые 3D-файлы бывают очень большого размера?
Когда 3D модели экспортируются в. stl файлы (наиболее распространенный формат файла, когда речь идет о 3D-печати), они будут выражены в виде сетки из треугольников (полигонов ). Чем меньше эти полигоны, тем поверхность является более гладкой и качественной… и к сожалению будет больше этих треугольников и соответственно больше размер вашего 3D-файл. Уменьшение числа треугольников уменьшит гладкость поверхности, но и размер файла. На картинке ниже вы можете увидеть градацию от высокополигональных моделей (справа ) к низкополигональным (слева ). В данном примере размер файла правой области довольно большой, в то время как леввая сфера имеет небольшой размер файла.

Задача 3 d дизайнера моделей для 3 d принтера, чтобы найти идеальный компромисс между, качеством отпечатанной 3 d модели и размером файла. К счастью, это проще, чем вы могли бы представить.

Какие настройки экспорта я должен выбрать, чтобы получить небольшой, высококачественный 3D-файл?
Во многих программ для 3D моделирования, вам будет предложено определить максимальную точность или отклонение экспортируемого в STL файла. Этот допуск определяется как максимальное расстояние между первоначальной формой и STL сеткой при экспорте.
Рекомендуется выбирать допуск 0,01 мм для хорошего качества. Экспорт с допуском меньше, чем 0,01 мм не имеет смысла, так как 3D — принтеры не могут печатать лучше чем этот уровень детализации. При экспорте файла с допуском больше чем 0,01 мм, треугольники могут стать видны при 3D — печати.
Что делать, если ваше программное обеспечение не позволяет уменьшить размер вашего 3D-файла?
Размер файла в основном является проблемой для программ, которые используют моделирование типа NURBS (это означает, что они выражают математические модели). Эти программы, как правило, позволяют установить качество. stl файла в той или иной форме.
Некоторые программы 3D моделирования, однако, не предлагают возможность выбрать допуск для вашего экспорта в. stl, или любой другой инструмент, чтобы уменьшить количество полигонов. В этом случае, сохраните ваши 3 d -файлы в высокой детализации и продолжить его редактирование в другой программе.
Например, вы можете использовать бесплатную программу для 3D моделирования — Meshmixer. В меню справа инструмент «Выбрать », затем дважды щелкните по вашей модели (это будет выбрать всю сетку). Затем нажмите на «Edit …» и выберите опцию «Уменьшить ».

Теперь вы можете уменьшать количество полигонов, используя несколько вариантов. Лучший рабочий вариант заключается в использовании процентного инструмента. Он сразу же указывает вам, на сколько процентов (и количество полигонов) был уменьшен размер вашего файла.
Оптимизация перед экспортом
![]()
Добрый вечер. Попросили меня нарисовать грубенькую модель одного устройства, что бы потом выложить на сайт. Для рисовки использовал sketchup (переучиваюсь потихоньку на blender ). После чего экспортировал модель в .dae и импортировал в blender. И всё смотрится хорошо, если бы не размер финального экспортированного .html файла в ~10mb.
Какие можно провести операции в blender что бы особо не трогать видимую геометрию и уменьшить вес финального файла?
Приложил nasos.blend и nasos.html
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
02 июля 2015 10:02
сообщений: 900

Добрый день.
Посмотрел вашу модель в приложении «Viewer». У вас очень высокополигональная модель. Только одной геометрии у вас на 6,6 Мб. Остальное это данные из Blender’a (104,1 кб), минифицированная версия движка, приложение «Webplayer».
Еще заметил, что используется много похожих материалов (на целых 15 draw call’ов и 14 шейдеров). Можно использовать вообще один материал с использованием текстурного атласа, к примеру
02 июля 2015 10:25
сообщений: 1450
Также следует отметить, что HTML формат предназначен для удобства обмена файлами. Для продакшн рекомендуем использовать гораздо более эффективный JSON формат.
Руководитель проекта | VK | Twitter | Facebook | Linkedin
02 июля 2015 14:00
сообщений: 636
![]()
Да я заметил, что перегруз с полигонами. Думал вдруг в блендере есть какие способы автоматической оптимизации. Но удаление дублей вершин даёт битые поверхности. От decimate в данном случае тоже пришлось отказаться. Буду искать другие пути импорта в блендер.
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
02 июля 2015 14:51
сообщений: 755
удаление дублей вершин даёт битые поверхности.
![]()
Можно на тех местах, где дубли нужны, удалить их и просто сделать Edge Split: либо просто выделить лупкат и нажать V, что отсоединит вершины, либо выделить все нужные лупкаты, затем ctrl+e -> mark sharp, после добавить модификатор Edge Split и в его настройках снять галку Edge Angle
Начать советую с удаления дублей, затем лучше поправить нормали (ctrl+n) и превратить все полигоны в четырехугольники (выделить все вершины -> alt+j), чтобы было удобнее разбираться) Ну, и потом Edge split
13 июля 2015 18:07
сообщений: 157
Подскажите пожалуйста, несколько вопросов на тему производительности:
1) Как делать быстрый материал с имитацией отражения, в версии 15,06
2) Количество объектов влияет на производительность? Например, есть ли разница отрисовывать 100 кубиков отдельными объектами или один меш из ста кубиков?
2) Какие ноды самые тормозные?
3) Что лучше, одна большая текстура или несколько маленьких? (при условии одинакового объема файлов)
4) Есть ли какие-то рекомендации по UV, например, привязывать вершины к пикселям или делать меньше швов? (с точки зреня производительности).
Буду благодарен за общие советы как делать максимально быстрые сцены.
13 июля 2015 18:23
сообщений: 1002
1) Как делать быстрый материал с имитацией отражения, в версии 15,06
Запечь предварительно кубамапу с окружения сцены и использовать её в материале.
2) Количество объектов влияет на производительность? Например, есть ли разница отрисовывать 100 кубиков отдельными объектами или один меш из ста кубиков?
Да влияет, один лучше, особенно если у всех кубиков разные материалы.
2) Какие ноды самые тормозные?
Ноды из Color Mix — (Overlay, Burn, Hue, Saturation Dodge) и ноды Squeez Value (хорошо заменяется специальной нодовой группой B4W_SMOOTHSTEP) и нода Hue/Saturation .
3) Что лучше, одна большая текстура или несколько маленьких? (при условии одинакового объема файлов)
Лучше одна большая.
4) Есть ли какие-то рекомендации по UV, например, привязывать вершины к пикселям или делать меньше швов? (с точки зреня производительности).
По сути места швов разрезаются при рендеринге и получается что в этих местах вертексы рендереяться по двое, соответственно лучше меньше швов. И если использовать Enge Sharp с соответствующим модификатором, то лучше объединять Edge Seams с Sharp Enges.
Blend4Web и всё такое. Тридешу тридэ, моделю модели.
13 июля 2015 18:27
сообщений: 644
2) Количество объектов влияет на производительность? Например, есть ли разница отрисовывать 100 кубиков отдельными объектами или один меш из ста кубиков?
Да влияет, один лучше, особенно если у всех кубиков разные материалы.
Но, если все кубики статические и имеют одинаковый материал, то разницы не будет. Но в общем случае — да. Лучше стараться объединить всё, что можно объединить. Хотя опять же, если в этом меше, состоящем из нескольких кубиков, на каждом из кубиков будет свой материал, то выгоды вы не получите.
20 июня 2017 16:39
сообщений: 19
Запечь предварительно кубамапу с окружения сцены и использовать её в материале.
Стандартными методами никак, появляется фиолетовый силуэт объекта. Как я понял все это делается через ноды, которые для меня тёмный лес. Нормального урока нету, везде уже заранее построены какие-то куча ноды, т.е. пропускаются моменты где что откуда взято и куда зачем пропихнули! Кстати со многими уроками, связанными с blend4web, такая же ситуация.
Пожалуйста, можете более подробно объяснить —
Как делать быстрый материал с имитацией отражения
Это первое.
Второе: После того как сделаем этот материал, могу ли его применять(перетаскивая или копируя) к другим объектам, другой сцены, или же мне придется каждый раз заниматься «коммутаторскими» делами?
ЗЫ: Сам работаю в Cinema4D, там такого «геморроя» нет. Просто включаю envoirment map в материале и загружаю туда картинку. Потом просто применяю его к другим объектам.
21 июня 2017 14:41
сообщений: 1002
Стандартными методами никак, появляется фиолетовый силуэт объекта. Как я понял все это делается через ноды, которые для меня тёмный лес. Нормального урока нету, везде уже заранее построены какие-то куча ноды, т.е. пропускаются моменты где что откуда взято и куда зачем пропихнули! Кстати со многими уроками, связанными с blend4web, такая же ситуация.
Пожалуйста, можете более подробно объяснить —
Вот здесь подробнийше описан процесс запекания кубамапы
Это первое.
Второе: После того как сделаем этот материал, могу ли его применять(перетаскивая или копируя) к другим объектам, другой сцены, или же мне придется каждый раз заниматься «коммутаторскими» делами?
Да конечно можете его применить на какое угодно количество объектов и так же на других сценах. Вот по суит самый простой пример испольования кубамапы в материале. Или же вот так:
cubemap_example.blend
ЗЫ: Сам работаю в Cinema4D, там такого «геморроя» нет. Просто включаю envoirment map в материале и загружаю туда картинку. Потом просто применяю его к другим объектам.
Blender 3D – уменьшение полигонов модификатором «Decimate»

Бывают ситуации, когда необходимо уменьшить количество полигонов у высокополигональной модели с сохранением развертки и хорошей полигональной сеткой. Особенно это актуально в случаях 3D моделей отсканированных для 3D принтеров, в которых порой несколько миллионов полигонов и сетка достаточно кривая, не предназначенная для редактирования полигональным моделированием.
В этом уроке рассмотрим, как можно решить данную задачу в бесплатном 3D редакторе Blender стандартным плагином «Decimate» («Десятикратное уменьшение»).
Для работы понадобится стандартный 3D редактор Blender и модель, которой необходимо уменьшить количество полигонов.
1. Подготовка сцены
Помещаем модель в сцену. В данном случае это высокополигональная 3D модель головы Сюзанны, состоящей из 31 488 полигонов. На модели присутствует развертка и наложена текстура.
![]()
Теперь добавим модификатор «Decimate»: «Properties» => «Modifiers» => «Add Modifier» => «Generate» => «Decimate».
![]()
После этого откроются параметры модификатора, в которых будут три опции:
- «Collapse» (Разрушение) – это процентное уменьшение полигонов;
- «Un-Subdivide» (обратное подразделение) – это уменьшение полигонов через сокращение итераций сглаживания;
- «Planar» (Плоскостное) – это уменьшение полигонов через установление параметров углов.
2. Процентное уменьшение полигонов
Первая опция «Collapse» (Разрушение) позволяет уменьшить количество полигонов, задав их в процентах в шкале «Ratio» (Соотношение).
По умолчанию значение «Ratio» задано 1, то есть равно 100%. Следовательно, чтобы уменьшить количество полигонов на 90%, в шкале «Ratio» нужно выставить значение 0,1, если на 99%, то равное 0,01. Внизу напротив надписи «Face» автоматически будет указано количество полигонов в случае применения модификатора.
До определенного значения процентного соотношения развертка на модели будет сохраняться. Это во многом зависит от ровности полигональной сетки. В данном случае развертка сохранятся при сокращении полигонов в два раза, то есть на 50%. При уменьшении полигонов на 90% происходит уже искажение развертки.
![]()
Как видим, данный способ подойдет в тех случаях, когда необходимо уменьшить количество полигонов примерно наполовину. При значительном уменьшении полигонов достаточно плохо сохраняется развертка, а полученную полигональную сетку достаточно трудно редактировать.
Так же данным способом есть возможность уменьшить количество полигонов только на определенной части развертки. Для этого необходимо на выбранную часть равертки назначить группу вершин, а затем выбрать её в модификаторе «Decimate» в разделе «Collapse» через «Vertex group name».
![]()
Ниже можно установить галочку напротив надписи «Triangulate» (Триангулировать), то есть после применения модификатора полигональная сетка будет разбита на треугольники. А активация галочкой «Symmetry» (Симметрия) позволяет уменьшить полигоны симметрично по выбранной оси.
3. Уменьшение полигонов через обратное подразделение поверхности
В различных 3D редакторах есть модификатор «подразделения поверхности», который увеличивает количество полигонов и придает ей более сглаженную форму. Например, в Autodesk 3dsmax это модификатор «Turbo Smooth», а в Blender это модификатор «Subdivision Surface».
Так вот, функция «Un-Subdivide» (обратное подразделение) в модификаторе «Decimate» выполняет обратное действие, то есть уменьшает количество полигонов на заданное число итераций. В данном случае применено четыре итерации.
![]()
Как видим, текстура на модели «поплыла», но зато геометрия получилась достаточно ровная. Что позволяет данной модели сделать развертку, а затем «запечь» текстуры с первоначального варианта. Функция «Un-Subdivide» в модификаторе «Decimate», это своего рода быстрая ретопология с достаточно приличной геометрией в результате.
3. Уменьшение полигонов угловым пределом
Третья функция данного модификатора «Planar» позволяет уменьшить количество полигонов через «Angle Limit» (Угловой предел).
Внизу можно выбрать параметры, которые нужно сохранить при уменьшении числа полигонов. В крайнем правом углу можно выбрать «UVs», то есть уменьшить число полигонов с сохранением границ развертки. Галочкой можно активировать «All Boundaries», то есть все границы.
![]()
В данном способе ровность полигональной сетки необходимо регулировать параметром значения угла. Как видим, развертка в данном случае остается ровной.
Таким образом, если необходимо быстро уменьшить количество полигонов модели и при этом получить хорошую геометрию и развертку, то оптимальным решением будет использование функции «Un-Subdivide» (Антиподразделение). Так как полигоны в этом случае будут четырехугольными, что позволит произвести модели развертку. Затем останется только сделать запекание текстур.
На нашем ресурсе вы можете почитать другие уроки по бесплатному редактору Blender 3D:
- Настройка прозрачности и альфа-канала текстуры в Blender
- Способы выделения объектов и подобъектов в Blender
- Подробный урок по моделированию покебола в Blender
Перепечатка и использования данного материала без прямой обратной ссылки категорически запрещена!