Запекание нормалей в 3DS Max

Всем привет! В этом мини уроке речь пойдёт про запекание нормалей с высокополигональных объектов, стандартными средствами 3DS max. На создание этого урока меня вдохновила тема на форуме: https://3ddd.ru/forum/thread/show/problema_s_zapekaniem_normals_map  

Это моя первая статья на 3DDD так что не судите строго.

Итак что мы имеем: 2 вида гаек, один высокополигональный переименуем его в Hi:

и 2-й вид низкополигональные модели, их 3 штуки для 3-х способов, переименуем их в LowLow_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  

Комментарии (56)

0
Di06
Часто стримишь?
+4
Alexsaltovsky
Сейчас взял перерыв на пару недель так как не дома, но со следующей среды войду в привычный ритм, то есть почти каждый день.
0
SOOSH
Спасибо, Полезно!
+27
Marl.kuznetsov
Скажите пожалуйста, вы когда запекаете нормали, то какая температура и на сколько минут ставите?
+2
Aeroslon
Вот тоже очень интересен этот вопрос!
+2
Alexsaltovsky
По аналогии с этим)https://youtu.be/4CSyhL8NXHc?t=31 
0
MHD3DART
Thank you so much for sharing this article.
But I think I need to try and try.)
+3
AlexHappy
А где резьба?
+5
StunBreaker
А в этом случае работает картинка с мальчиком из советского мультфильма )
0
Alexsaltovsky
https://i.imgur.com/FZXkdvf.png - вот с резьбой.
+2
sky_line
Её не нарезали))
0
пек
отлично
0
scion
Чет ты мудришь с Hard Edge, абсолютно не нужные манипуляции.

У тебя назначена 1 группа сглаживания на всю гайку ( она стала похожа на бублик), из-за этого с артефактами снялась нормалка вначале.

Назначь грамотно группы сглаживания (в твоем случае можно Auto) и только потом снимай нормальку.
+2
Alexsaltovsky
Дочитайте до конца, я сделал 3-мя способами, второй мой. 1-й способ советовали человеку здесь на форуме, я показал в чём его недостатки. Хард эджами, я по сути и назначаю группы сглаживания, а нужны они для того чтобы вертексные нормали были направлены в разные стороны, при этом на UV они разбиваются и вы получаете корректную и аккуратную карту.
+2
Sanyok3D
Было бы интереснее, если сравнивался запекание в Майе, 3ДМаксе, Блендре и Мармосете, Сабстансе с последующим выводом где качественнее, быстрее, удобнее
0
Alexsaltovsky
Быстрее и удобнее понятия субьективные, я запекал в сабстансе, 3ds max, xnormal и мармосете, качество веpде +- одинаковое
+1
monah62rus
качество возможно да а вот танцы с бубном везде разные, я к примеру отказался от запеканий в Максе, онли сабстанс, быстро и надежно.
0
Alexsaltovsky
На CG Allies почти все геймдевщики запекают в мармосете, очень хвалят, у меня проблем нигде не было, но только после того как я как правильно подготавливать геометрию, как правильно резать UVW и так далее
-1
monah62rus
я всегда в 98 процентов случаев делаю как первый ваш способ и выходит хорошо попробую скрины отправитьhttps://yadi.sk/d/VOnmg_vlVJId0w 
вот тут посмотрите и если хотите скачайте лоуполи модель, и повесте нормалку. Я приложил там все, посмотрите, это сделано первым способом 1 группой на все.
0
Alexsaltovsky
Но запекалось то в сабстансе. Верно?

Вообще если интересно я могу сделать ещё урок как это делать в xnormal(да им ещё пользуются), сабстансе и марвелоусе, а так же разобрать с какими проблемами можно столкнутся и как их решить.
0
monah62rus
Да в сабстансе, так как я с ним работаю непосредственно с начало его основания, печка там хорошая(лучше чем в максе) проблем не возникало. Ну для тех кто сам не пробовал уроки подойдут, я просто уже много прог искатал в поисках экономии времени и нервов для нормальной выпечки карт и последующего текстурирования.
0
Sanyok3D
В Икснормале как и Сабстансе запекание подобно чёрному ящику, что-то в нём происходит, кейдж толком не настроишь.
0
w0ka
В xNormal'e без проблем можно настроить cage. В 3d viewer'e...
0
albatr0s
был бы крайне интересен еще урок по запеканию не нормалмапы, а нормалей полигонов, как это делают например в форза моторспорт уже очень давно, где запеченные именно нормали, т.е. в edit normals они зеленые (кастомные)
0
Alexsaltovsky
Вы имеете в виду что то типа такого?https://i.imgur.com/sp085z7.png 
0
albatr0s
да, вроде такого
+1
Alexsaltovsky
Буду иметь в виду)
+2
monah62rus
а в этом случае разве что то нужно запекать? Это же просто нормали выставляются и все! Всего лишь заюзать бесплатный скрипт и все))http://www.scriptspot.com/3ds-max/scripts/improved-face-weighted-normals 
и все, главное что бы были фаски и одна группа сглаживания. это условия для его работы.И вот урок то как он работаетhttps://www.youtube.com/watch?v=G-K7WT9IIok 
0
albatr0s
именно, что запекаются, попробуйте вручную на модели автомобиля выставить нормали
ПС за скрипт спасибо, изучу
+1
Amiminoru
Так и выставляли, по крайней мере, когда мы делали на аутсорсе машины для gta 5, использовали метод с взвешенными вертекс нормалями.
0
albatr0s
с форзой все иначе там в качестве базы для моделинга использовали сканы автомобилей, возможно конечно у них какие то самописные софты для внутреннего использования, да и плотность сетки там не сказать что мидл поли, скорее ближе к хайполи с оговорками
0
monah62rus
https://constructidecepticon.files.wordpress.com/2014/11/consolemri_wire1.jpg вот пример такой работы на игре Ален изолейшен, та же механика.
+3
Alexsaltovsky
Я сам мучался с подобными вещами где то год назад после того как увидел ролик на ютубе, где обсуждали подобную технологию применимо к геймдеву, там рассказывали на примере кубика в Maya, в максе же что подобное удалось сделать путём наложения модификатора champher с указанными параметрами:https://i.imgur.com/QvaZuf2.png  Однако стоит сразу отметить что наложение ЛЮБОГО модификатора, в том числе Edit Normal всю эту красоту сбрасывает.

На счёт запекания, это скорее не запекание, а развесовка вертексных нормалей, на тот момент я нашёл вот такой скрипт:http://www.scriptspot.com/3ds-max/scripts/noors-simple-average-normals  . Как работает, сбрасываете группы сглаживания, выбираете полигоны которые не будут иметь сглаживания, и запускаете скрипт, и по сути получаете тоже самое что и в способе выше, и да с теми же проблемами. Применения данной темы в своей работе я не нашёл потому дальнейшее углубление в тему показалось бессмысленным
0
UFO
Хороший урок! удачи.
0
Meriutsa
Скажете, важно в каком движке запекать? И нужно ли ставить какой нибудь источник света или нет? как это повлияет на результат?
0
monah62rus
Свет при запекании нормал карты ненужен. По поводу движка запекания, пробуйте сами и найдите подходящий для себя!
0
Meriutsa
"1-е что необходимо сделать это установить источник освещения типа Skylight из свитка Standart. Затем выделить объект Low."
Почему необходимо тогда?
0
monah62rus
ну я не ставил никогда свет в максе, ибо не роляет он никак на нормалек, вот если печь там дифузку альбедо АО то да нужен свет Вот тут форумчанин делал видос для 3dddhttps://www.youtube.com/watch?v=3lUGKmlrLvE 
0
Alexsaltovsky
Да, это скорее привычка которая появилась при запекании карт АО и тому подобное, на карту нормалей свет не влияет. Надо будет поправить в уроке. А вопрос про движки имеете в виду Corona, V-Ray, Arnold или программы?
0
Meriutsa
Не, не программы, рендер движки.
0
Alexsaltovsky
Признаться честно V-Ray крашится при попытке запекания. На форуме так же писали что корона не умеет запекать. Так что лично я делаю запекание в скайнлайне.
0
monah62rus
Для нормал мапы достаточно стандарта за глаза, но если делать остальные карты(АО, Дифуз или еще какие где нужен расчет света) то подойдет Корона рендер.
+1
xt13r
запекание нормалей в максе это геморрой.
проще, быстрее и лучше - в бесплатном xnormal.
Или в substance painter - там вообще запекалка прекрасная))
+1
Alexsaltovsky
А в марвелоусе то вообще отвал бошки.
0
Sanyok3D
Как в сабстансе настроить режим сарфейс?
0
w0ka
А про настройку Projection options умолчали.
0
Alexsaltovsky
Ну это если сильно углубятся в тему. Понадобится напишу, мне не жалко)
+2
DoCentttt
А почему ты вводишь значение минус сто, если можно просто нажать reset в свитке cage? И ещё я бы дополнил урок настройками самой "печки" -https://clip2net.com/s/401dPFQ 

А именно - отключить фильтрацию, и включить глобальный суперсемплер хамерслей.

Ещё я бы уточнил, что полученную даным способом нормаль нужно инвертировать по игрек в пбр-движках, а в вирее - НЕ надо. Ну это так, технические нюансы, которые сберегут нервов) В целом норм урок.

А, ище. Я делал тесты. И тридмакс очень хорошо печет нормали, лучше чем сабстанс. Только в хардсюрфейсе - оружие, техника. Если органика, типа монстриков - то сабстанс справляется лучше.
0
Alexsaltovsky
Я обычно просто тяну за нижний треугольник у процентов, а после за верхний у amount, так мне кажется быстрее. А на счёт остального, я записал пожелания из комментариев, и сделаю дополнения чуть позже.
+3
dontpiter
запекать на гайки дело не хитрое.

Если кто интересуется темой есть довольно старая статья на рендер.ру https://render.ru/ru/articles/post/10701 
там всё разжёвано по полочкам.
+1
Radba
Скажите пожалуйста, я новичок в этом деле, и пока не понял, зачем это нужно? Зачем нужна развертка при моделинге, если текстуры и без этого можно наложить? Зачем нужно запекание? Спасибо.
+2
Alexsaltovsky
Текстуры не всегда можно наложить без развертки, к примеру возьмём какую-нибудь деревянную статуэтку, наложение Uvw map, не даст вам нужного результата, а uvw вполне.
Запекание же нужно для оптимизации модели, в основном сейчас используется в геймдеве. Обратите внимание сколько полигонов на высокополигональной гайке и сколько на низкополигональной, так вот с картой нормалей, низкополигональная гайка ничем не будет мало чем отличатся от высокополигональной.
0
Radba
Спасибо за ответ)
0
shizgara
Слово "запекание" всегда слушалось чем-то фантастическим. Спасибо за разьяснение.
0
tadamori
простите а есть урок как сделать такую гайку?)
0
Alexsaltovsky
Да скачайте мою, под уроком есть ссылка.