главная » уроки анимации

уроки анимации

Уроки анимации

Глава 2.

Основы моделирования

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

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

Типы поверхностей

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

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

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

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

Полигональные поверхности

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

Основное преимущество полигонального моделирования заключается в том, что данный метод применим к поверхностям различного вида. Многие инструменты, основанные на использовании патчей и NURBS, хорошо работают лишь с поверхностями, имеющими простую топологию, например цилиндрами или сферами. Чтобы создать более сложный объект (скажем, модель тела человека), приходится конструировать несколько поверхностей, а затем стыковать их друг с другом. В то же время с помощью многоугольников легко решаются любые топологические головоломки, и конструируются сколь угодно сложные поверхности.

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

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

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

Патчи

Патч - это фрагмент поверхности, ограниченный кривыми, которые, в свою очередь, определяют форму модели. Линейная кривая состоит из последовательности отрезков, соединяющих управляющие вершины (рис. 2.1). Кривые, определяющие поверхность, играют роль ребер полигонального каркаса. Ассортимент используемых кривых, как и соответствующих им патчей, весьма широк. Кривые могут называться по-разному, например линейными, фундаментальными, В-сплайнами, кривыми Безье. Фундаментальная кривая - это кривая, проходящая через управляющие вершины. В каждой вершине задана также касательная к кривой (рис. 2.2). В-сплайн редко проходит через управляющие вершины. Из-за того, что они находятся на некотором расстоянии от кривой, манипулировать поверхностью достаточно сложно (рис. 2.3). Кривые Безье наверняка знакомы вам по популярной программе Adobe Illustrator. Кривая проходит через каждую управляющую вершину, в которой задана касательная к кривой и имеются два манипулятора, позволяющие контролировать ее форму по обе стороны от вершины (рис. 2.4).

Другая классификация кривых основывается на степенях соответствующих полиномов.

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

Рис. 2.1. Линейная кривая

Рис. 2.2 Фундаментальная" кривая

Рис. 2.3 В-сплайн

Рис. 2.4 Кривые Безье

NURBS-поверхности

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

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

Методика моделирования

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

Простота модели

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

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

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

Сочетание поверхностей разных типов

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

Приемы моделирования

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

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

Основные элементы полигональных моделей

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

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

Вершины

Вершина - это одномерный объект, точка, расположенная в пространстве (рис. 2.5). Если соединить две вершины, получится ребро (рис. 2.6). Некоторые программы моделирования предлагают дополнительные операции над вершинами, например Extrude (Экструдирование) и Bevel (Формирование скоса), показанные на рис. 2.7 и 2.8 соответственно; в обоих случаях создаются дополнительные ребра и многоугольники.

Ребра

Ребро определяется двумя вершинами. Когда объект изображается в виде проволочного каркаса, все его ребра видны. В сущности, они представляют собой линии и являются двумерными объектами. Три ребра или более образуют многоугольник. Над ребрами можно выполнять ряд операций. В их число входят уже названные Extrude и Bevel, операция Collapse (Стягивание), которая удаляет ребро, превращая его в вершину. Кроме того, для

ребер предусмотрена операция Cut/Connect (Разрезание/Соединение): существующие ребра разрезаются пополам, а точки разреза соединяются новым ребром. Результаты выполнения этих операций показаны на рис. 2.9-2.12.

Многоугольники

Многоугольник определяется тремя или более ребрами (рис. 2.13). По сути он является плоским трехмерным объектом. Для выполнения рендеринга поверхность должна состоять из многоугольников. Большинство пакетов разрешает работать с многоугольниками, имеющими более трех ребер, однако обычно в процессе визуализации такие примитивы все равно разбивается на треугольники.

Над многоугольниками можно выполнять следующие операции. Проиллюстрированные рис. 2.14-2.16 операции Extrude (Экструдирование), Inset (Вставка) и Bevel (Формирование скоса) являются вариантами одной и той же операции - создания дополнительного многоугольника на основе того или иного элемента исходного. Отличие заключается в том, что происходит с исходным многоугольником. При экструдировании часть его выдвигается наружу или перемещается внутрь обычно вдоль нормали к поверхности (то есть вдоль перпендикуляра к грани). Когда выполняется вставка, масштаб исходного многоугольника, как правило, уменьшается, и полученная фигура располагается в плоскости исходной. Операция формирования скоса по сути является комбинацией первых двух, поскольку исходный элемент масштабируется и перемещается. В результате появляются новые грани. Кроме того, к многоугольникам применяется операция Collapse (Стягивание), которая удаляет многоугольник, стягивая его в одну вершину (рис. 2.17).

Рис. 2.5. Вершины

Рис. 2.6. Ребра

Рис. 2.7. Операция Extrude над вершиной

Рис. 2.8. Операция Bevel для скоса вершины

Рис. 2.9. Операция Extrude над ребром

Рис. 2.10. Операция Bevel для скоса ребра

Рис. 2.11. Операция Collapse над ребром

Рис. 2.12. Операция Cut/Connect над ребром

Рис. 2.13. Многоугольники куба

Рис. 2.14. Операция Extrude над многоугольником

Рис. 2.15. Операция Inset над многоугольником

Рис. 2.16. Операция Bevel над многоугольником

Рис. 2.17. Операция Collapse над многоугольником

Методы полигонального моделирования

Теперь, когда вы ознакомились с основными операциями, процесс моделирования на основе многоугольников уже не вызовет особых затруднений. Обычно создается какой-либо базовый объект, например параллелепипед, цилиндр или сфера. Затем он модифицируется при помощи ряда операций и приобретает более сложную форму, соответствующую очертаниям персонажа.

От простого к сложному

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

Занимаясь моделированием, повторяйте, как молитву, следующую фразу: «Моя цель - достичь максимального результата, используя минимальное количество элементов». Создатели персонажей для интерактивных игр оказываются в наиболее трудном положении, поскольку их модели должны быть как можно более простыми. Если вы хотите узнать, как создаются несложные, но качественные модели, посидите нескольких часов рядом с разработчиком графики для компьютерных игр.

Замкнутые контуры, образуемые ребрами

Изучая методы конструирования полигональных моделей, особое внимание обратите на замкнутые контуры, составленные из ребер (рис. 2.18). Они ограничивают некоторую область поверхности. Например, при конструировании лица замкнутый контур используется для очерчивания рта, бровей и глазных впадин (рис. 2.19). При моделировании тела эти контуры определяют форму туловища, рук и ног.

Чтобы понять, что такое замкнутый контур, вспомните, как на топографической карте изображается рельеф. Уровень возвышенности имеет вид замкнутой кривой. Если такую карту перенести в программу трехмерного моделирования и заменить кривые уровней на замкнутые контуры, составленные из ребер, неровности приобретут объем.

Обычно замкнутые контуры создаются путем разрезания пополам двух ребер и соединения точек разреза новым ребром. Эта операция оказывает существенное влияние на поведение модели в дальнейшем. При разрезании противоположных сторон прямоугольника получается два многоугольника с четырьмя ребрами (четырехугольника), см. рис. 2.20. Когда соединяют два смежных ребра, образуются треугольник и пятиугольник, которые могут стать источником неприятностей при деформировании персонажа (рис. 2.21). Лучше всегда создавать четырехугольники, поскольку

Рис. 2.18. Замкнутые контуры

Рис. 2.19. Очертания рта и глазных впадин, сформированные с помощью концентрических линий

Рис. 2.20. Результат разрезания и последующее соединение противоположных сторон прямоугольника

Рис. 2.21. Треугольник и пятиугольник, образованные при соединении прилегающих сторон.

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

Операция Subdivide для поверхностей

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

Операция дробления многоугольников включена практически во все системы трехмерного моделирования, и многие разработчики придумали для нее собственные названия, среди которых чаще всего встречается слово smoothing (сглаживание). Вот примеры из ряда популярных программ: Houdini - Smoothing; LightWave - MetaNurbs или Metaform; 3D Studio MAX - MeshSmooth, Tesselate и встроенные модули независимых поставщиков, например Surf Keys компании Infografica; Maya — Smoothing; Nichimen -Smoothing; Softimage - Rounding; trueSpace - Nurbs.

Превращение многоугольников в патчи

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

Простейший способ вычислить местоположение дополнительных элементов - отсечь определенные углы (рис, 2.22-2.23). Резчик по дереву

Рис. 2.22. Операция разделения двух линий

Рис. 2.23. Многократно сглаженные прямые

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

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

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

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

Рис. 2.24. Разделение граней

Рис. 2.25. Сочетание треугольников и четырехугольников, полученное благодаря сглаживанию

Сглаживание поверхности и анимация

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

Некоторые объектно-ориентированные пакеты, такие как 3D Studio MAX, LightWave и Houdini, позволяют сглаживать поверхность в любой момент, но обычно дизайнеры делают это после деформирования модели и создания анимации.

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

Рис. 2.26. Анимация методом разделения поверхностей

Другие пакеты, например Nichimen и Light Wave, позволяют автоматически сглаживать поверхность уже во время визуализации (как описано в предыдущем примере).

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

Ужасные булевские операции

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

После применения к модели булевской операции возникает масса ненужных многоугольников. Если вы посмотрите на след, появившийся в результате ее проведения, то увидите огромное количество крошечных граней, корректирующих изъяны на стыках объектов. Эти многоугольники практически не влияют на вид модели, но делают ее вдвое, а то и втрое «тяжелее». К тому же, при сглаживании булевские поверхности покрываются складками из-за нежелательных добавочных элементов, что показано на рис. 2.28. Сравните с этим изображением рис. 2.29, где проиллюстрирован результат выполнения аналогичных действий, но без использования булевских операций. Как видите, поверхность вокруг отверстия хорошо сглажена.

Рис. 2.27. Вычитание цилиндра из сферы с помощью булевской операции

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

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

Рис. 2.28. Результат сглаживания булевских поверхностей

Рис. 2.29. Получение хорошо сглаженной поверхности

Моделирование при помощи патчей

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

Линейные кривые (рис. 2.30). Это кривые первого порядка, состоящие из последовательности отрезков, соединяющих управляющие вершины. Кривые, определяющие поверхность, эквивалентны ребрам полигонального каркаса.

Приемы моделирования

Фундаментальные кривые (рис. 2.31). Это кривые второго порядка, проходящие через управляющие вершины, в каждой из которых задана касательная. Пат-чи, созданные на основе таких кривых, имеют четыре ряда вершин по каждому направлению, итого 16 точек. Управляющие вершины выходят за границы патча. Это необходимо из-за погрешностей интерполяции в конечных точках; дополнительные вершины определяют форму кривой.

Рис. 2.30. Линейная кривая

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

Кривые Безье (рис. 2.33). Это тоже кривые третьего порядка, аналогичные используемым в популярных программах рисования типа Adobe Illustrator. Кривая проходит через каждую управляющую вершину, в которой задана касательная; имеются два манипулятора, позволяющие управлять формой кривой по обе стороны от вершины. С их помощью можно выполнить интерполяцию в конечных точках, поэтому вершины располагаются на краях патча.

Рис. 2.31. Фундаментальная кривая

Рис. 2.32. В-сплайн

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

Кроме того, при моделировании широко используются NURBS-кривые (рис. 2.34).

Рис. 2.33. Кривая Безье

Рис. 2.34. Неоднородная форма В-сплайна

Регулярные поверхности

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

Регулярные поверхности особенно хороши тем, что предельно упрощают наложение текстуры. Осям U и V поверхности можно сопоставить непосредственно координатные оси X и Y изображения. Если объект создан только из одной регулярной поверхности, можно не применять проекционные координаты отображения к поверхности, как это делается для нерегулярного полигонального каркаса.

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

Рис. 2.35. Цилиндрическая поверхность, полученная из патча

Рис. 2.36. Формирование сферы путем стягивания поверхности к крайним вершинам

Создание патчей из кривых

Создавая поверхность при помощи патчей, удобно задавать ее форму с помощью кривых. Начертив соответствующие кривые, можно преобразовать их в поверхность при помощи следующих специальных инструментов моделирования:

Extrude (Экструдирование). Кривая, задающая профиль, перемещается вдоль указанной линии или пути. В результате формируется поверхность, похожая на цилиндрическую (рис. 2.37); Lathe/Revolve (Формирование поверхности вращения). Кривая, задающая контур, вращается вокруг оси, образуя поверхность подобно тому, как это делается на токарном станке. Получается поверхность, близкая к цилиндрической или сферической (рис. 2.38); Lofting (Формирование поверхности на основе сечений). Эта операция похожа на экструдирование, но позволяет задавать различные профили вдоль пути. В результате можно более гибко управлять формой поверхности (рис. 2.39);


Рис. 2.37. Операция Extrude

Skinning (Создание оболочки). Эта операция также называется U-loft или V-loft. Она очень сходна с операцией Lofting и позволяет формировать поверхность на основе заданных кривых (рис. 2.40); Ruled (Конструирование поверхности по двум кривым). Две кривые задают форму противоположных краев поверхности. Данная операция похожа на предыдущую, но поверхность строится вдоль кривой, а не перпендикулярно ей (рис. 2.41);

Boundary (Формирование поверхности с заданными краями). Три или четыре кривые задают края патча (рис. 2.42); BiRail (Формирование поверхности по двум направляющим). Одна или две кривые, задающие профиль, перемещаются вдоль двух кривых-направляющих, образуя поверхность. Если указан только один профиль, операция похожа на Extrude или Lofting, если два - на Boundary (рис. 2.43).

Рис. 2.38. Операция Lathe/Revolve

Рис. 2.39. Операция Loft


Рис. 2.40. Операция Skin


Рис. 2.41. Операция Ruled

Рис. 2.42. Операция Boundary

Рис. 2.43. Операция BiRail

Сшивание патчей

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

Чтобы решить данную проблему, следует накладывать патчи по одному и сшивать их друг с другом. Метод достаточно трудоемкий, но позволяющий с максимальной точностью контролировать процесс формирования поверхности. Теоретически все очень просто. Моделирование начинается с четырехугольного патча, созданного деформированием исходного прямоугольного или построенного на основе контурной кривой (рис. 2.44). Затем формируется второй патч, и его край совмещается с краем первого (рис. 2.45). Применение функции привязки обеспечивает точное соответствие вершин и ребер (рис. 2.46). Если ряды вершин состыкованы абсолютно точно, патчи ведут себя как одно целое.

Рис. 2.44. Формирование первого патча

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

Некоторые пакеты, например 3D Studio МАХ, обеспечивают автоматическую стыковку краев патчей, освобождая разработчика от утомительной привязки каждой пары вершин. С точки зрения пользователя, такой инструмент более эффективен, однако работает он по тому же, описанному выше алгоритму. Другие системы, к примеру, Maya, обладают инструментами, позволяющими задавать касательную при стыковке патчей, за счет чего шов становится незаметным.

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

Рис. 2.45. Совмещение вершин стыкуемых патчей


Рис. 2.46. Использование функции привязки


Рис. 2.47. Пример моделирования по методу стыковки патчей

Треугольные патчи

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

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

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

Следовательно, четырехугольный патч можно превратить в треугольный путем соединения всех точек одной стороны, чтобы они имели идентичные координаты в трехмерном пространстве (рис. 2.48). В сущности, то же самое происходит на полюсах сферы. Лучше выполнять такие операции над поверхностями, в основе которых лежат кривые малого порядка, например фундаментальные, но можно использовать и другие типы патчей, включая NURBS.

Имеется несколько пакетов, поддерживающих треугольные патчи другого типа, в частности программные продукты компаний Discreet и Hash.

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

Другой уникальный тип патчей имеется в системе 3D Studio MAX. Более всего они напоминают патчи, построенные на основе кривых Безье, поскольку каждая вершина имеет дополнительные манипуляторы для управления касательной к поверхности, причем все вершины лежат на поверхности. В данной системе, как и в Hash, можно создавать треугольные патчи.

Рис. 2.48. Получение треугольного патча из четырехугольного

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

Инструменты для манипулирования NURBS во многом похожи на инструменты, предназначенные для других типов сплайнов. При создании поверхностей, подобных сферам, к кривым могут применяться операции Lathe или Revolve. NURBS-кривые можно экструдировать или подвергать операции Skin, чтобы сформировать трубчатый или патч-объект. Во многих программах для построения NURBS применяются также инструменты Loft, Boundary и Bi Rail.

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

Кривые на поверхности

Одним из популярных методов конструирования ответвлений при помощи NURBS является создание кривой на поверхности. Кривая фиксируется на NURBS-поверхности и служит основой для создания ответвления. Существует два основных способа расположения кривой (операция Curve on surface) - см. рис. 2.49:

  • рисование кривой. В некоторых наиболее полнофункциональных пакетах кривые можно непосредственно рисовать на NURBS-поверхности в реальном масштабе времени. В результате линия «прилипает» к поверхности и остается в этом положении, как бы ни изменялась форма последней;
  • проецирование кривой. Существующая кривая проецируется на поверхность, как двумерный слайд. Следует учитывать угол проекции, поскольку он влияет на форму результирующей кривой. Обычно кривые проецируют под прямым углом, то есть вдоль нормали к поверхности. Кривая фиксируется на ней, следовательно, если форма поверхности будет меняться, то соответственно изменится и вид кривой, как если бы она была нарисована на поверхности.

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

Другие типы кривых на поверхности

Кривая, на основе которой выполняется операция Trim (Вырезание), также находится на поверхности. Она используется для вырезания фрагмента поверхности подобно тому, как при помощи формочки из раскатанного теста делается печенье. Подобным образом можно проделывать отверстия в NURBS-поверхностях; результат аналогичен достигаемому при помощи булевских операций. Вырезанные в результате проведения операции Trim участки поверхности не визуализируются. На рис. 2.50 показано, как эта операция используется для вырезания участка NURBS-поверхности, заключенного внутри кривой, лежащей на поверхности (посередине), или участка, расположенного вне кривой (справа).

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

Рис. 2.49. Создание кривой на NURBS-поверхности при помощи проецирования (слева) или непосредственного рисования на поверхности (справа)

Рис. 2.50. Использование операции Trim

Сопряжение NURBS-поверхностей

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

Сопряжение поверхностей при помощи операции Loft

Одним из способов создания незаметных переходов между поверхностями является применение операции Loft к кривой, еафиксированной на поверхности, и другим кривым, не прикрепленным к ней (рис. 2.51). В результате создается оболочка, один край которой совмещен с кривой, расположенной на поверхности. Единственная возникающая сложность заключается в том, что оболочка примыкает к исходной поверхности под прямым углом, и место стыка бросается в глаза.

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

Рис. 2.51. Использование операции Loft для NURBS-поверхностей

Рис. 2.52. Использование операции Blend для NURBS-поверхностей

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

Сопряжение поверхностей при помощи операции Blend

Другой, более изящный метод создания плавных сопряжений - операция Blend (Сопряжение). Она автоматически заполняет пространство между двумя кривыми, прикрепленными к поверхностям, и сопряжение имеет идеальную касательную (рис. 2.52). Особенно удобно ее применять при конструировании таких подверженных изгибам объектов, как плечи. Пригодится она и при моделировании лица. С ее помощью можно легко прикрепить к лицу нос или сформировать область, окружающую глаза. Операция Blend освобождает разработчика от дополнительных действий над деталями и касательными, которые возникают при непосредственном создании оболочки.

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

Сопряжение поверхностей при помощи операции Fillet

Другие инструменты, позволяющие автоматически создавать сопряжения, были разработаны на основе средств автоматизированного проектирования. При осуществлении операции Fillet (Сопряжение с округлением) конструируется сопряжение, имеющее полукруглый контур. Она идеально подходит для создания округленных стыков между примыкающими друг к другу поверхностями (рис. 2.53).

Сопряжение поверхностей при помощи операции Chamfer

Операция Chamfer (Округление углов) дает результат, противоположный результату Fillet. В ней округляются углы и формируется выпуклый профиль на месте стыка двух поверхностей (эти действия также называются снятием фаски) - см. рис. 2.54. Данная операция идеально подходит, например, для сглаживания углов и ребер параллелепипеда.

Рис. 2.53. Использование операции Fillet для NURBS-поверхностей

Рис. 2.54. Использование операции Chamfer для NURBS-поверхностей

Деформация при помощи поверхности

Деформация при помощи поверхности - это еще один инструмент, используемый такими производителями программного обеспечения, как Softimage, для создания незаметных переходов. Вместо фиксации кривой на поверхности предлагается прикрепить всю дополнительную поверхность к исходной. Данный метод можно использовать для конструирования деталей объекта или формирования основы ответвляющейся поверхности, например руки или ноги. Softimage делает это при помощи Zip-патчей, располагаемых между деформируемым патчем и свободной поверхностью. Однако патчи не фиксируются в результате математических расчетов, поэтому всегда видны небольшие несоответствия в расположении поверхностей, которые, правда, можно замаскировать при помощи текстуры.

Метод Metaballs

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

Данный метод реализован во многих пакетах под различными названиями. Некоторые программы позволяют лишь конструировать объекты при помощи Metaballs, другие также допускают анимацию. В пакете 3D Studio MAX нет собственного инструмента Metaballs, но можно использовать встроенные модули других производителей, в которых он реализован.

В пакете Clay Studio Pro допускается анимация, есть примитивы нескольких типов, возможно использование ассоциированного отображения и конструирования мышц на основе сплайнов.

В пакете MetaReyes допускаются анимация, ассоциированное отображение и конструирование мышц на основе сплайнов. В некоммерческом .пакете Blob Modeler средств анимации нет. В пакете Softimage данный метод присутствует под названием Meta Clay, имеются сферические и эллипсоидальные примитивы, допускается анимация.

В пакете LightWave есть только сферические примитивы и предусмотрены операции моделирования.

В пакете, Houdini имеются сферические и эллипсоидальные примитивы, а также допускается анимация.

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

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

Рассмотрим два шара одинакового размера (рис. 2.55). Область притяжения сферической формы окружает каждый из них подобно скорлупе. Любой другой шар, попадающий в зону влияния, соединяется с ними. Количество слияний зависит от веса. Если шары имеют одинаковый размер, они соединяются в месте пересечения их областей влияния. Степень слияния также определяется весом. Меняя вес и размер области притяжения, можно получать различные результаты. Чем больше сфера влияния, тем более мягким кажется объект, и с большим количеством объектов он сливается. С другой стороны, чем тяжелее сфера, тем более твердой и устойчивой она выглядит.

Многие реализации метода Metaball нe ограничиваются работой со сферами и допускают использование объектов, имеющих иную форму. Недавно разработанные пакеты позволяют создавать виртуальные мышцы, которые выглядят весьма реалистично (рис. 2.56).

Рис. 2.55. Пример использования метода Metaballs

Рис. 2.56. Примитивы, имеющиеся в мощных программах трехмерною моделирования

Недостатки метода Metaballs

В результате применения данного метода создается поверхность с крайне неупорядоченной структурой, которая с трудом прддается анимации. Кроме того, в большинстве программ технология Metaballs реализуется по алгоритму удаления кубов: на модель проецируется трехмерная координатная сетка и на ее основе формируется каркас. В результате вся поверхность модели покрывается гладким однонаправленным каркасом. Поверхности такого типа в исходном виде трудно использовать в анимации (рис. 2.57). Чтобы решить эту проблему, анимации подвергаются сами примитивы Metaballs, а в каркасное представление модель преобразуется непосредственно перед визуализацией (рис. 2.58).

Анимация объектов, созданных при помощи метода Metaballs

Имеются два способа так включить персонаж в анимацию, чтобы обойти проблему, связанную с неупорядоченным каркасом объектов, полученных в результате применения метода Metaballs. Во-первых, модель можно использовать в качестве шаблона, загрузить в программу, поддерживающую традиционные методы моделирования, и сконструировать персонаж заново на основе многоугольников, патчей или NURBS.

Рис. 2.57. Модель, созданная при помощи метода Metaballs

Рис. 2.58. Примитивы Metaballs, подвергнутые анимации

Во-вторых, можно подвергнуть анимации сами примитивы Metaballs и преобразовать поверхность в каркасное представление только перед визуализацией. В этом случае разработчик имеет более широкий простор для творчества, а персонажи выглядят мягкими и пластичными. В качестве примера вспомним кинофильм «Flubber», в котором технология Metaballs была использована для создания студенистых персонажей.

Единственная проблема, возникающая при использовании данного метода, связана с наложением текстур. Более совершенные пакеты позволяют выполнять ассоциированное отображение, то есть накладывать текстуры на сами Metaballs-примитивы. Это отображение переносится на поверхность и участвует в анимации персонажа. В более простых пакетах не допускается нанесение текстуры на примитивы, поэтому приходится накладывать ее на результирующую поверхность, и при анимации их движение выглядит несогласованным.

Заключение

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

В следующих главах рассматривается процесс моделирования персонажей разнообразными способами. По возможности выполните все предлагаемые упражнения.



Уроки анимации

школа ясновидения Женская форма имени Альбин. Происходит от латинского слова "альба" - белая. Альбина очень похожа на своего отца, в связи с этим о ее характере лучше судить по отчеству.