Основы запекания текстур в V-Ray, часть I
1.1. Откройте начальную сцены, которую можно найти здесь.
1.2. Установите V-Ray в качестве текущего визуализатора.
1.3. Вы можете открыть Редактор материалов (M) что бы удостовериться, что материалы правильно настроены и присвоены.
1.4. Перед тем, как вы сделаете первую визуализацию, мы включим Frame Stamp (свиток System), что бы на изображении показывалось время визуализации.
1.5. Визуализация:
Вот что мы получили с настройками V-Ray по умолчанию. Для того, что бы сделать освещение более интересным, мы добавим к визуализации непрямое освещение и размытые тени.
1.6. Перейдите в свиток Image sampler и установите Image sampler type в Adaptive DMC .
1.7. В свитке Indirect illumination , включите GI установите для Primary bounces и Secondary bounces Quasi-Monte Carlo (теперь это Brute force — прим. перев.) .
1.8. В свитке Environment , включите опцию Override MAX’s (Skylight) и установите Color в RGB(255, 255, 255) , а Multiplier равным 0.8 .
Это будет нам давать некоторый цвет из окружающей среды, действующий как свет от неба.
1.9. Визуализация:
Обратите внимание, как увеличилось время визуализации из-за тех изменений, которые мы сделали в настройках визуализатора.
1.10. Включите для источника света Omni опцию Area Shadow (размытые тени) .
1.11. Визуализация:
Теперь у нас есть размытые тени.
Изображение выглядит хорошо, но видна зернистость. Для уменьшения шума мы настроим параметры DMC-сэмплера.
1.12. В свитке DMC Sampler установите Noise threshold равным 0.001 .
1.13. Установите Global subdivs multiplier равным 10.0 .
1.14. Визуализация:
Обратите внимание как увеличилось время визуализации, но качество стало гораздо лучше. Теперь наша сцена готова для запекания.
Подготовка объектов для запекания текстур
2.1. Сначала мы выключим штамп Frame Stamp (свиток System). В противном случае мы получим его на на нашей запеченной текстуре, что не входит в наши планы.
2.2. Теперь откройте окно Render to Texture (0) из меню Rendering.
2.3. В поле Output укажите каталог, где будут сохраняться запеченные текстуры.
2.4. Выберите (Select) в сцене оба объекта (космический корабль и землю).
2.5. В группе Mapping Coordinates установите переключатель в положение Use Automatic Unwrap.
Посмотрите как оба объекта были автоматически добавлены в таблицу Objects to Bake (Объекты для запекания).
2.6. В свитке Output установите Size равным 512 , включите Enable (если выключено) и в поле Name введите имя для карты.
В действительности это будет суффиксом имени для ваших файлов запеченных текстур, которые будут созданы, а префиксом имени будут имена самих объектов в сцене.
Например: в нашем случае, запеченная карта для нашего объекта Ground будет иметь имя: GroundCompleteMap.tga. (видимо на иллюстрации ошибка: вместо VRayCompleteMap должно быть CompleteMap — прим. перев.)
2.7. В свитке Baked Material установите переключатель в Save Source (Create Shell) .
2.8. Установите переключатель в Create New Baked и в выпадающем списке выберите Standard: Blinn .
2.9. Установите переключатель в Keep Source Materials .
2.10. Теперь вернитесь в свиток Output и в выпадающем списке Target Map Slot выберите Self-Illumination .
Посмотрите как это было автоматически добавлено в таблицу.
Все остальные настройки оставьте как есть.
Теперь наши объекты готовы для запекания (визуализации).
Запекание текстур (визуализация)
3.1. Нажмите кнопку Render в нижней части окна Render to Texture.
3.2. Вы можете видеть, что baking process (процесс запекания) обрабатывает построчно объект за объектом, как они занесены в таблицу.
Первым начал визуализироваться (запекаться) объект Ground, за ним последовал Space_ship.
Загрузка новых запеченных материалов и их предварительный просмотр во вьюпорте
Shade + Edged Faces On
Shade + Edged Faces Off
Визуализация сцены с запеченными материалами
5.1. Откройте Редактор Материалов (M).
5.2. Для обоих материалов Shell Materials Choose установите переключатель Render в Baked Material .
5.3. Выберите источник света Omni и выключите его. В действительности мы даже можем его удалить из сцены, и визуализация при этом останется такой же, поскольку все освещение уже запечено в текстуру.
5.4. В настройках V-Ray выключите GI , Environment (Skylight) и Default Lights .
5.5. Визуализация:
Обратите внимание на время визуализации. На шаге 1.14 у нас было 4 мин 36 сек. Сравните с 8.6 сек сейчас. Это происходит потому, что с запеченными текстурами V-Ray не производит каких-либо вычислений освещенности. Вы можете даже переключиться на встроенный в 3ds Max визуализатор Scanline и по прежнему получить тот же результат.
Имейте ввиду, что вы можете анимировать камеру и визуализировать целую анимацию с пролетом камеры (fly-trhough animation) с очень малым временем визуализации на один кадр.
Замечания
Мы покажем вам другой метод, который дает абсолютно такой же результат, как показанный выше. Это касается шагов с 2.7 по 2.10.
Поскольку материал VRayMtl не поддерживает карту Self-illumination , мы будем использовать материал VRayLightMtl. Сгенерированные карты запеченных текстур будут автоматически помещены в слот Texmap . Затем, для предварительного просмотра получившихся запеченных текстур, вы должны повторить шаги с 4.7 по 4.11 (конечно помня о том, что тип новых материалов VRayLightMtl).
В следующей части урока по запеканию текстур вы научитесь как запекать только определенные элементы визуализации (например только освещенность или GI).
Перевод © Black Sphinx, 2008-2011. All rights reserved.
Запекание визуализации¶
Запекание – в общем случае, это акт предварительного вычисления чего-либо для того, чтобы ускорить последующий процесс. Визуализация с нуля, в зависимости от выбранных вами параметров, занимает много времени.Поэтому Blender позволяет «запечь» некоторые части изображения, чтобы сократить время визуализации выбранных объектов. После нажатия на кнопку «Визуализация» вся сцена отрисовывается намного быстрее, поскольку не нужно пересчитывать цвета запечённых объектов.
Запекание создаёт двумерные растровые изображения полисетки отображаемой поверхности объекта. Эти изображения могут быть повторно спроецированы на объект при помощи UV-координат. Запекание производится для каждой полисетки индивидуально и может быть выполнено только при наличии UV-развёртки у полисетки. Хотя оно и требует некоторого времени для настройки и отрисовки, оно сильно экономит время основной визуализации. Если вы отрисовываете длительную анимацию, время, потраченное на запекание, может быть гораздо меньше времени, требуемого на визуализацию всех её кадров.
Используйте запекание для решений, интенсивно использующих свет и тень, например, для AO или мягких теней от ламп-областей. Если вы запечёте AO для всех основных объектов, вам не придётся включать его при полной визуализации, что сэкономит вам время отрисовки.
Use Full Render or Textures to create an image texture; baked procedural textures can be used as a starting point for further texture painting. Use Normals to make a low resolution mesh look like a high resolution mesh. To do that, UV unwrap a high resolution, finely sculpted mesh and bake its normals. Save that normal map, and Mapping (texture settings) the UV of a similarly unwrapped low resolution mesh. The low resolution mesh will look just like the high resolution, but will have much fewer faces/polygons.
- Можно значительно снизить время визуализации.
- Рисование по текстуре становится проще.
- Уменьшение количества полигонов.
- Повторяющиеся визуализации выполняются быстрее, что кратно увеличивает экономию времени.
- Объект должен иметь UV-развёртку.
- Если запекаются тени, источники света и объект не смогут перемещаться друг относительно друга.
- Большие текстуры (например, с разрешением 4096×4096) могут занимать много памяти, в результате чего визуализация будет не быстрее прямого решения «в лоб».
- Для создания развёрток, запекания и сохранения файла с последующим примененим текстур к каналам требуется ручной труд.
Параметры¶
Режим запекания¶
Полная визуализация¶
Запекает все материалы, текстуры и освещение, за исключением бликового и подповерхностного рассеивания.
Ambient Occlusion¶
Запекает ambient occlusion, как указано в панелях «Окружающая среда (мир)». Игнорирует все источники освещения в сцене.

С нормализацией Нормализация без использования настроек материала.
Тень¶
Запекает тени и освещение.
Нормали¶
Bakes tangent and camera-space normals (among many others) to an RGB image.

Пространство нормалей
Нормали могут быть запечены в различных пространствах:
Камера Метод по умолчанию. Окружающая среда (мир) Нормали в координатах объекта, зависящие от преобразований и деформации объекта. Объект Нормали в координатах объекта, не зависящие от преобразований объекта, но зависящие от его деформации. Тангенс Нормали в координатах касательного пространства, не зависящие от трансформации или деформации объекта. Это пространство – новое умолчание и верный выбор в большинстве случаев, поскольку такая карта нормалей так же может использоваться для анимированных объектов.
В материалах в настройках изображения текстуры могут быть выбраны те же самые пространства под существующей настройкой Карта нормалей. Для получения правильных результатов, данная настройка должна совпадать с настройкой, используемой для запекания.
Текстуры¶
Запекает только цвета материалов и текстуры, без затенения.
Смещения¶
Так же как и при запекании карты нормалей, при помощи параметра Выделение к активному можно запечь карты смещений с высокополигонального объекта в развёртку для низкополигонального объекта.

С нормализацией Нормализация на расстояние.
When using this in conjunction with a Subdivision Surface and Displacement modifiers within Blender, it is necessary to temporarily add a heavy Subdivision Surface Modifier to the „low-res“ model before baking. This means that if you then use a Displacement Modifier on top of the Subdivision Surface, the displacement will be correct, since it is stored as a relative difference to the subdivided geometry, rather than the original base mesh (which can get distorted significantly by a Subdivision Surface). The higher the render subdivision level while baking, the more accurate the displacements will be. This technique may also be useful when saving the displacement map out for use in external renderers.
Излучение¶
Запекает цвета излучения или свечения материала.
Альфа¶
Запекает альфа-значения (прозрачность) материала.
Цвета отражения и Интенсивность отражения¶
Запекает цвета отражения или значения интенсивности отражения.
Цвета бликов и Интенсивность бликов¶
Запекает цвета бликов или значения интенсивности бликов.

Дополнительные параметры¶
Очистить Если параметр включён, очищает изображение выбранным цветом фона (по умолчанию это чёрный цвет) перед запеканием визуализации. Отступ Baked result is extended this many pixels beyond the border of each UV «island», to soften seams in the texture. Разбиение Фикс Разбивать квадраты по правилу (0, 1, 2) (0, 2, 3). Fixed Alternate Разбивать квадраты по правилу (1, 2, 3) (1, 3, 0). Автоматический Разбивать квадраты для минимизации искажений при запекании. Выделение к активному
Включение запекания информации с других объектов на активный объект.
Расстояние Controls how far a point on another object can be away from the point on the active object. Only needed for Selected to Active. A typical use case is to make a detailed, high-poly object, and then bake its normals onto an object with a low polygon count. The resulting normal map can then be applied to make the low-poly object look more detailed. Погрешность Bias towards further away from the object (in Blender units).
Полисетки должны быть видимы при визуализации
Если полисетка не видима при основной визуализации, например, потому что она исключена из визуализации в «Структуре проекта», либо к ней применено дублирование вершин, она не сможет быть запечена.
Рабочий процесс¶
- In a 3D View editor, select a mesh and enter UV/Face Select mode.
- Unwrap the mesh object .
- В редакторе UV/изображений либо создайте новое изображение, либо откройте существующее. Если ваш 3D-вид настроен на отображение в режиме текстур, вы должны увидеть изображение, спроецированное на полисетку. Убедитесь, что выбраны все грани.
- In the Bake panel at the bottom of the Render menu, bake your desired type of image (Full Render, etc.).
- Когда визуализация будет завершена, Blender заменит исходное изображение на запечённое.
- Сохраните изображение.
- Apply the image to the mesh as a UV texture. For displacement and normal maps, refer to Bump and Normal Maps . For full and texture bakes, refer to Textures .
- Уточните изображение, используя вышеописанный процесс, либо украсьте его Texture Paint или во внешнем редакторе изображений.
© Copyright : This page is licensed under a CC-BY-SA 4.0 Int. License.
Запекание текстур. Baking
Baking, или запекание текстур — это процесс получения информации от high-poly модели и создание на ее основе текстурных карт, которые перенесут эту информацию на low-poly модель при помощи её UV развертки. Это часть процессов оптимизации моделей для игр, и она очень важна, так как это хороший способ сохранить внешний вид модели при меньшей нагрузке на движок во время рендера и на игровые компьютеры/девайсы игроков. Давайте разберемся с тем, как происходит этот процесс.
1K показов
1K открытий
Подготовка к запеканию
Простая High-Poly модель
Она состоит из двух крупных элементов — куба, и параллелепипеда. Так же на ней есть элементы поменьше — заклепки и болты. Все они достаточно детальны и имеют фаски.
Floaters. Парящая (летающая) геометрия
Обратите внимание на маленькие элементы модели — они являются отдельными и размещены над поверхностью куба. Эти элементы называются floaters — иначе говоря парящая геометрия (или летающая, суть от этого не меняется). Обычно это заклепки, болты и схожие с ними по габаритам элементы. Это довольно универсальная техника и после некоторой практики вы увидите, как много элементов можно запечь таким образом.
Из статьи про Averaged normal мы уже знаем как работают нормали при запекании — процесс напрямую связан с их направлением. В случае с парящей геометрией на плоскости, она будет запечена по направлению нормалей Low-Poly этой плоскости. Далее мы увидим это на примере. Парящая геометрия это важный инструмент, его применение ускорит вашу работу. Гораздо проще сделать подобный элемент отдельным, а не врезать его в остальную модель. Но как и всегда — все зависит от конкретной ситуации.
На примере видно, что каждый элемент находится на некотором расстоянии от поверхности и имеет отступы параллельные этой поверхности. По этой причине на виде сверху они выглядят так, будто врезаны в куб и не имеют видимой границы, при условии если их vertex нормали идентичны. И, соответственно, также будут выглядеть на карте нормалей.
Еще пара моментов, на которых стоит заострить внимание:
Размеры фасок — скосов и закруглений модели. Узкие фаски будут плохо читаться после запекания и стоит делать их пошире, часто фаски стоит утрировать — делать больше чем на реальных объектах. Крупная фаска делает модель более читаемой на расстоянии, лучше отделяет друг от друга отдельные части целой модели.
Скосы геометрии — модель может иметь выступающие элементы и углубления — если делать такие элементы под прямым углом относительно плоскости, из которой они выходят, то в результате они плохо запекутся и не будут читаться.
Пример разного типа фасок
Обобщенный пример того, как делать не надо и к чему стоит стремиться.
В остальном при создании high-poly для запекания надо ориентироваться на ее внешний вид и правильность топологии. Также важно стараться с самого начала закладывать в ее форму будущую low-poly модель, прикидывать что и как вы будете запекать и, в дальнейшем, красить. С опытом вы начнете лучше понимать такие детали и рабочий процесс станет проще и быстрее.
На этом закончим с High-Poly, далее нам необходима Low-Poly модель, которая примет на себя информацию при запекании.
Как видите, разница с high-poly большая. Давайте разберемся с ней и поймем, почему она так выглядит и в чем заключалась подготовка к запеканию. Мы не станем касаться тонкостей создания геометрии low-poly, это тема для отдельного разговора. Предположим, что мы уже провели основную работу и сосредоточимся на последних этапах.
Важный момент готовой low-poly — это ее UV развертка. От того как вы ее сделаете будет полностью зависеть финальный результат запекания и внешний вид модели. Также это полезный инструмент для оптимизации модели и упрощения работы с ней. На деле ее функционал в разы шире, но в этот раз нас интересует запекание.
UV развертка
По сути, UV развертка это набор плоскостей составляющих вашу Low-Poly, развернутых и размещенных в 2D пространстве по определенным правилам. Хороший пример — это разобранная картонная коробка. Оси этого пространства называются U и V. U — горизонтальная ось, V — вертикальная.
UV развертка позволяет корректно проецировать на модель текстурные карты учитывая ее геометрию. Этот процесс называется Mapping. Именно UV развертка отвечает, в частности, за корректное запекание с High-Poly и формирование правильных финальных текстурных карт. Сам процесс UV развертки достаточно индивидуален и понимание деталей приходит с опытом. Суть UV в следующем.
Оранжевая рамка это область UV пространства — квадрат разбитый на 16 клеток, в нижнем левом углу точка начала координат, или 0. Его стороны задаются стандартным разрешением — 1024х1024, 2048х2048 и.т.д.
Разрешение UV пространства определяет разрешение текстуры на UV развертке. Внутри этого пространства размещаются те самые элементы развертки. Когда UV пространство доходит до краёв от 0 до 1 — происходит повторение и новый отсчет от 0 до 1. На схеме это серые клетки по краям. Таким образом UV пространство дублируется до бесконечности во всех направлениях. Это называется tiling, повторение — текстурные карты в каждом таком дубликате будут повторять изначальное UV пространство. С этим связана такая возможность, как применение бесшовных (тайловых) текстур, но об этом в другой раз. В этот раз мы поговорим о таком использовании UV пространства как overlap (перекрытие). Это напрямую касается запекания и подготовки к нему.
Посмотрим на схему — на UV есть часть текстуры (квадрат). Под воздействием повторения она будет копироваться до бесконечности во всех направлениях и находиться точно на том же месте. Это дает нам возможность схитрить при создании Low-Poly.
Предположим, что у нас есть некий относительно крупный элемент имеющий отдельную low-poly с готовой разверткой.
Теперь предположим, что у нас есть два таких элемента и они совершенно одинаковы. Эти элементы можно запечь вместе и при этом сэкономить место на UV.
Каждый из них имеет свою развертку и каждая из них занимает индивидуальное место в квадрате 4х4. Как мы помним — это пространство ограничено от 0 до 1, и начинает повторяться. Следовательно, мы ограничены в количестве индивидуальных мест. Как при переезде при всем желании не получится запихать все в одну коробку, так и в случае с UV не получится разместить в один сет все, что захочется. Overlap — это способ, который позволяет при запекании (и в дальнейшем) переиспользовать текстурное UV пространство с одного объекта на другой или с одной стононы объекта на другую. Overlap помогает экономить место на UV. Чтобы применить Overlap, надо совместить развертки элементов точка в точку.
На примере видно, что выделен один куб, он станет копией. Его развертка накладывается на развертку исходника. Overlap сработает, так как эти элементы соответствуют друг другу на 100%. Важно, чтобы все стороны и их ориентация на UV совпадали — верх с верхом, правая с правой и.т.д.
После того, как вы убедились что все совпало — надо выделить и сместить развертку копии на соседнее UV пространство (по факту на любое — верх, низ, левое, правое, лишь бы не основное), иначе запекание пройдет некорректно, так как оба элемента будут восприниматься как главные и конфликтовать. Важно, чтобы развертка копии заняла точно тоже место, что оригинал. В maya (UV editor) смещение делается стрелками клавиатуры, это позволяет правильно сместить UV одним нажатием. Если вы верно совместили UV и не забыли отбросить копию, то запекание пройдет корректно, а копия примет на себя информацию исходника. А теперь представьте, что таких копий может быть 5-10-20, все они могут быть наложены на все тот же первый исходник, отброшены на соседний квадрат и будут принимать на себя информацию исходника, но при этом место на UV по итогу будет занимать только исходник. Выглядит сложновато, но на деле все не так страшно, достаточно немного практики.
Еще один важный момент, который стоит учитывать при создании UV, это padding (отступы).
На примере видно, что в UV пространстве есть 4 шела UV развертки — расстояния между ними отмеченные пунктиром, это и есть отступы (Padding). Важно соблюдать их. Отступы влияют на то, как будут вести себя текстурные карты. Если не соблюдать отступ от общих границ UV развертки, то при запекании в этих местах будет артефакт. Если не соблюдать отступы между UV шелами — края UV шелов будут наползать друг на друга в определенных ситуациях. Хуже всего, если они будут залезать друг на друга, это 100% даст артефакт. Просто надо строго взять за правило, что всегда в любой ситуации должны быть отступы не менее 4 px между UV шелами и от границ UV развертки, а по хорошему чуть больше и это расстояние всегда должно быть на первом месте при компоновке, пренебрегать им не стоит.
Texel density. Разрешение UV пространства
Ранее мы коснулись темы разрешения UV пространства и его влияния на развертку. Параметр Texel Density является численным значением количества пикселей на единицу UV пространства. В нашем UV пространстве стороны 4х4 метра, итого 16 квадратов 1х1 метр. Заданы распространенные значения — разрешение 2048х2048, тексель 512px на единицу (в нашем случае метр). 512*4(метра в стороне)=2048 — одна сторона. Тексель распределяется равномерно. Вот чем это важно для процесса запекания — разрешение UV пространства влияет на то, какое разрешение текстур будет на запеченной Low-Poly. И это может как принести проблем, так и помочь в работе.
Существует такой инструмент как Checker — по сути это эталонная текстура-шаблон, по которой можно проверить равномерность текстуры на модели.
На примере куб с готовой UV разверткой, на ней установлен тексель 512px/m2. Включенный Checker позволяет увидеть как эта текстура выглядит на модели — как видите, размеры текстуры совпадают по всем сторонам.
Вручную уменьшим размер двух шелов UV развертки — обратите внимание, что модель осталась прежней, уменьшены именно UV шелы. На кубе видно разницу — на двух полигонах изменился размер текстуры. Это как раз то, за чем также необходимо следить при создании UV развертки — шелы UV должны соответствовать значению тексель и быть одинаковы по масштабу относительно друг друга. Но есть исключения. Если вы будете пытаться запечь мелкий элемент на вашей модели, то скорей всего на нём практически ничего не будет видно. Это можно компенсировать принудительно увеличив его UV шел на развертке. Но главное с этим не перестараться. Еще одно исключение, а скорее правило — во многих моделях есть более заметные и менее заметные участки модели. Пример — оружие от первого лица, в нем Texel Density на элементах ближних к камере (задняя часть оружия) будет выше чем, например, на нижней части, которую игрок чаще всего не видит, либо видит мельком. И в этом суть — за размерами UV шелов нужно следить и настраивать при необходимости. Для начала достаточно просто следить за верным Texel Density и не давать мелким элементам съедаться, а понимание придет с опытом.
Итак, мы разобрали несколько важных моментов, которые обязательно стоит учитывать и проверять на финальных этапах подготовки Low-Poly. Рассмотрели ряд примеров, узнали как оптимизировать модель на этапе UV развертки. Самое время вернуться к примерам с которых мы начали, и запечь их учитывая все изложенное выше.
Теперь можно разобрать low-poly понимая логику, по которой она готовилась к запеканию. Изначально модель была цельной и развернута на отдельные элементы.
Как видите, занято очень много места, больше половины. Иногда это необходимо, ведь элемент может быть центральным, важным и требовать больше детализации и уникальности. Но чаще всего в этом нет большой необходимости, а уникальности можно достигнуть разными путями. Поэтому в случае примера будет применен уже знакомый вам overlap, но по несколько иному принципу, хотя в конечном итоге точно такой же. Отличие будет в том, что мы применим overlap внутри модели, а не от одной к другой. Это было учтено при создании high-poly — в ней все сделано симметрично, с учетом того что будет overlap слева направо.
Для этого оба элемента были разрезаны строго по середине, это дало разрез на UV. Развертка с копией — красная половина, была совмещена с разверткой исходника — синей половиной. Красная половина была в процессе отзеркалена, это важный момент, который влияет на корректное совмещение двух половин и отражение текстур слева направо. Как уже говорилось выше — каждая сторона должна совпадать с исходником как по периметру, так и по ориентации. Сам объект при этом остается цельным, просто с петлей эджей в центре.
В результате мы получаем более оптимизированную развертку, она занимает гораздо меньше места, а при покраске приятным бонусом будет, то что надо будет покрасить только одну половину объекта и свести стык по центру. Обратите внимание, что на развертке соблюдены отступы. Как видите, этот процесс полностью идентичен примеру с кубами и подчиняется тем же правилам. А индивидуальные способы применения и научитесь видеть со временем и практикой.
Еще один момент который важно учитывать — это совмещение High-poly и Low-poly. Они должны максимально совпадать по габаритам. Обычно это хорошо видно если присвоить моделям разные материалы, которые будут иметь разные цвета. Также это можно контролировать через режим Wireframe.
И, собственно, если High-Poly выглядит приемлемо, а Low-Poly подготовлена на финальных этапах, то можно их запекать. Перед этим не забудьте еще раз все посмотреть, накинуть на High-Poly Subd (что это, можно узнать в статье про топологию), чтобы финально увеличить её детализацию, а на Low-Poly поставить правильно группы сглаживания и выполнить триангуляцию, так как лучше сделать это вручную, а не доверять автоматической триангуляции движков во избежание случайных конфликтов и артефактов.
Запекать модель будем в Marmoset Toolbag, так как это удобная, современная и легкая для понимания программа. Суть запекания везде остается одинаковой. Чтобы получить текстурные карты, необходимо по-отдельности экспортировать Low-Poly и High-Poly. Подойдет формат obj, если вы пропекаете модель без ID Map. При экспорте, этот формат содержит только геометрию, один материал и один UV Set. Далее открываем Marmoset и создаем в нем Bake Project. В него помещаем свои объекты, там все подписано. Важно с самого начала следить за именами своих файлов, так как это поможет вам не запутаться. Также в Marmoset есть удобный функционал, который позволяет загружать модель одним файлом и автоматически распределять сразу по нужным Bake группам High-Poly и Low-Poly модели, но для этого вам потребуется уже FBX формат и правильный нейминг ваших моделей в Outliner вашего софта, в котором вы работаете.
После этого нам понадобятся настройки запекания. Эта панель отображается, если нажать на Bake Project. В ней мы можем настроить параметры для запекаемых карт. Выбрать, собственно, какие карты будем печь, задать путь по которому будут сохранены карты бейка и провести общую настройку финального результата. Коснемся основных функций, которые точно надо будет настроить для запекания.
Samples — определяет качество сглаживания текстур. Тут все просто — чем выше значение тем лучше (но не всегда нужно), и тем дольше может идти процесс запекания.
Soften — применяет “смягчающий” фильтр к текстурам. Это позволяет сделать более плавные переходы плоскостей и скрыть некоторые недостатки. Обычно хватает небольших значений от 0.05 до 0.1. Можно пробовать разные результаты и смотреть разницу исходя из конкретной ситуации.
Padding — определяет, насколько запеченное содержимое может выходить за границы UV элементов. Это необходимо, в частности, для правильной работы Mip-Mapping — изменения детализации текстуры при увеличении расстояния до нее от камеры. Обычно хватает стандартных значений.
Разрешение текстуры — собственно, разрешение финальных текстур. Всегда кратно двум и максимальное будет 8192х8192. Выбираем в зависимости от задач и потребностей. Частым вариантом является 2048х2048, его и возьмем.
Еще необходимо указать путь для сохранения текстур. Примечание — Marmoset не воспринимает кириллицу, поэтому все файлы и папки надо подписывать латиницей.
Внизу панели находится список текстур отмеченных для запекания. Это очень обширная тема, мы не будем касаться её в этот раз. В текущей ситуации нам понадобятся карты Normal и AO (Ambient Occlusion), их хватит для просмотра финального результата. Для дальнейшей работы с моделью, в частности её окраски, понадобятся еще несколько карт.
Также в верхней части панели есть кнопки для скрытия\отображения High-Poly и Low-Poly, отображения результата запекания. Важно — при загрузке и распределении моделей по группам High-Poly по умолчанию скрыты.
Итак. Все правильно подписано, загружено, настроено, задан путь для карт и вы уверены в том, что UV развертка выполнена верно и соблюдены моменты о которых мы говорили выше. Запекать пока рано:) Потому что есть один момент, связанный с положением объектов относительно друг друга.
Пересечение объектов
На деле всё просто и пример это отражает — если элементы модели пересекаются при запекании и находятся в одной бэйк-группе, то программа пытается учесть это место стыка. И это приводит к спорным результатам — на местах пересечения будут артефакты.
Это происходит потому что пересекаются их Cage при бейке в одной Bake Group. Для того чтобы избежать этого, и получить равномерное запекание, применяется разнос элементов. Это можно сделать заранее в Maya, либо раздвинуть группы в Marmoset. В случае с Maya важно соблюсти совпадение Low-Poly и High-Poly. Мы раздвинем их в marmoset при помощи вкладки Transform, параметр Position.
Обратите внимание что элементы лежат в разных группах, но мы все равно их раздвигаем. Это связано с тем, что в противном случае на карте АО могут возникнуть небольшие артефакты. Обычно это можно подкрасить в photoshop, либо также избежать при помощи разноса. Опять же зависит от ситуации и назначения элемента.В нашем случае предпочтем чистое запекание.
Элементы модели раздвинуты
Результат — чистое запекание без артефактов. Также над моделью была проведена работа при помощи инструмента Paint Skew и настройки Cage (Paint offset в Marmoset). Что это, мы детально разбирали в статье Average normal, так что не станем повторяться. Здесь был применен точно такой же принцип — увеличен Cage, чтобы спроецировать целиком выступающие элементы, и проведена настройка нормалей Cage.
Обратите внимание на пример — настройки Paint Skew отображаются только на одной половине элемента — той, что являлась исходником при применении Overlap. Изменения на ней копируются на зависимую половину.
Возвращаем сдвинутый элемент на место и наблюдаем итог запекания — мы получили Low-Poly модель, на которую при помощи текстурных карт была перенесена информация с High-Poly. Все фаски широкие и четкие, летающая геометрия корректно отображается. Модель отзеркалена слева направо, что позволило нам освободить место на UV развертке, и по сути она готова к покраске, если допечь ещё несколько карт.
В принципе, это очень простой пример, а Low-Poly максимально простая. Но с его помощью мы рассмотрели важные стороны работы с запеканием и общий процесс от модели до финального результата. Давайте подытожим:
— Мы узнали как можно улучшить свою High-Poly, если обращать внимание на фаски и скосы и применять парящую геометрию.
— Разобрали основы того, что такое UV развертка, для чего она нужна и почему важна при финальной подготовке Low-Poly под запекание.
— Поняли что такое Overlap, как его применять и для чего.
— Запомнили что всегда нужно настраивать Padding между UV шелами.
— Учли что существует такое понятие как Texel Density.
— Прошлись по базовым настройкам запекания и коснулись некоторых сложностей, которые могут возникнуть в процессе.
Запекание это важный этап в работе над моделью для игры. И запечь её не так сложно, сложнее подготовить все к этому процессу. От качества подготовки зависит вся дальнейшая работа, так как запеченная модель, а тем более окрашенная, плохо поддается полноценному редактированию. По этой причине важно дотошно просматривать модель и UV развертку до финального запекания. Понимание того как это делается приходит с опытом и насмотренностью, как и на любом этапе создания модели. Всё с ходу, и за один раз учесть не выйдет, но чем внимательнее вы будете, тем большего числа проблем избежите. Это был очень простой пример запекания, и на деле у вас может быть в разы больше сложносоставных элементов, фаски на Low-Poly, огромные UV развертки с большим количеством Overlap. Наверняка вы рано или поздно столкнетесь с дорисовкой и монтажом готовых карт в Photoshop, чтобы сделать результат еще лучше. Но этот пример отлично показывает базовые принципы запекания, учитывая которые вы точно улучшите свой результат.
Большая идея: «Запекание»

«Запекание» представляет собой часто используемый термин в компьютерной графике (CG) когда речь идет о разработке компьютерных игр и традиционном рендеринге, не в режиме реального времени (Cycles или Blender Render). Но «запекание» приносит с собой определенные коннотации в реальный мир, которые вводят в заблуждение. Моя цель в этой статье состоит в том, чтобы согласовать этот термин и уточнить, что на самом деле означает запекание.
Различные типы запекания
Существует несколько различных видов запекания. Но прежде чем я начну перечислять и обсуждать их, хочу предложить общее резюме термина, то как оно относится к CG. Думайте о запекании, как о консолидации системы данных в упрощенной, более постоянной форме. Эта концепция обычно применяется тремя способами:
1. Запекание текстур
Наиболее распространенным способом является запекание текстур (или карта запекания). Преимущество запекания текстуры заключается в способности перенести характеристики 3D-геометрии на 2D-изображение.
Существует много признаков, которые могут быть запеченны, от изолированных атрибутов (Ambient Occlusion, нормали, цвета вершин, и т.д.) до их комбинаций, включая материалы, текстуры и освещение запеченные в одну текстуру. На изображенный ниже приведен пример последнего:

И это очень здорово! Сложные материалы и комплексное освещение могут быть объединены в одной текстуре и это является отличным трюком. Вы, наверное, можете себе представить насколько полезным является этот метод для игр и других приложений реального времени. Но важно понимать, что это ограниченная статичная текстура, не динамическая. Другими словами, если вы переместите голову обезьянки, то тень от нее останется в том же месте, где и была, вместо того, чтобы обновляться в режиме реального времени, как это происходит во время рендеринга в окне 3D-вида с помощью движка рендеринга Cycles. Таким образом, данная методика ограничена, хотя и чрезвычайно полезна при грамотном использовании.
В дополнение к запеканию результатов визуальных характеристик, таких как освещение и материалы, мы можем также аппроксимировать геометрию высокого разрешения на низкополигональную модель благодаря запеканию нормалей. Это экономит огромные ресурсы за счет незначительных различий воспринимаемых между низким и высоким разрешениями. Опять же, вы можете себе представить, сколько выгоды от данной техники получают игры. Вот пример:

Наконец, запекание некоторых атрибутов может помочь в процессе разукрашивания текстуры. Например, вместо того, чтобы вручную рисовать темные области в щелях объекта, вы можете запечь текстуру окружающей окклюзии (AO) и она все сделает за вас. Точно также, если вы хотите создать эффект потертости на краях объекта, можно запечь текстуру цветов вершин (dirty vertex colors). И таких примеров еще можно привести огромное количество.
2. Запекание анимации / симуляции
Та же идея консолидации системы данных в упрощенной форме продолжается в анимации и симуляции. Если подумать о ключевых кадрах анимации персонажа, то существует огромное количество работы, которую должен выполнить компьютер, чтобы мы в итоге могли увидеть результат. Риг персонажа со всей своей иерархией, ограничителями и деформациями мешей вместе с сотнями или даже тысячами ключевых кадров, каждый из которых имеет собственный тип интерполяции. Это очень много работы.
Существует несколько способов упростить все это с помощью запекания. Во-первых, в Blender вы можете выполнить операцию под названием «Bake Action». Это просто добавляет ключевой кадр для всех преобразований каждой кости для каждого кадра анимации. Хотя это может показаться «не особо то и проще», это, на самом деле, упрощает анимацию, так как она больше не зависит от ограничителей костей и других реляционных зависимостей. Bake Action также служит своеобразным «блокировщиком» анимации, что позволяет сохранить ее целостность.
Если пойти еще дальше, то анимация может быть запечена в геометрическую последовательность или «кэш», что окончательно избавляет нас от рига персонажа. Итак, представьте, что вы на 100% довольны своей анимацией и готовы перейти к следующей стадии, а именно стадии рендеринга. Очень удобно избавиться от ненужных расчетов комплексного рига в обмен на чистую последовательность геометрии. Таким образом, ваша сцена не загромождена тоннами ключевых кадров, которые никогда не будут изменены — потому что вы на 100% довольны результатом, не забывайте об этом. Вы можете просто сосредоточитесь на освещении и рендеринге анимированной геометрии, которая еще и будет немного быстрее проигрываться, так как компьютер не должен рассчитать все тонкости рига. В Blender это стало возможным с помощью экспорта кэша в формат .MDD и модификатора Mesh Cache.

Эффекты симуляции, такие как: огонь, дым, частицы и ткань также могут быть запечены. Это по сути тоже самое, что и кэш для анимации мешей. Симуляция требует много расчетов (значительно больше анимации) и, за исключением, некоторых случаев, она никогда не работают в режиме реального времени. Таким образом, чтобы увидеть созданный вами эффект на полной скорости, вы должны сначала запечь его. По умолчанию кэш храниться в оперативной памяти компьютера (RAM), но также он может быть сохранен на жесткий диск. Пример запекания симуляции ткани вы можете видеть на изображении справа.
3. Запекание света
Этот тип запекания более специфичен для игровых движков. Но так как игры тесно связаны с более широкой областью компьютерной графики, я думаю, что будет уместно коснуться еще одного варианта термина «запекание».
Целью в данном случае является сохранение ресурсов, поэтому игра должна работать настолько эффективно, насколько это возможно. Существует два типа освещения, которые могут использоваться для создания игр: статичное и динамическое. Динамическое освещение реагирует на все изменения в сцене, такие как смещение тени и информация о материале, на который они падают. Статичное освещение является стационарным и может быть исключено из расчетов динамического освещения для экономии ресурсов.
Мобильные и веб-игры часто используют запеченные карты света, которые предоставляют информацию об освещении всей сцены или конкретного уровня игры. Это означает, что вы можете создать хорошо освещенные места лишь за незначительную часть стоимости (ресурсов) динамического освещения. При запекании карт света, как статичное, так и динамическое освещения могут быть использованы одновременно, чтобы создать более реалистичную среду.
Unity использует систему светового зонда которая позволяет не статичному (анимированный или динамический) объекту получать информацию из запеченных карт света, что позволяет сэкономить ресурсы с их помощью при симуляции динамического освещения.
- Fundamentals of Texturing
- Texturing and Shading a Stylistic Character

























