Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Texture & Mesh Baker

Инструменты редактора Unity для снижения числа материалов и draw calls в сценах:

  • Tools → Запекание текстур — объединение текстур материалов в атласы;
  • Tools → Запекание мешей — сшивание объектов сцены в секции;
  • Tools → Создание LOD — автоматические LOD для объектов и секций.

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

Требуется Unity 6000.0 или новее.

Установка

В Packages/manifest.json проекта:

{
  "dependencies": {
    "com.tramontan.texture-mesh-baker": "https://github.com/Tramontan/UnityTextureAndMeshBaker.git"
  }
}

или Window → Package Manager → + → Install package from git URL… с адресом https://github.com/Tramontan/UnityTextureAndMeshBaker.git.

Конкретная версия: …UnityTextureAndMeshBaker.git#v1.2.0.

Для разработки самого пакета можно подключить локальную папку: "com.tramontan.texture-mesh-baker": "file:../../UnityTextureAndMeshBaker" (путь относительно папки Packages проекта) — правки тогда видны сразу, без коммита.

Запекание текстур

  1. Перетащите в окно префабы, модели (FBX), папки или объекты сцены (или «Добавить префабы из открытых сцен»).
  2. Выберите число материалов на выходе, максимальный размер атласа, отступ. Ниже сразу видно превью раскладки текстур в каждом атласе.
  3. «Объединить» — создаются атласы, материалы, меши с перенесёнными UV и префабы-варианты исходных префабов; экземпляры в открытых сценах заменяются. Всё сохраняется в Assets/TexturesBaker/Bakes/<имя>/ вместе с bake_config.json.
  4. Вкладка «Запечённые» — список запеканий; «Распечь материалы» возвращает исходные префабы в сцены (закрытые сцены с запечёнными префабами тоже находит и исправляет) и удаляет созданные файлы.

Ограничения: материалы с тайлингом UV за пределы 0..1 не объединяются (исключаются автоматически); разные шейдеры не смешиваются в одном материале, если не включено «Приводить к одному шейдеру»; дополнительные карты (normal, emission) в атлас не переносятся.

«Разделять атласы по типу шейдера» (включено по умолчанию) не пускает в один атлас материалы с разными шейдерами или режимами отрисовки — непрозрачный, с вырезкой, прозрачный, двусторонний, — даже если у них один шейдер или включено «Приводить к одному шейдеру»: деревья и дома получат разные атласы. Материалов на выходе должно быть не меньше, чем таких типов.

Запекание мешей

«Tools → Запекание мешей» создаёт в сцене объект MeshSectionGrid (тег EditorOnly — в билд не попадает). Режимы разбиения:

  • Сетка полос — вертикальные/горизонтальные полосы: «+» над и слева от сетки добавляет полосу, «×» удаляет, точки двигают; есть равномерное разбиение с шагом.
  • Зоны вручную — многоугольники: «+ Зона», перетаскивание точек, Ctrl+клик по краю — новая точка, Shift+клик по точке — удалить точку, удерживать Z и тащить — двигать всю зону (клавиша меняется в Edit ▸ Shortcuts ▸ Mesh Section Baker).
  • Выделение объектов — секции собираются из выделенных в сцене объектов; панель «Mesh Sections» в Scene view, объекты редактируемой секции подсвечиваются жёлтым.

При запекании секции объекты сшиваются в один меш (по сабмешу на материал), MeshCollider удаляемых объектов — в один коллайдер. В режиме «Убрать со сцены» исходные объекты полностью удаляются из сцены — в редакторе и в билде они не загружаются. Их точная копия (экземпляры префабов со всеми изменениями) хранится в префабе Generated/<сцена>_<id>/Sources/<секция>.prefab, при распекании объекты создаются заново на тех же местах. Объекты со скриптами, светом, триггерами и т.п., а также объекты, на которые ссылаются другие объекты сцены, не удаляются — у них только выключаются рендеры. Сшитые меши сохраняются в Assets/MeshSectionBaker/Generated/.

Секции, запечённые версией до 1.2.0, держат исходники в скрытом контейнере [MeshSections Sources · EditorOnly] в сцене; кнопка «Удалить исходники со сцены (перенести в хранилище)» в инспекторе сетки переводит их на новое хранение без распекания.

Создание LOD

Выберите объект (или несколько) в сцене — окно сразу показывает треугольники, вершины и существующие уровни LOD. Для каждого уровня задаются доля треугольников и порог переключения (доля высоты экрана); по умолчанию подставляются рекомендуемые значения по сложности и размеру объекта («Рекомендуемые» возвращает их). «Погрешность, пикс.» — сколько LOD может отличаться от оригинала в момент переключения (экран 1080p): если заданный % треугольников даёт ошибку больше, упрощение останавливается раньше. «Отсекать вдали» — последний LOD пропадает на малой высоте (для секций и крупных объектов выключено).

«Создать LOD» добавляет LODGroup и дочерние объекты <имя>_LOD<n> с упрощёнными мешами (Assets/LodCreator/Generated/<сцена>/, для секции — рядом с её мешами). Исходные рендеры не меняются. Меши упрощаются только схлопыванием к существующим вершинам, поэтому UV атласа, нормали и lightmap UV сохраняются точно. «Удалить LOD» возвращает объект к исходному и удаляет неиспользуемые меши.

Два сценария с секциями:

  • LOD у объектов → сшивание. Секция из объектов с LOD собирается по уровням (LOD0…LODn) с LODGroup; пороги пересчитываются под размер секции, объекты без LOD входят во все уровни. Отсечение — только если оно есть у всех объектов.
  • Сшивание → LOD у секции. Выберите сшитую секцию и создайте LOD для её меша; коллизия не трогается. При распекании секции её LOD удаляются вместе с ней.

Порядок работы вместе: сначала запекание текстур, потом сшивание мешей; обратно — сначала распечь секции, потом материалы (инструмент текстур это проверяет). LOD на экземплярах префабов перед заменой префабов (объединение/распекание материалов) нужно удалить — инструмент текстур это тоже проверяет.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages