Экспорт в 3ds MAX: Невероятное уменьшение полигонов

Спешу поделиться с вами формулой экспорта модели из Zbrush в 3dsMAX (или любой другой пакет 3-мерной графики). Хотя я уже размещал урок по экспорту (ссылка), но я столкнулся с проблемой, когда захотел проделать тоже самое со своей моделью PtyREX. Сам ПтиРЕКС (без наездника и аттрибутов - только его туловище) вышло чуть больше 6 миллионов полигонов. В процессе экспорта я сталкивался со сбросом "ювишек", зависанием компьютера и т.п. Поэтому я не остановился и продолжил поиски решения проблем. Первый способ, представленный мною намного легче, но и результат может быть лучше. Итак, поехали - 7 шагов на пути к совершенству !


Используемые инструменты:
1. Zbrush: Unified Skin, Decimation Master и UV Master.
2. UVlayout.
3. 3dsMAX smopthing groups.
4. xNormal.
5. Photoshop+nDo2.
6. Marmoset Toolbag (по желанию).
7. 3dsMAX + Vray.

6 000 000 -> 2 000 
Интрига!

Предисловие:
Для последующей работы понадобятся следующие нестандартные программы:
UVlayout, xNormal, nDO2, Marmoset Toolbag (по желанию). Необходимо их найти и установить.

I. Zbrush: готовая модель (tool).
1.1. Этот этап начинается тогда, когда вы закончили свое творчество и лепку из электронной глины, покрасили модель (polypaint) и хотите отрендерить в 3dsMAX. Я взял модель  ПтиРЕКСа (около 6ккк полигонов, полипейнт). Никаких UV координат у нее на данный момент нет. Изображение - одно из финальных рендеров в Zbrush. 
1.2. Экспортируем из Zbrush HI-poly модель (именуем Ptyrex_HP) в формат obj. Естественно, имя файла у вас должно быть свое. Я привел пример для того, чтобы в последующем понимать какие файлы и для чего использовать
1.3. Содаем копию упрощенной модели через Unified Skin (меню Tool). Устанавливаем значение Resolution от 384 до 512. Smooth - в зависимости от модели 1 или 2 или 3 .... Жмем Make Unified Skin
1.4. Переключаемся на вновь созданный tool.
1.5. Разворачиваем панель плагина Decimation Master. Для начала проводим анализ сетки (Pre-process Current). Затем выставляем значение % of decimation. Здесь хочу отметить, что вы настраиваете итоговую сетку, на которую будете натягивать карты (текстура, нормал...).
Жмем Decimate Current.
1.6. Получаем перелопаченную сетку. Если не нравится - Ctrl+Z.
 1.7. Используя еще один плагин UV Master делаем развертку модели. При помощи кнопки Flatten - можно посмотреть развертку (Unflatten - собрать обратно). Здесь я особо не заморачивался.
1.8. Экспортируем в obj с настройками (Включенная кнопка Txr гарантирует сохранение UVs в файл) Именуем файл как Ptyrex_LP (Low Poly).
На этом Zbrush можно закрывать (сохраняем файл проекта).

II. UVlayout: запекание развертки.
2.0. Для начала я не понимал значения UVlayout, т.к. вроде бы Zbrush сохраняет карту развертки в obj, но, как показала практика без этой программы дальнейшая процедура в программе xNormal, в которой запекаются текстуры, невозможна - она не видит развертку, созданную Zbrush.
2.1. Открываем UVlayout. Окно, сперва может показаться непривычным, но - это временно :) Нажимаем Load - справа появится окно проводника, снизу - некоторые настройки.
Нас интересует Edit. Выделяем в проводнике окне файл _LP, жмем Edit.
Жмем большущую зеленую кнопку Load.
2.2. Модель загружена и имеет границы развертки.
2.3. 1) Открываем меню Display
2) Жмем 3D, а затем UV и видим расклад развертки в плоскости.
Цветовые поля показывают нам где могут быть проблемы - где все очень красно - все очень плохо. UVlayout позволяет исправить ситуацию, но мы не будем углубляться так далеко (если есть желание - можно найти и изучить по это программе отдельные файлы справки).

Управление разверткой в UVlayout (вне данного урока):
 - наведение курсора на сплайн + "С" (удаление - Backspace).
 - ENTER разделение модели на 2 части.
 - наведение курсора на одну из частей + "D" - перевод 3-мерной в плоскость.
 - кнопка AutoFit - автоматическое размещение разверток в пределах границы квадрата.
 - наведение курсора на одну из частей + Shift+F, затем "пробел" - запуск процесса разворачивания. Еще раз "пробел" - остановка.
 - с зажатым "пробелом" и навигацией можно масштабировать, крутить и двигать части развертки.
 - Render - Save - сохранение развертки (+указать в конце пути в окне имя и расширение файла (.jpg) .

3) Сохраняем файл Save. Закрываем окно программы.
III. 3dsMAX: настраиваем группы сглаживания.
Этот этап чисто индивидуальный. Цель его - автоматически настроить группы сглаживания в низкополигональной модели так, чтобы было поменьше углов.
3.1. Выделяем все полигоны и очищаем группы - Clear All.
3.2. В настройке Autosmooth я поставил значение 60. В зависимости от модели.
3.3. Экспортируем _LP модель в obj. В настройках экспорта сохраняем текстурные координаты и группы сглаживания.
IV. xNormal: запекаем карты.
4.0. Окно xNormal напоминает медиаплеер, но, опять - не будем на это отвлекаться - нам важен результат. 
В данном случае в окне xNormal нас интересует 5 кнопок:
1) High definition meshes - определяем модель с многополигональной сеткой и полипейнтом, экспортированную из Zbrush.
2) Low definition meshes - определяем модель с низкополигональной сеткой и экспортированной на этапе 3 из 3dsMAX.
3) Baking options - настраиваем карты для запекания.
4) 3D Viewer - просмотр и корректировка наложения двух моделей, экспорт новых мэшей (HP, LP) модели.
5) Generate Maps - для запекания и экспорта карт.
4.1.High definition meshes:
а) ПКМ на таблице сверху - Add meshes - выбираем файл _HI.obj
б) Стоит обратить внимание - на снятие галочки Ignore per-vertex-color, т.к. именно сперва мы и будем запекать цветную текстуру.
в) Также по-умолчанию в программе я сразу настроил масштаб - 5.000 (внизу окна), т.к. это может помочь при генерации карт. Если масштаб не обновился в строке модели - кликните в окошке Mesh Scale и в ручную установите значение 5.000.
4.2. Low definition meshes:
а) ПКМ на строке - Add meshes - выбираем файл _LP.obj
б) Следует обратить внимание на масштаб (5.000) и установить галочку Use Cage.
4.3. 3D Viewer
а)  Жмем кнопку Launch Viewer.
б) Ждем генерации 3-мерного изображения.
Возможно, появится ошибка:
Для того, чтобы исправить проблему необходимо изменить драйвер.
в) Меняется он в самой программе. Открываем настройки:
г) Выбираем OpenGL.
д) Снова жмем кнопку Launch Viewer. Навигация в окне как в играх жанра "action" - передвижение с помощью кнопок WSAD, а ПКМ - управление камерой.
е) В окне мы видим модель. На самом деле в сцене присутствуют 2 модели HI и LOW поли.
HI-поли спрятана под LOW-поли. Задача "3D-вьювера" полностью покрыть HI-поли модель, так чтобы ее не было видно.
ж) 1) Жмем Show Cage - отобразится сетка. 2) Жмем Edit Cage - появятся дополнительные настройки:
3) Cage Opacity Gage Color - прозрачность и цвет сетки LP модели.
4) Изменение размера - глобальное экструдирование.
5) Настройки каждой точки в пространстве по осям координат
з) Выбираем точку (СКМ), которую хотим передвинуть для закрытия "дырок". Настраиваем ее положение при помощи ползунков.
и) Когда все манипуляции будут закончены нажимаем справа кнопку Save Mashes.
к) Далее действия по скриншотам (тип файла и автоподстановка):

л) Закрываем окно (кнопка слева внизу). Вы увидите, что программа в поля High и Low defenition meshes автоматически подставила экспортированные файлы из 3D-вьювера.
 м) Возвращаем обратно настройки драйвера - DirectX9.

4.4. Baking options:
 Переходим в раздел Baking Options.
Нам важны:
- папка и имя сохранение файла (при сохранении файла xNormal автоматически приставляет после вашего имени свои значения, соответствующие запекаемым картам).
- Размер файла - чем больше - тем лучше, но тем намного дольше рендерится.
- в разделе Maps to render для начала снимаем галочки, которые есть и устанавливаем галочку Bake highpoly's vertex color (помните я выше писал, что в разделе High defenition meshes мы сняли галочку  Ignore per-vertex-color. - это как раз для запекания основной цветной карты-текстуры).
- Сглаживание. Обычно я выставляю что-то среднее.
- Edge padding и Bucket size - это настройки сглаженности границ.
5) Жмем круглую кнопку Generate Maps - получаем запеченную текстуру (сохраняется автоматически в указанную папку:

6) Закрываем окно (close). Переходим в раздел High defenition meshes ставим галочку Ignore per-vertex-color, забываем об этой галочке :)
7) Обратно в окно Bake options. Снимаем галочку Bake highpoly's vertex color.
Далее - Ставим поочередно галочку Normal - запекаем, Ambient occlusion - запекаем.
Ура! Дождались!
Примечание: Справа от каждой опции есть кнопка с "троеточием" - это настройки. Можно поковырять (Совет: В Ambient Occlusion слишком много лучей "rays" приведут к плачевному состоянию вашего PC.)
8) Откладываем xNormal в сторону. Он нам больше не понадобится. Кстати, он сохраняет все настройки, поэтому в следующий раз после запуска нужно будет их очистить.

V. Photoshop+nDo2: генерируем и склеиваем итоговые карты.
Как оказалось, nDo2, работая в паре с Фотошопом (ФШ), - очень интересная программа, которая за вас делает всю черновую работу.
5.1. Открываем ФШ, загружаем полученные карты в слои, выставляем их как на скриншоте, придаем наложение для карты AO - multiply.
5.2. Дублируем слой с картой Normal в новый документ и оставляем как активное окно.
5.3. Запускаем nDo2. Если при запуске программа не соединилась с ФШ - ничего страшного в этом нет - закрываем это окно
5.4. Интерфейс nDo2 составляет 2 окна - слева окно настроек - справа - 3D превью (Навигация превью простая: ЛКМ - двигать, СРМ - крутить, скролл - масштабировать, ПКМ - двигать источник света). Нажимаем кнопку Convert.
5.5. Появится новое окно. Выделяем окошко AO. Нажимаем Active Doc.
5.6. После просчета появится новый документ (Ambient Occlusion) с несколькими папками со слоями.
5.7. Переносим его как новый слой в основной документ (Edit - Copy Merged ->Past).
5.8. Также в nDo2 на 3D объекте для просмотра появится отображение карты.
и возможность настроить тени (у кого нормально запустился nDo2. Если нет - карту можно откорректировать стандартными средствами ФШ).
5.9. Придаем новому слою (для наглядности его я назвал AO2 ) также режим наложения Multiply. Тени стали еще глубже.
5.10. Активизируем опять документ с картой Normal, разворачиваем nDo2 (если прежде он вам мешал и вы его свернули), жмем опять Convert, выбираем Cavity и жмем Active Doc.
5.11. Переносим получившийся слой в новом документе (серого цвета) в основной документ поверх слоев и придаем ему режим наложения Overlay. Обратите внимание насколько увеличились детали текстуры.
5.12. Проделаем еще один трюк для улучшения качества карты Normal.
Включаем отображение слоя карты Normal. Устанавливаем слой Cavity наверх.И видим чудо :)
Сохраняем как новую карту Normal для последующего использования как Normal Bump в 3dsMAX.
5.13. После некоторых манипуляций с корректирующими слоями я получил отличную диффузную карту.

VI. 3dsMAX: рендерим.
6.1. Теперь у нас все готово для того, чтобы использовать полученные карты в 3dsMAX на низкополигональной модели, что, я надеюсь, вы сможете проделать самостоятельно.
6.2. Импортируем файл в формате .sbm.
6.3. Создаем материал (для своей модели я использовал настройки для создания кожи).
6.4. В материал загружаем текстуры, настраиваем рендер и свет :)



VII. Заключение: Marmoset toolbag.
Заключительным шагом предлагаю бегло познакомится с программой, которая является отличным просмотрщиком 3D моделей со всеми необходимыми картами - это Marmoset toolbag.
Эта программа позволяет в реальном времени отобразить наложение запеченных карт.
Навигация в окне - с зажатой клавишей Alt: ЛКМ - крутим, СКМ - двигаем, ПКМ - масштабируем.
7.1. Загружаем программу, открываем файл __LP.obj (кнопка Open...) с низкополигональной сеткой. Если нужны настройки света - вкладка Light.
7.2. Во вкладке Material в соответствующие поля загружаем карты (понимает форматы .tga, .psd), также ниже настраиваем блики, отражение.
7.3. Вкладка render - настройки отображения.

Послесловие.
Итак, после нелегкого пути, мы добились-таки своей цели. Используя xNormal для того, чтобы создать 3 карты, используя Полипейнт с высокополигональной модели и UVs с низкополигональной. Пропустили полученные карты через Фотошоп+nDo2 и получили 2 карты: диффузную (текстуру с тенями) и normal (глубина и детализация).

Надеюсь, этот урок был полезным для вас и иногда, вы его будете держать под рукой.








3 комментария:

Комментарии: