Проблема с созданием карты нормалей для лоу-поли модели.

Автор
Сообщение
Активность: 0
На сайте c 22.01.2016
Сообщений: 2

Всем доброго времени суток.

Появилась у меня проблема при создании карты нормалей для лоу-поли модели.  

Для начала я пожалуй разъясню всю ситуацию:  

Работаю в 3ds max

Есть лоу-поли модель экспортированная из игры для PSP. То что она из PSP я не просто так упоминаю - модель низко детализирована (по меркам современных игр конечно же). Собственно её я использую в качестве рефа:

3cc3109bd0d4f9c1ccb7b9d62faabdc7.jpg

8e376d3952d2b546f92bedae0428b8dc.jpg

Моя цель сделать такую-же модель, но в другом костюме. Так как с моделированием гуманоидов я абсолютно не знаком, решил для начала замоделить ПОЛНУЮ копию рефа, чисто для тренировки.  

Мой план был примерно таков:

1) Смоделировать лоу-поли модель как на рефе.

2) Затем сделать хай-поли и немного детализировать элементы модели.

3) Сделать развёртку для лоу-поли.

4) Запечь карту нормалей с хай-поли на лоу-поли.

5) "Раскрасить".  

Итак, я замоделил лоу-поли торс:

b54eaf53d3ec95055ad3d5d705737412.jpg

В моих планах "торс" у модели должен быть "гладким", как и на рефе (первые два скрина). То есть героиня и так сама по себе гладильная доска, но на модели не должно быть даже рельефа груди/ремней. В моих планах этот "рельеф" будет достигаться картой нормалей.  

Я много уроков видел где детализация хай-поли моделей достигается последующей лепкой и детализацией их в ZBrush, и сначала была мысль и ремни для хай-поли версии слепить там же. Но то ли я, будучи полным нулём в ZBrush, не могу "слепить" ремни ибо навыков не хватает, то ли просто такую "чёткую" вещь как эти ремни слепить в браше довольно трудно - вообщем сделать этого я не смог.

Поэтому, ремни я решил замоделить в максе.  

Итак, я замоделил ремни на торсе.

edbf00f72a8f8e1e82493bee55f84f4e.jpg

674c5bdf04a8888906e300482ba2f376.jpg

088591fa4bcd041b9c81380d30c4edff.jpg

Их я замоделил ОТДЕЛЬНОЙ моделью поверх торса.

После моделлинга, сделал текстурную развёртку для самого торса:

bd446b580f20e0e9d92e7e9d5118e387.jpg

Решил что этого хватит для запекания карты нормалей.  

Что я делаю дальше:

1) Экспортирую (.obj) торс в качестве low-poly модели.

290653f26aecfaa07393474a310362b7.jpg

2) Применяю TurboSmooth на модели ремней и торса (для увеличение полигонажа), затем экспортирую (.obj) их вместе в качестве high-poly модели.

56219cf2a4377484b22e7d55faff2dd9.jpg

3) Иду в xNormal и запекаю карту нормалей

65683769fbbb07ca5795253a46ddd416.jpg

И получаю этот треш на выходе:

52c4c27147141685d83243c2cec81d1c.jpg

Как видите - на карте ремни падают "внутрь" торса, хотя в этих местах сами модели даже не соприкасаются.   

Почему я расписал так много текста?

Я не уверен на каком этапе может быть ошибка, возможно сам принцип работы был мною выбран неправильно. Возможно я не знаю необходимых основ - меня ничему этому не учили, всё находил в интернете сам. Куда копать? Что я сделал не так? Где ошибся?

Надеюсь на вашу помощь и/или советы. Спасибо.

На сайте c 24.06.2014
Сообщений: 4546

Чет я вообще не вижу ни одного упоминания Кейджей в вашем посте. Пятна характерны для проблемы связанной с пересечением кейджа и High-Poly/Low-Poly. Да и вообще на этом этапе можно запороть все качество карты нормалей, ведь с кривым/раздутым кейджом будут - пятна/искажения/артефакты.

Вы кейдж то делали в xNormal-вьюпорте или отдельно моделили его в 3Ds Max а потом через плагин экспортировали в xNormal ? В тех местах точно кейдж не пересекается и не 'кучерявит' геометрию ?

P.S. Edge Padding в 16 пикселей. Фига-себе, а зачем так много ? AA - 1 ? Ну вы конечно сэкономите немного времени на просчете но карты нормалей быстро считаются, лучше уж х4 поставить но подождать на 2 минуты дольше.

Активность: 0
На сайте c 22.01.2016
Сообщений: 2

Цитата Earanak:

Чет я вообще не вижу ни одного упоминания Кейджей в вашем посте.

Вы кейдж то делали в xNormal-вьюпорте или отдельно моделили его в 3Ds Max а потом через плагин экспортировали в xNormal ? В тех местах точно кейдж не пересекается и не 'кучерявит' геометрию ?

Каюсь - понятия не имею о каком Кейдже идёт речь. Слышал об этом термине и видел подобный параметр в xNormal, но не думал что он нужен в моём случае.

Те несколько уроков о запекании нормалей которые я видел в сети не используют Cage, там лишь хай и лоу-поли модели "кладутся" в xNormal, после чего получалась вполне сносная карта нормалей и Ambient Occlusion.

===========

upd: Посмотрел я что за зверь этот "кейдж во вьюпорте", поигрался с ползунками. В результате:

1) Изначально кейдж был размером примерно с лоу-поли модель:

71f6ee121a0a2b6a254dc6d7f3a53b21.jpg

2) Я во вьюпорте "раздул" его до того размера чтобы он накрывал собой ремни:

2664328071999ce95d7486fe122a25eb.jpg

3) Нажал Save Meshes, сохранил под рандомным именем, после чего подтвердил вот это вот "авто-применение к мешу":

9d423bb833b07bbd6a48482d759fa6b8.jpg

4) Возле лоу-поли модели поставил галочку Use cage

Запёк карту. Результат:

b8a094d136dd2926a399e27add94ff89.jpg

АЛИЛУЯ!

Наконец ремни никуда не проваливаются. Догадываюсь что я пропустил множество нюансов и с Cage не всё так просто, но главное что наконец таки дело сдвинулось с мёртвой точки.

Огромное спасибо!

На сайте c 24.06.2014
Сообщений: 4546

Да все верно вы сделали ! Cage - просто необходимо использовать при запекании AO/Normal и других карт. В любом софте, будь то 3Ds Max, Maya, Blender3D, xNormal, XSI(Softimage) - не важно. Все эти программы поддерживают Кейджи которые призваны чтоб избавиться от артефактов, искажений.

Несколько нюансов :

1.) Очевидно что Кейдж не должен пересекаться с Low-Poly/High-Poly. Иначе артефакты.

2.) Количество полигонов и топология Кейджа должна на 100% соответствовать Low-Poly модели.

3.) Кейдж должен максимально плотно прилегать к Low-Poly/High-Poly (но не пересекаться с ней). Если его сильно 'раздуть', то есть чем дальше будет поверхность кейджа от поверхности геометрии - тем больше будет искажений (потянутостей, складок, вмятин, наложения деталей друг на друга).

4.) Если вы запекаете High-Poly на элементарную Low-Poly, например на Plane/Box/Сферку, или что-то совсем простенькое типа цилиндра - не обязательно использовать Кейдж. Почти в любом софте для бейка есть настройка по типу xNormal-а - 'Maximum ray distance' которой можно регулировать автоматическую генерацию кейджей. Придется поэкспериментировать, да... но это как запасной и халтурный вариант.

5.) В особо сложных ситуациях (изредка) приходиться вручную тягать/править кейдж, подгонять его. Но порой и этого не достаточно. И легче пару раз перерендрить результат с своим кейджем, с автоматическим, с автоматическим но подкрученным ray-distance. А потом из 3-4 результатов склеить один нормальный вырезая проблематичные места у каждого из вариантов в Photoshop-е. Так делают часто и это нормально.

P.S. По xNormal/Бейку/Текстурингу, и многим моментам рекомендую урок от Character-Артиста с Blizzard-а "Hai Pan", курс называется — "3D Character Art for Games ". Там 6 частей, ну первые 2-3 не обязательно смотреть там про ZBrush/пропорции и дизайн. Все остальное - четко структурированная и концентрированная информация по всем этим делам. На торрентах этот курс уже слит если что.

Читают эту тему: