Смекни!
smekni.com

Организация автоматизированного рабочего места 3D-аниматора (стр. 3 из 8)

Это нужно для экономии полигонов. Благодаря картам нормалей низкополигональным моделям можно придать вид очень высокополигональных (естественно, с известной долей приближения, но всё-таки). Ранее эта технология не слишком активно применялась по той причине, что карты нормали были крайне сложны в изготовлении - до появления таких пакетов, как MudBoxи ZBrush (и Blender3D), в которых поддерживается технология «скульптурного» моделирования, изготовить правильную карту нормалей было подчас задачей весьма и весьма нетривиальной.

В 2004 году id Software выпустили Doom III, где Normal Mapping использовался повсеместно, и с тех пор эта технология стала уже некоторым образом «общим местом» (Рисунок 2). Особенно в силу того, что «скульптурное» моделирование значительно облегчает жизнь в плане дизайна.

Рисунок 2 – Normal Mapping

2.3 Скульптурное моделирование

Скульптурное моделирование - это имитация ваяния, точнее, лепки из пластилина или глины. Инструментарий, который предоставляют MudBox, ZBrush и Blender, позволяет производить над моделью массу хитроумных манипуляций, в точности так, как если бы она была из глины или какого-то другого подобного материала. В ZBrush даже цвет по умолчанию очень характерный: глинисто-красный (Рисунок 3).

Рисунок 3 – Zbrush


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

2.4 Создание 3D-модели: придать простому вид сложного

Создадим самое примитивное: кубик (8 вершин, 6 граней, 12 рёбер - базовая структура) (Рисунок 4).

Рисунок 4 - Кубик

Теперь у нас в программе есть режим «лепки». Используем по полной: подвергнем форму кубику ужасным истязаниям (Рисунок 5):

Рисунок 5 - Режим «лепки».

В результате у нас получилось: высокополигональная, детализированная фигура с очень сложной поверхностью, где счёт вершинам и полигонам переваливает за 45 тысяч. А если мы зададим нашему компьютеру задание: «преврати вот эту штуку в плоскую картинку, чтобы мы другу послали ее или напечатали на принтере» – то компьютер будет очень долго думать над этой задачей.

Между тем, с помощью карты нормалей самым простым фигурам можно придавать вид очень сложных. Например, идеально гладкой поверхности придать вид заметной шершавости.

Путём не слишком хитрых (но и не слишком простых) манипуляций получаем пресловутую карту нормалей: в сущности, это не более чем текстура, правда, со своим особым цветовым пространством, где цветовая информация - а именно, комбинация красного (R), зелёного (G) и синего (B) цветов для каждого пикселя – описывает его видимое положение в системе координат X, Y и Z, каждый цвет соответствует одной из осей координат. Вот так выглядит карта нормалей (Рисунок 6):

Рисунок 6 - Карта нормалей

Потому что для её получения потребовалось сделать UV-развёртку, т.е. осуществить развёртку поверхности трёхмерной фигуры на плоскость. Накладываем карту нормалей. (Рисунок 7).

Рисунок 7 - Наложение карты нормалей


Наложение карты нормалей и Voila удалось не полностью, потому что в сложной фигуре были искривлены боковые грани, и существенно. А на простом кубе они остались на месте. Если бы они были скруглены и искажены примерно так же, как у высокополигональной фигуры, карта нормалей смотрелась бы намного более убедительно.

Кроме того: лунки на гранях высокополигональной фигуры слишком глубокие. Карты нормалей хороши для того, чтобы имитировать небольшие шероховатости, а не глубокие рытвины на плоской поверхности. Более того, если поверхность с наложенной картой нормалей оказывается под большим углом к зрителю (как на иллюстрации), обман становится очевиден. Опять-таки: карта нормалей позволяет экономить на полигонах, но лишь до известного предела. Вот так и создается любая 3D модель.

2.5 Трехмерное моделирование

Речь пойдёт о традиционных методах 3D-моделирования, оставляя в стороне пакеты скульптурной трехмерной графики. Наиболее употребительный технический прием – это формирование модели из «примитива», простой геометрической фигуры, плоской или объёмной, которая, путём всевозможных трансформаций приобретает нужные моделлеру очертания.

Иногда 3D модель формируется из нескольких «примитивов», но тут есть свои нюансы: в частности, для текстурирования очень желательно, чтобы у такой модели не было невидимых, «внутренних» граней (или даже их фрагментов), а при стыковке нескольких примитивов подобное – не редкость.

Для борьбы с подобной «напастью» применяются булевы операции (booleans) (Рисунок 8). Если не вдаваться в избыточные подробности, то операция объединения (union) позволяет составить из двух соприкасающихся или пересекающихся объектов один, чья поверхность состоит из суммы поверхностей исходных объектов, за вычетом тех областей, где происходит пересечение.

Что касается деформаций в процессе трехмерного моделирования, то здесь ключевыми можно назвать экструдирование (extrude) отдельных элементов - вершин, рёбер и/или граней. Разделение (subdivide), при котором ребро или грань разбивается на несколько равных частей, и перемещение и вращение отдельных элементов, так что любой кубик можно закрутить в бараний рог, в самом буквальном смысле (Рисунок 9).

Есть и чуть более «экзотические» приёмы, такие, как «разрезание» одной или нескольких граней (или одного или нескольких рёбер) в произвольных местах (LoopSubdivide, KnifeSubdivide и т.д., названия могут меняться от пакета к пакету).

Рисунок 8 - Булевы операции

Рисунок 9 – Деформации


Задачу 3D-моделлера можно исчерпывающим образом сформулировать, перефразировав древнее изречение: главное – найти в трехмерном примитиве душу и «убрать всё лишнее».

Форму исходной фигуры, т.е. исходного примитива стоит выбирать, исходя из представлений о конечном облике планируемого 3D творения – это, в общем-то, совершенно очевидные вещи.

Но не на одних только примитивах свет клином сошёлся: помимо них есть смысл использовать при моделировании NURBS и/или кривые и поверхности Безье (BesierCurves, BesierPatches).

«Высшим пилотажем», хотя и не то, чтобы слишком сложно осваиваемым, можно назвать 3D-моделирование с помощью кривых (curves) и направляющих (path) (Рисунок 10).

Рисунок 10 - 3D моделирование с помощью кривых (curves) и направляющих (path)

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

Использование кривых и сплайнов позволяет добиться особой гладкости 3D модели, минимизируя заметность полигонов.

Очень полезно также при 3D моделировании использование всевозможных средств дубликации: расхожий пример – формирование винтовой лестницы (Рисунок 11). Вручную её собирать – долго и мучительно. Однако процесс вполне можно автоматизировать – разные 3D-пакеты предоставляют разные средства для этого.

Рисунок 11 - Средство дубликации

В любом случае, чем большим количеством инструментов из числа предоставляемых тем или иным пакетом владеет моделлер, тем проще дается 3D моделирование работать и тем больше времени он сэкономит.

2.6 3D-текстуры

Допустим, у нас созрела некоторая модель – и выглядит она пластмассовой: единый ровный цвет, ровная поверхность. Надо ее раскрасить. Для этого существуют т.н. материалы и текстуры.

Материал – это комбинация физических свойств модели: какой её основной цвет, как она поглощает, преломляет, пропускает, рассеивает или отражает свет, какова фактура поверхности и так далее. Эти параметры регулируются с помощью шейдеров – программ, используемых для определения окончательных параметров объекта или изображения (в том числе произвольной сложности описания поглощения и рассеяния света, отражения и преломления, затенения, смещения поверхности, эффектов пост-обработки и наложения текстур) и самих текстур, – растровых изображений, с помощью которых полигональной поверхности можно придать нужную окраску и/или иллюзию рельефа. В некоторых пакетах с помощью текстур можно воздействовать на карты нормалей и другие характеристики поверхности, связанные с поглощением или отражением света.

Текстурирование – не менее значимый процесс в создании трёхмерной графики, чем непосредственно моделирование, а может быть, и более; и в чём-то он даже более сложен в освоении, нежели работа с полигонами (Рисунок 12).

Подобрать правильную «одёжку» и, самое главное, правильно её расположить на поверхности модели – задача трудоёмкая и каверзная, особенно, если поверхность сложная.