1 Уроки Lightwaves 3D Создание низкополигонального персонажа 2/4 Пн Окт 04, 2010 9:40 pm
Admin
Admin
3. Используемое оборудование
Перед тем как показать процесс изготовления «Варги», посмотрим на оборудование, используемое на этом проекте. Сначала оценим характеристики компьютера, так как большинство ограничений на этом проекте были хардверного характера:
- Athlon XP 2500+ @2400
- 1GB RAM
- Видео карта GeForce 6600GT
Вы можете догадаться, что имея компьютер с такими «невыдающимися» характеристиками, автор был серьезно ограничен в количестве полигонов при редактировании. Mudbox мог загрузить до 2 миллионов треугольников, но при этом работал очень медленно; при попытке импорта объектов размером больше чем 1,5 миллиона полигонов Maya множество раз падала по причине нехватки памяти. Поэтому пришлось разбивать модель на части (отдельно голова, туловище, бедра, ноги, руки и так далее), только таким образом можно было получить достаточную свободу в лепке деталей и работать без крэшей (обычно полигонаж не превышал 1 миллиона треугольников).
Что касается программ — речь, в основном, пойдет о Maya, так как автор пользуется ею практически для всех аспектов производства: моделинг, мэппинг, просчет карт и текстур, рендеринг. Для изготовления высокополигональной модели использовался Mudbox: в Maya сначала строилась заготовка, затем экспортировалась в Mudbox для дальнейшей детализации. После того, как «лепка» заканчивалась, один из высокополигональных вариантов моделей экспортировался в формат obj. Обычно объектов со 100-300 тыс. полигонов хватало для хорошей работы, объекты большего полигонажа не были нужны (брался не самый детализированный вариант модели). Этот объект импортировался в программу TopoGun вместе с начальной заготовкой (если такая имелась), либо низкополигональная сетка строилась в TopoGun заново. В нем топология низкополигональной сетки подгонялась для большего соответствия деталям, добавленным на высокополигональной модели. Готовая низкополигональная модель импортировалась обратно в Maya, туда же подгружалась высокополигональная, и производился расчет карт нормалей с использованием Transfer maps. Карты нормалей затем дорабатывались в Photoshop, а некоторые из них полностью сделаны в Photoshop (это будет показано ниже на примере боевого лука Peril, оружия персонажа).
4. Технологии, использованные для моделирования «Варги»
Обычно игровые персонажи должны следовать спецификациям: ограничениям на количество треугольников, размер и количество используемых текстур. Однако если полигонаж будет превышен на 500–1000 треугольников, а персонаж будет выглядеть круто, заказчик, скорее всего, вас простит.
Для этого конкурса было поставлено ограничение в 6000 треугольников, и автор не хотел его превышать. Поэтому первым шагом стало создание низкополигональной сетки (болванки), для наглядности распределения полигонов между разной геометрией (главным героем, зверем и оружием). Эта сетка не была финальной, но давала возможность видеть то, какие детали включать в высокополигональную версию модели.
4.1. Низкополигональная модель
Ниже сокращенно показан процесс моделирования болванки модели (с триангулированной финальной версией).
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
После того, как была смоделирована лоурезная версия, стало понятно, как распределить полигоны между персонажем, животным и оружием. Следующей ступенью стало разделение модели на части и подготовка правильной (clean up) геометрии. Для скульптинга нужна подготовленная геометрия, по большей части квадриангулированная и соответствующая некоторым правилам: так, например, надо избегать треугольных полигонов, а также ситуаций, когда больше четырех полигонов стыкуются в одной точке. В этих случаях надо добавлять сечения, чтобы избежать неправильностей в сетке, это даст более предсказуемый результат во время скульптинга. Можно сместить треугольники и точки стыка более четырех полигонов в места, где это будет менее заметно. Также надо делать «максимально квадратные» полигоны, то есть избегать полигонов, имеющих одну сторону в два раза больше другой. В этом случае следует добавить сечения, чтобы исправить это. Помните, что для хайрезной модели полигонаж неважен.
Ниже показаны некоторые части модели, импортированные в Mudbox и детализированные в нем:
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
4.2. Детализация в Mudbox
Следующий этап — импорт геометрии в Mudbox и добавление стольких деталей, сколько потянете вы или ваша «машина». Это наиболее интересная часть работы. Ниже показаны разные стадии изготовления частей персонажа.
Сапог (немного меньше 1 миллиона треугольников на самой большой детализации):
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Бедра (1,6 миллиона треугольников):
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Ноги (около 500 тысяч треугольников):
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Руки (около 600 тысяч треугольников):
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Туловище (около 800 тысяч):
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Ниже представлена хайрезная модель целиком: 8,5 миллионов треугольников (собрана специально для этого урока на новом компьютере, на котором этот процесс занял 3,5 Гб оперативной памяти).
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Теперь, когда интересная часть закончена, мы возвращаемся к лоурезным частям модели, которые были сделаны в начале. Корректируем их согласно скульптурным версиям, автор для этого использует программу TopoGun. Импортируем лоурезную модель и одну из версий хайрезной модели как референс и корректируем топологию так, чтобы наилучшим образом показать карты нормалей.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Повторяем этот процесс для каждой части, из которых состоит персонаж, и переходим к следующему этапу — просчету карты нормалей.
4.3. Перенос текстурных координат
На этом этапе у нас есть готовые лоурезная и хайрезная версии модели, и мы приступим к работе с UV-координатами.
Есть множество инструментов по работе с UV, которые мы можем использовать: UVLayout, Unfold 3D, разнообразные плагины и т.п. Кто-то считает, что одни из них лучше, другие хуже, но автор использует встроенные инструменты Maya. Они требуют внимания и планирования при «нарезке» координат, и работа с ними достаточно быстра и удобна.
Общие советы: раскладывайте UV-координаты с минимальными искажениями, хороший прием — прятать швы в наименее видимых частях модели (так, для рук и ног правильно располагать швы на внутренней, тыльной стороне). Полезно разбить UV-координаты согласно тому, как разбита на части хайрезная версия персонажа (в нашем примере — сапоги отдельно, каждая нога отдельно и т.д.).
После того, как работа с UV-координатами закончена, переходим к расчету карт нормалей и других текстур, если это необходимо.
Автор использовал инструмент transfer maps в Maya (для 3ds Max то же самое делает инструмент render to texture).
Проиллюстрируем этот процесс на примере сапог персонажа.
Перед началом проверьте, что UV-координаты на геометрии, которая готовится для расчета нормалей, не перекрываются. Потом вы сможете использовать наложение, но пока, для точности просчета, сместите перекрывающиеся UV за координатную сетку от 0 до 1 или уберите их в другие неиспользуемые места на время просчета.
Импортируйте обе: лоурезную и хайрезную версии в Maya и убедитесь, что они находятся одна над другой.
Откройте диалоговое окно инструмента transfer maps (находится в меню Rendering, Lighting/Shading -> Transfer maps).
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Выберите лоурезную версию модели и на закладке Target Meshes нажмите на Add Selected; затем выберите хайрезную версию и на закладке Source Meshes нажмите Add Selected (см. скриншот). Если не добавить геометрию в Source Meshes, то Maya использует всю геометрию в иерархии сцены.
В закладке Display для целевой геометрии (target mesh) выберите метод Envelope, чтобы видеть каркас (вы можете выбрать метод both для отображения вместе каркаса и целевой геометрии).
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Эти настройки создадут каркас (геометрию, похожую на смещенный «лоурез»), который будет использоваться для отображения исходной (хайрезной) геометрии. Вы можете менять положение каркаса, используя слайдер Search envelope (или вбивая значение). Вы получите лучший результат, если хайрезная модель будет находиться внутри каркаса (как третий пример на картинке внизу).
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Если вы слишком далеко сместите каркас, просчет нормалей может быть некорректным. Обычно нужно попробовать несколько значений, так, чтобы достаточно большая часть хайрезной модели находилась внутри каркаса, как показано ниже:
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Затем выбираем каркас и вручную сдвигаем его вертексы/полигоны/ребра так, чтобы хайрезная модель была полностью внутри каркаса.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Теперь выбираем карту, которую мы хотим рассчитать — карту нормалей. Можно посчитать и карту окклюжена (она послужит референсом для диффузной текстуры), но автор не делал этого, так как не имел времени на такую емкую задачу. Этот процесс занимает очень много времени; автор использовал просчет лоурезной модели с картой нормалей, используя Final Gather pass для карты окклюжен, что намного быстрее и дает сравнительно неплохой результат (будет показано дальше).
В этом же окне выбираем путь, формат файла, размер текстуры и другие детали. Убедитесь, что вы выбрали метод «внутри каркаса» (Inside Envelope Only), и что хайрезная модель находится полностью внутри каркаса.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Заметим, что перед тем как поставить просчет (нажать Bake) надо проверить, что сцена сохранена. Maya удаляет каркас после просчета текстур, и вам придется восстанавливать его снова, если понадобятся корректировки, или карта нормалей будет выглядеть неудачно. Сохранение сцены позволит избежать некоторой лишней работы.
Теперь все готово для просчета карты нормалей, жмите кнопку Bake
Если карта нормалей с первого раза посчиталась неудачно, возвращаемся в диалоговое окно transfer maps и корректируем настройки. Каркас должен полностью закрывать хайрезную модель, тогда проблем будет меньше. Если же есть пересечения модели и каркаса (или просто лень менять каркас), поменяйте метод на inside then outside или closest to envelope, это может сработать. Обычно проблемы случаются там, где много пересечений поверхностей на хайрезной поверхности. В нашем случае это может быть район, где проходят ремни на руке, в районе плеча.
А вот шаги, которым вы должны сделать, если используете инструмент Render to texture в программе 3ds Max:
- Выделите лоурезную модель, выберите инструмент Render to texture в меню Render.
- Проверьте метод проецирования projection mapping (он должен быть включен).
- Нажмите кнопку Pick и выберите хайрезную модель.
- Затем 3ds Max создаст каркас (автоматический процесс).
- Выберите модификатор проецирования.
- Перейдите в секцию каркаса (cage) и нажмите кнопку Reset (каркас будет такой же, как лоурезная модель).
- В этой же секции можно поменять значение смещения Amount, также как в Maya, чтобы закрыть хайрезную версию модели.
- Так же как в Maya, вы можете расширить каркас и скорректировать индивидуальные элементы вокруг хайрезной модели.
- После корректировок выберите снова лоурезную модель и в диалоговом окне Render to texture нажмите Render.
- Если карта нормалей не выглядит корректно, то придется вернуться к этапу корректировки каркаса.
А теперь рассмотрим простые методы расчета карт окклюжена, используя «ментал рэй» и final gather на лоурезной версии модели, замэпленной картой нормалей (результат, конечно, будет не таким, как если бы она была просчитана с хайрезной версии, но зато процесс происходит гораздо быстрее).
Возьмем готовые лоурезные модели с готовыми картами нормалей (будет взята модель сапога, но этот метод подойдет и для всей модели).
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Сделайте большой плоский полигон и поместите его под вашей моделью.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Убедитесь, что цвет фонового окружения (background color) для перспективной камеры — белый (это нужно, когда рассчитывается Final Gather: просчитываемые лучи должны пересекаться, а возвращаемый цвет должен быть белым).
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Установите метод рендеринга — «ментал рэй», убедитесь, что нажата галочка в блоке export Maya derivatives.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Проверьте, что в закладке Render Settings -> Common tab -> Render Options» не отмечена галочка Enable Default Light, по умолчанию она отмечена (это значит, что Maya не будет создавать источник света по умолчанию) и удалите или скройте все источники света (если они есть).
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Проверьте, что включен Final Gathering (обычно автор использует пресет Production в закладке «ментал рэя» Quality Preset, установите FG с точностью расчета 1000–1500, остальные настройки выставлены по умолчанию).
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Назначьте новый материал Lambert на лоурезную геометрию, цвет полностью белый, диффузность (diffuse) равна 1 (также поменяйте настройки для Lambert по умолчанию или назначьте еще один Lambert на полигон плоскости, сделанной нами в сцене, изменив цвет этого материала на белый, выставьте диффузность на 1).
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Выберите материал лоурезной геометрии и назначьте карту нормалей на слот бампа. Убедитесь, что бамп использует систему угловых координат (tangent space normals).
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Перед просчетом вы можете сделать тестовый рендеринг с «ментал рэем». Если все сделано правильно, то должен получиться примерно такой результат:
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Затем откройте окно просчета, находящееся в меню Rendering, под Lighting/Shading -> Batch bake (mental ray), перейдите к настройкам и убедитесь, что выбраны галочки bake shadows и orthogonal reflection. Остальные настройки оставьте такими же, как на картинке внизу. Выставьте настройки для файла и все, готово.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Нажмите кнопку Convert. Если все сделано правильно, то вы получите такую текстуру, как показано внизу (если вы не нашли текстуру, возможно надо проверить правильность пути сохранения файла; обычно текстура сохраняется в папке текущего проекта в разделе renderData/mentalray/lightMaps).
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Этот результат будет не таким четким, как текстура, посчитанная с хайрезной версии, но считается намного быстрее.
По такой же технологии вы можете быстро сделать несколько разных просчетов. Сохраните эту же сцену под другим именем (spec bake или что-то типа того) и отключите Final Gathering в закладке «ментал рэя». Удалите полигон плоскости, измените шэйдер материала, назначенного на лоурезную модель на blinn. Измените цвет материала на черный, цвет блика (specular) на белый и отражательную способность (reflectivity) на 0.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Поставьте пару направленных источников света вокруг объекта:
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Используйте те же настройки «ментал рэя», просчет будет гораздо быстрее (просчет будет только для бликов). Можно назначить двойное разрешение для текстуры, чтобы уменьшить ее в Photoshop — это даст лучший результат. Вы получите текстуру, как показано внизу, ее можно наложить с разными режимами, чтобы получить эффект пластика, металла, кожи и т.п.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Ну а теперь переходим к последнему пункту.