Всем привет! В этом мини уроке речь пойдёт про запекание нормалей с высокополигональных объектов, стандартными средствами 3DS max. На создание этого урока меня вдохновила тема на форуме: https://3ddd.ru/forum/thread/show/problema_s_zapekaniem_normals_map
Это моя первая статья на 3DDD так что не судите строго.
Итак что мы имеем: 2 вида гаек, один высокополигональный переименуем его в Hi:
и 2-й вид низкополигональные модели, их 3 штуки для 3-х способов, переименуем их в Low, Low_a1 и Low_a2, соответственно:
Итак 1 способ который предлагался в теме на форуме: Это запекание карты нормалей с единственной группой сглаживания и с развёрткой имеющей минимальное количество швов. Для этого выделяем объект Low, нажимаем на кнопку Smoth, панели Ribbon:
И получаем вот такую гайку:
Далее накидываем модификатор Unwrap UVW и выделяем грани которые будут являться швами, после чего нажимаем на кнопку Convert Edge Selection to Seams (Номер 1 на картинке), а затем нажимаем цифру 3 (режим работы с полигонами), Ctrl+A (выделить всё),после чего нажимаем на кнопку Quick Peel (Номер 2 на картинке).
Получаем вот такую развёртку:
Модель подготовлена! Теперь необходимо установить в те же координаты высокополигональную модель и наконец приступить к настройке.
1-е что необходимо сделать это установить источник освещения типа Skylight из свитка Standart. Затем выделить объект Low. (Вообще данный пункт не обязателен для запекания карты нормалей, ибо там не учитывается освещение, устанавливать источник освещения требуется только если с картой нормалей вы запекаете другие карты, к примеру АО, но так как я обычно запекаю несколько карт, данный пункт появился по привычке)
2-е. Нажать на цифру 0(вызов окна Render To Texture по умолчанию)на клавиатуре.
В открывшимся окне включить чекбокс Enable (номер 1 на картинке), этим чекбоксом активируется проецирование выбранного объекта на текстуру. Затем следует нажать на кнопку Pick...(номер 2 на картинке), в появившемся окне выбрать обьект с именем Hi (номер 3 на картинке), после чего подтвердить свой выбор нажав на Enter.
Далее выберите Use Existing Channel (номер 4 на картинке), таким образом вы указываете 3ds max что у вас уже есть развёртка после чего можете выбрать на каком канале находится нужная. Затем нажмите на кнопку Add...(номер 5 на картинке):
В появившемся окне выберите Normal Map (номер 1 на картинке), затем нажмите Add Elements (номер 2 на картинке) и установите Target Map Slot на Bump (номер 3 на картинке), после чего нажмите на кнопку 1024х1024 (номер 4 на картинке), это позволит вам выбрать разрешение будущей карты. Если размер вам не подходит можно указать его в соответствующем окне немного правее, ограничение - квадрат 8192х8192px.
Далее, если хотите, можете указать путь, формат и имя будущей карты нажав на кнопку со знаком ... рядом со слотом File Name and Type.
Здесь настройка завершена, однако не стоит закрывать окно, просто отодвиньте его чтобы не мешалось. Теперь выделяем объект Low и видим что появился новый модификатор Projection, открываем в нём свиток Cage, затем включаем чекбокс Shaded (это позволяет видеть границы запекаемого объекта, пересечение с которым приведут к появлению красных зон на будущей текстуре), затем в разделе Percent укажите -100 это позволит вам сбросить Cage до границ низкополигональной модели, а затем, поиграйте со значением Amount - вам потребуется установить такое значение чтобы граница между Low poly и Hi Poly моделью была минимальной, но при этом чтобы не было пересечений, если же подобными махинациями не удаётся достичь требуемого результата можно поработать с Cage на уровне вершин и полигонов выбрав соответствующую иконку в свитке Selection.
Далее возвращаемся в окно Render to Texture и нажимаем окно Render в самом низу. Сразу замечу что 3DS max не отображает карту которую рендерит, а отображает карту Diffuse слота даже если она не установлена на рендер, то есть если ваша высокополигональная гайка была красного цвета, то в окне вы увидите развёртку залитую красным цветом.
Открыв текстуру в фотошопе видим следующее:
Затем если мы подгрузим лоуполи модель с данной текстурой в Marmoset toolbag увидим следующее:
Как бы неплохо, но с косяками. Теперь перейдём ко второму, правильному, способу:
1. Выберите объект Low_a1, нажмите 2 на клавиатуре и выберите все те эджи которые, по вашему мнению, должны быть жёсткими, то есть иметь разные группы сглаживания по разным сторонам эджа. У меня вышло вот так:
2. Нажмите на кнопку Hard (номер 1 на картинке), это позволит вам получить эффект описанный выше.
3. Теперь нам нужно сделать развёртку делая швы аккурат в том месте где у нас проходят Hard эджи, для лучшего ориентирования включите их отображение кликнув по чекбоксу Display Hard Edges(номер 2 на картинке). Чуть левее вы можете выбрать цвет отображения Hard эджей.
4. Накидываем модификатор Unwrap UWV, выделяем все наши хард эджи, а также 1 грань внутри гайки. После чего нажимаем на Convert Edge Selection to Seams, а после на Quick Peel. Получив развёртку нажмите на кнопку Pack: Custom (подчёркнута на изображении ниже)
Данную развёртку можно упаковать и лучше, но для примера...
5. Повторяем все те же действия что и на 1 способе:
Нажав рендер получаем вот такую карту нормалей:
А подгрузив всё в мармосет вот такую модель:
Отлично!
Теперь эксперемента ради рассмотрим третий способ возьмём третью гайку Low_a2, повторим действия с хард эджами и накинем на неё развёртку от гайки Low, что получится? И так ли важна развёртка?
После всех махинаций получаем вот такую карту нормалей:
А в мармосете мы видим вот такую модель, с косяками на хард эджах:
Итак мы приходим к выводам: 1) можно использовать сколько угодно групп сглаживания 2) швы развёртки должны располагаться на хардэджах.
Всем спасибо за внимание!
Если возникнут вопросы пишите в коментариях, ЛС или во время моих трансляций на твиче: https://www.twitch.tv/alexsaltovsky
P.S. Про карту нормелей можно почитать здесь: http://wiki.polycount.com/wiki/Normal_map , если требуется перевод статьи, пишите - сделаю.
P.P.S. архив с материалами урока для закрепления (3DS Max 2016): https://yadi.sk/i/bRVRq23XeJbgng