Моделирование на основе 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-примитивы. Это
отображение переносится на поверхность и участвует в анимации персонажа. В более
простых пакетах не допускается нанесение текстуры на примитивы, поэтому
приходится накладывать ее на результирующую поверхность, и при анимации их
движение выглядит несогласованным.
Заключение
Таким образом,
имеется множество различных типов поверхностей, которые используются при
конструировании персонажей. Стоит хотя бы раз поработать с каждым из них, чтобы
выбрать для решения конкретной задачи оптимальный.
В следующих
главах рассматривается процесс моделирования персонажей разнообразными
способами. По возможности выполните все предлагаемые
упражнения.
Источник: http://www.3dmir.ru/s_tutor/tutor/229.html |