Cоздание модели лука для игры Skyrim. Часть 2 (хай поли моделирование)

К комментариям (2)
13.05.2015 — 20:39
Автор: Truewolf

Вторая часть серии уроков по созданию дальнобойного оружия (на примере лука) для игры Skyrim. В уроке разбирается построение High-poly модели лука для последующего запекания карт нормалей.

Cоздание модели лука для игры Skyrim

Часть 1 | Часть 2 | Часть 3 | Часть 4 | Часть 5 | Часть 6 | Часть 7

 
Всем привет, с вами снова я, Lord Beowulf. Как говорят в подобных случаях? Из за технических проблем всё накрылось медным тазом. Ну, в данном случае, конечно, не всё, но тем не менее. Дело в том, что у меня возникла какая-то ахинея с системой. Не буду нагружать подробностями, но все файлы, кроме одного одинокого исходника лоу-поли модели, который был у меня на флешке, полетели. Я решил переписать вторую часть урока, так как не вижу смысла делать продолжение с абсолютно другой моделью, заодно внести кое какие правки в материал, дабы он был более качественным. Почему бы не убить одним выстрелом двух зайцев (проклятые ушастые ублюдки)?
Те, кто читал предыдущую версию второй части моего урока, заметят, что материал существенно отличается. Как я сказал выше, я решил воспользоваться ситуацией и подредактировать всю информацию касаемо хай-поли модели лука. На мой взгляд, она получилась более правильной. Тем не менее, прощу прощения за такие накладки и, как говорилось в мультфильме Metalocalypse, мы не профессиональные извиняльщики, мы музыканты. Поэтому давайте перейдем к уроку.

 

Откроем нашу сцену. Что мы будем сегодня делать? У нас есть лоу-поли модель лука. Я собираюсь сделать хай-поли для того, чтобы впоследствии "запечь" нужные мне карты типа Normal map и Ambient occlusion. На самом деле, для таких предметов, как оружие, вовсе не обязательно запекать карты. Достаточно отрисовать их в фотошопе. Но почему бы на примере лука не показать, как это можно сделать? Благо, методика одинаковая везде.
 


Прежде, чем начать, давайте вернемся к луку и проверим, все ли косяки были убраны. Напомню, в конце предыдущего урока я говорил, что нужно удалить "невидимые" полигоны, которые не являются формообразующими, не несут никакой пользы, но утяжеляют нашу модель. Некоторые полигоны достаточно просто удалить. Например - основание заклепок или конец тетивы, который мы закрыли цилиндром. Проверьте так же крепление тетивы, а именно заклепки и крюк. К слову, поскольку крюк мы делали из цилиндра, на его вершине полигон с большим количеством углов. Это тоже надо исправить. Удалите полигон, перейдите на уровень редактирования граней (клавиша 3 на клавиатуре), зажмите  Shift и равномерно масштабируйте эту грань. Затем используйте функцию Collapse.
Есть еще одна группа скрытых полигонов - на рукояти.

 


 

Но править их мы будем иначе - удалим невидимые и "сошьем" оставшиеся в один объект вместе с плечами лука. Удалите выбранные полигоны.
 

С помощью функции Attach соедините рукоять и плечи.

 


 

Далее с помощью функции Target Weld соедините вершины рукояти с вершинами плечей. Не забудьте, что отверстия в плечах мы прорезали с помощью булевых операций. Поэтому они являются ориентиром для вершин рукояти, чтобы случайно ничего не запороть.

 

 
Возможно, в некоторых местах понадобятся дополнительные разрезы (функция Cut) чтобы не испортить сетку.

 



Тоже проделываем и со вторым отверстием.

 

 

Теперь давайте удалим обод на плечах вокруг рукояти. Все же, на мой взгляд он здесь не нужен. Для этого просто сшейте вершины.
 


 


 


 

Достаточно. Теперь применим модификатор Symmetry, дабы не развлекаться со вторым плечом и на этом пока что закончим с нашей низкополигональной моделью.
Теперь выделим все элементы лука и сгруппируем их в 1 объект (Group -> Group).

 

 

Назовите эту группу Low-poly. Затем сделайте копию этой группы и назовите её High-poly. Скройте хай-поли модель и вернитесь к лоу-поли. Удалите все имеющиеся заклепки - достаточно того, что они есть на хай-поли.

 

Теперь снова сгруппируйте все элементы модели, и верните в сцену группу High-poly
Разбейте группу High-poly на элементы.

Прежде всего, нам нужно совершить некоторые подготовительные действия.  Болванка для хай-поли модели делается при помощи модификатора Mesh Smooth. Но если мы применим данный модификатор сейчас, то получится каша.


 

Разберем, почему вышло именно так. Сглаживание происходит по кратчайшей дуге между центрами ребер полигонов. Чем больше полигон, тем больше будет эта дуга и тем сильнее будет размытие. Следовательно, чтобы убрать такие негативные моменты, нужно контролировать форму дополнительными ребрами или, по другому, “лупами” (от англ. Loop – петля), которые помещаются по всему пути ребра (петлей), которое не должно быть сглажено.
Данные ребра могут создаваться несколькими способами. Первый – функция Cut. В основном, Cut. При её использовании будьте внимательны – во-первых, размещайте новые ребра так, чтобы они были параллельны основному ребру, а не шли вразнобой. Во-вторых, после того, как закончите резку и соедините последнее ребро с вершиной, обязательно проверьте сетку функцией Weld с минимальным значением – иногда  Cut не соединяет ребро в вершине, хотя должна, а создает дублирующую рядом.
Второй способ подходит, если ребра, через которые будет проходить петля, имеют примерно равный размер. Данный способ заключается в применении функции Connect, которая находится в Editable Poly. В окошке Connect будет поле Slide, которое устанавливает, насколько создаваемое ребро будет отклонено от центра соединяемых полигонов. Идеально данная функция подходит для цилиндрических фигур, например, для рукояти нашего лука. Не стоит применять её, если длина ребер сильно различается, так как центры будут расположены, понятное дело не на равном удалении от края ребра и итоговая петля не будет равноудалена от основного ребра (что является ошибкой).
Я покажу на примере ближнего лезвия, как размещаются контролирующие петли. Мы имеем следующую сетку.

 

 

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

 

Вторая идет с противоположной стороны.


 

 

 

 

Подобные места, как на скриншоте ниже, лучше будет убрать, дабы сетку на хай-поли сделать более качественной.

 

 

Просто выделите диагонали и уберите их.
Не допускайте лишних вершин.  Одна дополнительная грань может быть элементом другой. Они, так или иначе, будут сходиться в некоторых вершинах. Например, эти 2 ребра.

 

Итак, работа с лезвием закончена, если вы все сделали  верно, то получите сглаженную модель без ненужных деформаций. Если где-то наблюдаются артефакты, значит, вы что-то сделали не так. Проверьте с помощью функции Weld, нет ли лишних вершин. Если  лишнего нет, то вы неверно расположили сами разрезы. Напомню, что они должны идти как бы кольцами (петлями) параллельно той линии ребер, на которых должен остаться угол
Вот моя болванка под хай-поли.

 

Вот тот же элемент, но с модификатором MeshSmooth.

 

Как видите, форма не потерялась, хай-поли вышло с нормальной сеткой, которую можно обрабатывать.

 

Теперь рассмотрим косяки. Большое скопление полигонов на и так ровной поверхности – на плоскости лезвия. Как итог – у основания заметен угол.

 

Этот косяк связан с моими вспомогательными ребрами, которые идут по этой плоскости, и в результате создают полигоны там, где не нужно. По уму, их надо было сделать иначе – без использования ребер на плоскости лезвия, обвести мимо. Ну что ж, учтем на будущее. Радуют две вещи. Во-первых, угол расположен там, где он закрыт другим элементом модели. Во-вторых, мы используем MeshSmooth и можем в любой момент спуститься по стеку модификаторов и исправить сетку  низкополигональной версии модели (пока не подойдете к финалу работы, в нашем случае запеканию нормали - не объединяйте модификаторы, чтобы вы могли свободно переключаться между ними и редактировать модель без влияния модификаторов). Несмотря на эту небольшую проблему, хай-поли болванка готова.
Лирическое отступление - на самом деле большую – любой косяк в сетке это проблема, которая, даже если не аукнется, испортит впечатление от вашей работы. Итог – ВСЕГДА следите за чистотой сетки. Да и кроме эстетической части такие косяки, как правило, все же аукаются. Либо при разворачивании модели, либо при развесовке, либо еще в десятке разных мест. Тем не менее, они могут быть допустимы в некоторых местах - на плоскости (где абсолютно ровная поверхность, и никакие искривления групп сглаживания не смогут побить эту плоскость) и на не анимированых моделях. С кривой сеткой сделать грамотно анимированую модель нельзя (а неграмотно - ужасно проблематично).
Есть три варианта решения данной проблемы. Первый, как ни странно, заключается в том, чтобы не допускать такого и понимать, что  плотное скопление граней так или иначе приведет к сохранению угла, даже если на низкополигональной модели он кажется незначительным. И на хай-поли это будет заметно. Пример – углы между цилиндром с тридцатью шестью сторонами. Если добавить петли вокруг одного из углов, на лоу-поли это не скажется ровным счетом никак. При двукратном сглаживании же угол будет явным.
Вариант второй – удалить вспомогательные ребра и сделать их заново, учитывая особенности сетки и нужный нам итоговый результат. Минусы этого варианта - придется удалять три петли и переделывать примерно треть работы (хотя вся работа тут пока – минут десять). Плюс – будет грамотное расположение петель. Третий вариант – растянуть  вершины петель возле проблемного участка, дабы сгладить угол.

 

 

Лучше? Скриншоты выше – растягивание вершин ребер.

А ниже - расположение граней заново. В некоторых вариантах разница мало заметна. Например, в этом. Делайте так, как вам удобней.

 

Если что, я разместил грани следующим образом.

 

 

После того, как разберетесь с лезвием, с помощью модификатора симметрии сделайте второе лезвие (мы же не хотим вручную делать аналогичную работу снова?). Теперь посмотрим на некоторые углы, а точнее их соответствие лоу-поли модели.

 

На плоскостях такое вполне можно допускать – карта нормалей запечет что углубления, что возвышения. А вот на углах такое чревато последствиями – карта нормалей будет меньше UV координат. Итог – эти углы на лоу-поли будут заходить ЗА карту нормалей. Выглядит это не очень красиво. Поэтому поправьте углы, дабы они выходили за низкополигональную модель.

 

 

За подобными нюансами стоит следить на краях плоскостей. Например, на кромке лезвия лоу-поли так же не должна выступать за хай-поли. Если они пересекаются в центре – ничего смертельного.

 

 

 

После исправление данных нюансов работа над лезвиями закончена. Переходим ко вторым лезвиям. Тут все аналогично.
В некоторых местах потребуется изменение топологии. Там мы меняли сетку, дабы уменьшить количество полигонов (в ущерб качеству сетки, к сожалению). Например, тут. 

 

Пытаться развести это место петлями будет весьма…болезненно. Проще и правильней изменить топологию и сделать следующим образом.

 

 

Как видите, при такой сетке разведение петлями прошло достаточно просто.

 

 

 

Обратите внимание на расположение петель на острие лезвия.

 

 

Итак, мы получили следующее. Это подготовленная сетка и рендер модели без сглаживания.

 

Это с модификатором.

 

 

В данном случае я решил не предотвращать образование угла на плоскости, где сходятся в одну модель лезвие и цилиндр, а сделать именно так с последующим упором на это место на текстуре. Мол, специально сбитый до плоскости металл. Почему бы и нет, в конце концов? После этого так же подгоним хай-поли модель под лоу-поли, применим модификатор симметрии и перейдем к рогам.
В моем случае рога – самый простой элемент модели. Нужно добавить пару ребер по периметру сечения и после использования модификатора MeshSmooth поправить положение ребер на желобе (либо убрать его в лоу-поли, но об этом чуть позже)
Итак, что нам нужно для сглаживания  рога? Сделать петли с обоих сторон, у основания и вершины.

 

 

 

 

 

Если вы хотите сделать желоб таким же, как на лоу-поли, то придется пропустить 1 круг фасок с внешней стороны желоба. Я же не вижу смысла, так как в сечении желоб все же должен быть клином, а не дугой.
После того, как закончите с разрезами, убедитесь, что на углах лоу-поли модель не выступает за хай-поли.
Теперь перейдем к фурнитуре – тетиве, заклепкам и креплениям. Во-первых, почему я решил удалить закрепки на лоу-поли модели? Они создают лишний полигонаж, при этом практически не образуют формы. Их наличие можно показать картой нормалей и текстурой. Итог – на лоу-поли они бесполезны. Не зачем понапрасну перегружать модель. Во-вторых, я предлагаю тетиве на хай-поли сделать более интересную форму, а именно – витую. Делается она достаточно просто – строим цилиндры, добавляем количество сегментов высоты и применяем модификатор Twist, предварительно выделив цилиндры вместе. По вашему усмотрению настройте количество витков, а так же количество цилиндров. При моделировании тетивы можно применить 1 хитрость – не обязательно делать петли возле крепления – поскольку длина окружности там одинакова с самой тетивой,  на карте нормалей можно просто продублировать туда нужный элемент.

 

У меня получилось следующим образом. Число элементов плетения – три. Заклепки (которые мы не оптимизировали) оставьте как есть. Крепежи и прочую фурнитуру так же оставьте – они не играют особой  роли, и делать им хай-поли варианты – нет смысла.
Теперь нам осталось сделать только плечи и рукоять. Перед добавлением вспомогательных ребер, я предлагаю разделить элементы рукояти (дерево) и плечей дабы было меньше общих участков и мест, где могут возникнуть сложности. Поскольку разделение этой модели на 2 элемента не повредит общей сетке, а, наоборот, улучшит её, то негативных моментов не будет. Можно задаться вопросом – почему я склеивал эти элементы на лоу-поли, добавляя неравномерную, кривоватую сетку, если можно было оставить все так же. Причина в этом заключается еще с работы над моделями для игры Oblivion. При действии эффектов типа Хамелеон, тело и оружие/одежда на нем становились полупрозрачными. При этом были видны стыки элементов модели, если  одна заходит на другую. После такого веселья я стараюсь делать так, чтобы не обоснованных пересечений моделей не было. Данная практика не претендует на место верной, так как страдает сетка, но тем не менее. Добавлять же новые грани по всей плоскости модели, чтобы правильно соединить вершины и не допустить не нужных треугольников,  я не стал, так как это дало бы много дополнительного полигонажа. А учитывая, что в этом месте объект не анимируется, то такая сетка не будет мешать ничему, кроме эстетических ощущений.
Но вернемся к луку. Отделите выделенные части.

 

 

Делается это через функцию Detach.

 

 

Пока что разберемся именно с этими элементами. Основа для них цилиндр, поэтому дополнительные грани делаются вертикально параллельно ребрам, где должны проходить углы. Петли тут, как я говорил выше, можно делать с помощью функции Connect.

 

 

Теперь остается разобраться только с плечами лука.
Достройте модель, убрав отверстия, которые остались после отделения рукояти.

 

 

 

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

 

 

 

 

 

 

 

В итоге получилось следующее. Это - лоу-поли модель.

 

 

А вот это – хай-поли.

 

 

Напомню, если вы хотите, что бы желоб, что на плечах, что на роге, был такой же, как в лоу-поли, просто сделайте внутри него вспомогательные грани по краям. Мне же кажется, что так выглядит лучше. Сделайте зеркальную копию (модификатор Symmetry).

 

 

Итак, хай-поли болванка готова. Да, это только болванка. Разумеется, её уже можно запечь и работать дальше, оставив добавление фактуры на карту диффуз. А можно в 3Ds Max (окольный способ) или в программах 3D скульптинга (удобный способ) добавить фактуру, более мелкие элементы и детали.

 

Я покажу на одном примере, как можно добавить такую фактуру. я хочу, чтобы металлические элементы, особенно лезвия, были как-бы обколоты, как при грубой ковке (или как кремниевые ножи). Для этого я буду использовать модификатор Displace. Данный модификатор позволяет изменять геометрию объекта путем замены элементов с помощью черно-белого растрового изображения. Это удобно при создании, например, мягкой мебели. В моем варианте это так же подойдет. Заметка. Для успешного результата нужна подготовленная UV развертка тех моделей, к которым мы применяем модификатор. Информация о создании UV развертки смотрите в  следующей части урока. Тут я просто покажу метод.

Создайте новый материал и в Diffuse поместите карту Cellular. Поставьте тайлинг, как на скриншоте.

 

 

Вернувшись назад к настройкам материала, зажмите ЛКМ на окошке с буквой M возле Diffuse и перетащите карту в аналогичное место в модификаторе Displace.

 

 

Всплывет окно выбора типа копирования. Нам нужен Instance. Теперь всё, что мы меняем в карте из материала будет применяться и к копии.

 

 

Настройте модификатор следующим образом. Можете поэкспериментировать с настройками.

 

 

У меня получилось следующее.

 

 

Дальнейшее редактирование данного элемента будет осуществляться уже в фотошопе - нужно убрать шов (в таком случае надо будет объединить эти две группы сглаживания в одну на лоу поли, чтобы шов так же не был виден) и нормали лезвия готовы.

Несмотря на то, что я его продемонстрировал (ибо это достаточно полезный модификатор), я не буду предлагать вам делать точно так же. Как было сказано выше, хай-поли модель для карты нормалей готова. Если хотите, можете добавить фактуру в ZBrush'e. Если хотите, можете добавить фактуру таким способом. Но прежде, чем вы это сделаете, следует упомянуть о минусах данного способа. Качественное выдавливание геометрии требует огромного количества полигонов. Например, в моей сцене сейчас  их 2 миллиона. Настройки MeshSmooth выглядят так.

 

 

Обратите внимание на количество итераций. это огромное количество. И естественно это негативным образом сказывается на производительности. Стоит ли это делать ради интересного, но не обязательного эффекта на нормалке? Решать вам (плюс, к слову есть один - скорость. Такие сколы  достаточно быстро создать и далее запечь, если вы не боитесь тормозов, конечно) Если вы решили добавить геометрию таким способом, не удивляйтесь тормозам программы. И на сей оптимистичной ноте урок подходит к концу. Я сделал то, что планировал, а именно - более детально (и правильно) описал основные принципы построения хай-поли модели для последующего запекания. По сути, принципов два:

1. Хай поли модель не должна создавать качественно новые формы, она должна лишь конкретизировать уже имеющиеся. То есть добавлять мелких элементов. При запекании текстуры нормали хай-поли модели шифруются в R G B каналах и впоследствии проецируются на низкополигональную модель двухмерной картой. Исходя из этого, можно понять, что добавление к хай поли модели нашего лука полуметровых шипов на плечах (например) или еще двух рогов успехом не увенчается. в лоу-поли версии такой геометрии попросту нет. А вот мелкие элементы, типа чеканки, сколов, узоров и т.д - вполне. То есть элементы, которые формируют фактуру модели.

2. При запекании нормалей с хай-поли модели (источник) на лоу-поли (цель) контур цели должен находиться внутри контура источника. В противном случае проекция нормалей ( нормаль — это прямая, перпендикулярная касательному пространству) будет невозможна. Опять же, с оговоркой. Прежде всего, данное правило относится к контурам, которые являются таковыми так же на развертке, иначе карта нормалей выйдет ЗА UV координаты и это будет заметно при наложении карт.

В большинстве случаев низкополигональная модель сопровождается хай-поли. Один из вариантов предполагает преобразование лоу-поли в хай-поли путем добавление контролирующих ребер на модели, или увеличение жесткости ребер. Насколько я знаю, в некоторых программах существует инструмент, который увеличивает жесткость выбранных ребер. Например Modo 3D. Второй вариант заключается в том, что хай-поли моделируется сразу. Затем же либо она (её копия) оптимизируется до лоу-поли, либо на ней, как на каркасе, делается низкополигональная модель. В любом случае, получается в итоге две модели. В любом случае, знание, как правильно строить высокополигональную модель на основе лоу-поли, необходимо. Надеюсь, мне получилось вам его дать.

 

В следующем уроке мы займемся разворачиванием UV координат (развертки). Удачи в вашем творчестве, до новых встреч!

 

Lord Beowulf, для TesAll.ru