Полигональное моделирование персонажей в Blender

В Blender, как и во многих программах трёхмерной графики анимации, базовым типом объектов, используемых для моделирования персонажа, является сетка (mesh).

Два основных метода анимации персонажей, арматура и ключи деформации (shape keys) лучше всего приспособлены для использования с сетками. Именно по этому, не смотря на то, что вы можете использовать другие техники моделирования, такие как NURBS, кривые Безье и метасферы (metaballs), их всё равно в конечном итоге придётся конвертировать в сетки.

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

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

Если вы хотите пропустить эти уроки моделирования и перейти сразу к следующему шагу, найдите на DVD соответствующий файл .blend.

Уроки этой главы дают возможность получить сетку, аналогичную содержимому файла CB-Model-base_mesh.blend, так что вы можете воспользоваться им для перехода к урокам последующих глав. Однако если вы хотите научиться моделировать персонажей в Blender, выполните уроки из этой главы, прежде чем двигаться дальше, и пользуйтесь файлом .blend как дополнительным пособием.

Полигоны и подразделение

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

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

Поскольку для моделирования округлых органических поверхностей требуется много плоских полигонов и прямых рёбер, Blender использует другой метод расчёта поверхности сетки, основанный на его полигональной структуре — разбиение поверхностей Кэтмулла-Кларка (также называемый подразделением (subsurfacing) или просто subsurfing).

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

Давайте вернёмся к двум объектам из главы 1, Cube и Cone, а также связанным с ними сетками. Выберите объект Cube.

Подразделение в Blender делается путём добавления к объекту сетки модификатора Subsurf. На вкладке Modifiers окна Buttons нажмите Add Modifier и выберите Subsurf из выпадающего списка, как показано на рисунке 2.1.

полигональное моделирование персонажей в Blender_1.jpg

Рисунок 2.1 Добавление модификатора Subsurf

Как вы видите, с модификатором Subsurf, включенным на первый уровень, поверхность куба приобретает другую, более гладкую форму. Измените значение в поле Levels панели модификатора Subsurf на 2. Теперь вы видите нечто, начинающее напоминать сферу.

Оптимальные значения для подразделения равны 2 для поля Levels и 3 для поля Render Levels. Это значит, что при визуализации подразделение будет ещё более плавным. Более высокие значения этих полей чрезмерны и могут привести к серьёзному замедлению работы или даже зависанию вашего компьютера.

Хотя куб теперь выглядит более гладким, чем раньше, он по-прежнему напоминает плоские поверхности, расположенные в форме сферы. Чтобы это исправить, не нужны дополнительные уровни разбиения. Вы можете просто изменить способ, которым Blender рассчитывает затенение (shading), создавая иллюзию гладкой поверхности, выбрав Set Smooth на вкладке Links and Materials в окне Buttons. Сделайте это для объекта Cube, и вы увидите, насколько сглаженным он стал.

Теперь попробуем снова сделать трюк из главы 1, и заменим данные сетки Cube на данные сетки Cone в объекте Cube. В результате получим пару примечательных вещей. Прежде всего, форма Cone теперь подразделена. Модификатор Subsurf воздействует на объект сетки, следовательно, данные новой сетки тоже подвергнутся разбиению. Теперь у вас есть подразделённая форма Cone.

Второе, или даже первое, на что вы обратили внимание в этом подразделённом конусе, это то, что он выглядит не очень хорошо. Как видно на рисунке 2.2 — это не то, что можно назвать гладкостью. Это изображение иллюстрирует частую проблему подразделения, связанную с треугольниками.

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

полигональное моделирование персонажей в Blender_2.jpg

Рисунок 2.2 Подразделённый конус, состоящий из треугольников

Общепринятая мудрость полигонального моделирования состоит в том, что треугольников следует избегать. Как можно увидеть на рисунке 2.3, тот же конус становится более гладким, если его несколько раз рассечь (cut) и преобразовать его геометрию в четырёхугольники.

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

Что же касается использования других n-сторонних полигонов, которые можно выбирать в некоторых программах для моделирования, то Blender делает выбор простым. Вы просто не можете их использовать. Четырёхугольники и треугольники — это все полигоны, которые поддерживает Blender. Из чего следует, что вы будете пользоваться кучей четырёхугольников.

полигональное моделирование персонажей в Blender_3.jpg

Рисунок 2.3 Конус, смоделированный четырёхугольниками

Система модификаторов Blender

Как вы смогли убедиться на примере подразделения, с помощью модификаторов, на объект сетки можно наложить определённые свойства. Для создания специальных эффектов доступно множество модификаторов, но мы рассмотрим только наиболее подходящие для моделирования и анимации персонажей. Помимо модификатора Subsurf, к ним относятся:

Mirror
Этот модификатор зеркально отображает виртуальную копию сетки по отношению к выбранной оси (по умолчанию это X). Модификатор Mirror полезен для моделирования симметричных объектов, таких как лица и тела.

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

Armature
Этот модификатор связывает объект сетки с объектом арматуры для придания фигуре различных поз.

У всех модификаторов есть общие параметры. Вы можете отобразить модифицированную форму сетки с помощью кнопок, расположенных справа от названия
модификатора: modifiers.jpg

Кнопка, расположенная слева, включает и выключает отображение модифицированной сетки при визуализации, средняя — отображение в окне 3D-вида, а правая заведует отображением модификатора в 3D-виде в режиме редактирования.

Кроме того, у всех модификаторов есть опции «скопировать» (copy) и «применить» (apply). Копирование создаёт идентичный модификатор, расположенный в том же месте стека модификаторов, что и исходный. Применение удаляет модификатор и применяет его эффекты к сетке, создавая новую сетку без модификатора, с формой, идентичной модифицированной форме исходной сетки.

Будьте внимательны, используя эту опцию. К примеру, обычно нет необходимости в применении модификатора Subsurf, а модификатор Mirror применяется только по окончанию всех
операций редактирования, требующих зеркального отображения.

Моделирование NURBS

NURBS (неоднородные рациональные B-сплайны, non-uniform rational B-splines) — это способ определить кривые линии и поверхности более точно, более компактно и более ограниченно в понятиях моделирования, чем подразделённые сетки. NURBS более старый метод для создания органических форм, с использованием компьютерной графики, но с момента появления подразделённого моделирования, моделирование NURBS несколько потеряло популярность в моделировании персонажей, в зависимости от 3D-приложения.

Текущее использование NURBS тяготеет к концентрации на индустриальном дизайне, где точность более важна, чем в анимации персонажей. (Точные измерения, строго говоря, не самая сильная сторона Blender, что не позволяет использовать его в качестве CAD-приложения.)

Blender обладает возможностями моделирования NURBS, но mesh-моделирование в нём реализовано гораздо лучше.

Для создателя персонажей единственной серьёзной причиной использовать NURBS в Blender является применение специфических, лично предпочитаемых методов или применение навыков, приобретённых при использовании программного обеспечения, более ориентированного на NURBS. Другим недостатком использования NURBS для моделирования персонажей в Blender являются ограничения на модификацию арматуры.

Хотя к NURBS-поверхностям могут применяться модификаторы арматуры, нет возможности создать группы вершин или произвести рисование весов (weight painting) на поверхностях NURBS, так что арматура ограничена использованием огибающих (envelopes) для воздействия на поверхность.

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

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

Некоторые примитивы NURBS могут быть созданы путём нажатия клавиши Пробел для добавления объекта и выбора Surface или Curve. Примитив тора (donut), доступный для NURBS, является формой, которая недоступна как mesh-примитив (хотя форму тора легко получить с помощью моделирования сеток, добавив круг, представляющий собой сечение тора, и вращая его вокруг 3D-курсора с помощью инструмента моделирования Spin).

Инструменты, доступные для моделирования с помощью NURBS, практически аналогичны доступным для моделирования сеток (хотя их гораздо меньше).

Добавленные к объекту модификаторы появляются в стеке в порядке, соответствующем очерёдности их применения. Кнопки со стрелками вверх и вниз на панели модификатора позволяют перемещать его выше или ниже в стеке. Слева от этих кнопок в некоторых модификаторах находится иконка — серый круг. Эта кнопка включает и выключает применение модификатора к клетке редактирования (edit cage). Подробнее об этой функции вы сможете узнать далее в этой главе.

Для того чтобы увидеть, как могут отличаться результирующие сетки в зависимости от порядка применения к ним модификаторов, создайте в Blender новый файл и выберите куб по умолчанию. На вкладке Modifiers выберите Add Modifier → Mirror.

Теперь перейдите в режим редактирования. Выберите все вершины, нажав клавишу A. Перенесите весь куб на одну единицу Blender (Blender unit, BU) вправо вдоль оси X. Для этого нажмите последовательно G, затем X. Удерживайте клавишу Ctrl, чтобы включить дискретное перемещение мыши.

Когда вы перенесёте куб вправо, то увидите, что его зеркальное отображение переместилось влево. При этом края куба и его зеркального отображения совместятся друг с другом, как показано на рисунке 2.4 (a).

Теперь добавьте модификатор Subsurf так же, как вы добавили модификатор Mirror. Задайте уровень разбиения равный 2. В итоге получится нечто, похожее на орех арахиса, как показано на рисунке 2.4 (b). В этом случае подразделяется не исходный куб, а зеркально отражённый.

Если вы хотите подразделить исходный куб и зеркально отразить получившуюся сетку, вам нужно поднять модификатор Subsurf в стеке вверх таким образом, чтобы он применялся до модификатора Mirror. Сделайте это, щёлкнув по стрелке вверх на панели модификатора Subsurf (или по стрелке вниз на панели модификатора Mirror, соответственно).

Как видно на рисунке 2.4 ©, получившаяся в результате сетка, представляет собой две раздельные сферические формы. Теперь обратите внимание, что если вы пойдёте дальше и примените оба этих модификатора (вы должны применять модификаторы сверху вниз), вы получите единый объект-сетку, содержащий две сферические формы, как на рисунке 2.4 (d), которые уже нельзя редактировать таким же образом, как предыдущий отражённый куб.

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

полигональное моделирование персонажей в Blender_4.jpg

Рисунок 2.4 Эффект от модификаторов на сетках: (A) отражённый куб; (B) отражённый и потом подразделённый куб; © подразделённый и затем отражённый
куб; (D) сетка с применёнными модификаторами

Страница: 1 2 3 4
Поделиться в: Опубликовать в twitter Опубликовать в своем блоге livejournal.com