Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ponimayka1

.pdf
Скачиваний:
123
Добавлен:
07.06.2015
Размер:
37.11 Mб
Скачать

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

Представьте себе полигональный кубик (можете даже создать его в MAYA). Примените к нему мысленно или на практике полигональную операцию Smooth (сглаживание). Затем примените

ее еще несколько раз. На десятой попытке, в паузе между операциями Smooth, можно без особой пешки попить чайку, на одинадцатой - сбегать в ближайшие кассы за билетом в Феодосию, а вот на двенадцатой паузе можно уже прекрасно провести время на море и, вернувшись после отпуска, обнаружить на экране гладкую сферу с некоторым количеством вершин. А теперь представьте, что будет после применения беконечного количества операций smooth. Результатом и будет sub- division surface, или сабдив.

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

Дело в том, что subdivision surfaces обладают такой же степенью гладкости, как и NURBS. Полу-математически говоря, любой сабдив может быть представлен как набор гладко стыкующихся кубических NURBS-патчей. Но при этом он остается одной поверхностью!

Следовательно, subdivision surfaces унаследовали все преимущества сплайнов плюс одно маленькое, скромное обаяние полигонов.

Поэтому моделирование в сабдивах ведется привычными полигональными методами, а результат отображается в виде гладкой поверхности а-ля NURBS. В некоторых забавных трехмерных программах даже используется термин metanurbs для обозначения subdivision surfaces.

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

Области применения методов моделирования

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

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

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

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

Любую сплайновую модель можно легко сконвертировать в полигональную сетку, поэтому область использования сплайнов существенно расширяется за счет изготовления «болванок» - для дальнейшей полигональной «Доводки». Обратное, к сожалению, невозможно, однако любая

161

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

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

заинтересовался вопросом о предсказуемом переводе полигональных

моделей в

сплайновые

поверхности,

могу сказать,

что для такого класса задач

существует

специальные

пакеты,

обтягивающие

высокополигональные

сетки,

полученные

в результате Зй-сканирования, адекватным количеством

сплайновых патчей

Самые известные из них

- Paraform и CySlice.

 

 

Еще раз отмечу, что с появлением эффективных методов работы с subdivision surface области использования полигональных инструментов моделирования существенно расширились,и это стимулировало как появление новых инструментов, так и совершенствование уже имеющихся Подробнее о всяких ZBrush, Modo и MudBox можно почитать в главе про полигоны.

Альтернативные и экстремальные методы моделирования

Рассмотренные методы моделирования с помощью NURBS, полигонов и сабдивов (subdivision surfaces) относятся к, назовем это так, традиционным методам моделирования. Какие же еще способы создания 3D-поверхностей существуют в природе?

Импорт и форматы данных

Звучит, пожалуй, довольно радикально, но к методам создания моделей в MAYA я бы смело отнес импорт объектов из альтернативных программ. Например, некоторые несознательные пользователи жить не могут без кривых Безье и без возможности каждый день подергать кривые и поверхности за «усики» и «гантельки». Эти пользователи могут спокойно моделировать свои кривые, например в Adobe Illustrator, а затем импортировать кривые в MAYA в формате .ai, чтобы затем обтянуть их поверхностями. Для импорта/экспорта поверхностей существуют другие форматы.

Для обмена полигональными объектами между 3D-пакетами стандартом де-факто до сихпор является формат OBJ (или wavefront obj). Этот формат сохраняет не только полигональную геометрию, но и текстурные координаты, поэтому большинство пакетов поддерживают импорт и экспорт в этот формат (в состав MAYA входит соответствующий плагин).

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

различных C A D ' O B .

Также существует некоторое количество специальных программ-конверторов (например, PolyTrans, созданный компанией Okino Computer Graphics), позволяющих целиком конвертировать сцены из одного 3D-пакета в другой, включая не только модели, но и анимацию, камеры источники света и другие объекты. Однако в последнее время компания Kaydara (купленна. кстати, создателем MAYA, компанией Alias, которую, в свою очередь, купила компания Autodesk известная как производитель пакетов для производства анимации Filmbox и MotionBuilder, очень агрессивно продвигает свой формат файлов FBX, рекламируя его как универсальный формат обмена трехмерными сценами между различными 3D-пакетами. Действительно, плагины дя импорта и экспорта в этот формат доступны для скачивания и абсолютно бесплатны (www.kaydan; com), причем с некоторого времени они уже включены в состав MAYA.

162

Метаболы

К менее радикальным методам создания трехмерных поверхностей можно отнести использование технологии «метаболов» (metaballs). Технология заключается в том, что вокруг нескольких полигональных объектов создается гладкая процедурная поверхность, равномерно обтягивающая все объекты. В MAYA нет встроенных иструментов работы с метаболами. Существовавший некоторое время плагин AM_Metaballs умер где-то между третьей и четвертой версиями МАYА, так и не выйдя из состояния перманентной бета-версии. Использование концепции метаболов реализовано также в плагине MTOR (MAYA То Renderman converter), но, правда, только на стадии рендеринга.

Процедурное моделирование

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

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

Система Paint Effects также являет собой яркий пример процедурного моделирования.

L-системы

Другой пример процедурного моделирования - это L-системы (L-systems, вестимо), описывающие создание древоподобной, «ветвистой» геометрии, с помощью задания коэффициентов ветвления. Это, конечно, довольно примитивное описание L-систем, поскольку с их помощью можно получать не только «ботанические» объекты, но и куда более замысловатую геометрию. Обидно, что простенький, но многообещающий плагин для работы с L-системами в MAYA не получил дальнейшего развития и «почил в бозе» пару лет назад. Так что на сегодня поддержки работы с L-системами в MAYA формально нет.

MEL-моделирование

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

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

Пожалуйста. Создайте кривую любой степени. Назовите ее proCurve. Создайте следующий expression:

float $x=2*sin(time*5);

float $y=2*cos(time*5)*sin(time*5); float $z=0.5*time;

if(frame==1) curve -p $x $y $z -r proCurve; else curve $x $y $z -a proCurve;

163

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

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

Примером процедурного MEL-моделирования могут служит скрипты, позволяющие строить траекторию объекта в виде кривой или рисующие циклоиды, кардиоиды, ленты Мёбиуса, бутылки Клейна, сапоги Шварца или другие кривые и поверхности.

Генераторы всего на свете

К системам процедурного моделирования можно отнести также всяческие генераторы ландшафтов, растительности, водной глади и прочих природных явлений и форм. Как правило эти системы осуществляют не только моделирование геометрии, но и процедурную анимацию полученных объектов, но, тем не менее, их первоочередной задачей является создание трехмерных объектов. Обычно эти системы представляют собой отдельные независимые программы либо плагины, расширяющие функциональность MAYA. Самые известные ботанические системы работающие с MAYA - это Xfog и Аmap. Популярны генераторы ландшафтов TerraGen и WorldBuilder. Процедурное моделирование и анимацию морских поверхностей осуществляет пакет Digital Nature Tools. Аналогичные задачи решает и встроенный в MAYA Fluids модуль Ocean.

Рисовальные эффекты как средство моделирования

Говоря про процедурное моделирование, нельзя не сказать про систему Paint Effect которая появилась в MAYA, начиная с версии 2.5, и которая представляет собой квинтэссенцию процедурного подхода. Возможность быстро создавать довольно сложные трехмерные объекты причем в большом количестве и с приемлемым качеством, делают Paint Effects полноценной системой моделирования. С помощью этой технологии можно создавать модели не только ботанической или другой узкой направленности, но и самому определять и направленность и законы, по которым новая геометрия возникает.

В пятой версии MAYA появилась возможность конвертировать штрихи Paint Effects в полигональные сетки. Это сделало ее полноценной трехмерной системой моделирования, явно относящейся к классу генераторов всего на свете.

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

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

Во-вторых, как в анекдоте про обрезание, Paint Effects - это просто красиво.

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

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

И, «в-последних», без умения работать с кривыми трудно будет эффективно использовать Paint Effects, поэтому тут уже от изучения сплайновых инструментов не отвертеться.

164

Примечание.

Пользователям пакета Expressions легко

перенести

привычную

концепцию процедурных кистей на трехмерный случай.

Опыт работы

в Painter

также будет

очень полезен.

 

 

В главе, посвященной Paint Effects, описан довольно подробный пример моделирования (а также анимации и рендеринга) насекомых в большом количестве. Хотите попробовать себя в процедурном моделировании? Начинайте с этого энтомологического примера.

на

165

Эта глава построена следующим образом. В начале много теории (я было написал «немного теории», но вскоре понял, что неправ). При этом теория излагается в основном на примере работы

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

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

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

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

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

Работа с кривыми

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

Применения кривых

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

Однако анимация вдоль пути невозможна без построения кривых. Некоторые операции полигонального моделирования (например, Extrude Face) также используют кривые для построения поверхности. И динамика волос базируется на кривых. Кисти Paint Effects часто удобно класть на готовые кривые. Деформеры Wire или Wrap используют кривые для анимации формы. Испускание

166

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

Немного теории

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

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

у = х З

или

у = х 2

представляет из себя гладкую параболу.

А уравнение

у = а*х + Ь

задает просто прямую.

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

х = t y = t 3

а уравнение прямой как

у= a*t + b

Вобщем трехмерном случае параметрическое задание кривой выглядит как

х = а + b*t +

с * t 2

+ d*t3 + ...

у = р + q*t +

r * t 2

+ s*t3 + ...

z = i + j*t + k * t 2

+ m*t3 + ...

Здесь t является параметром, а остальные буквы - коэффициентами. Максимальная степень, с которой t входит в такие уравнения, называется степенью кривой.

Представьте себе теперь, что параметр t потихоньку растет, а х, у и z в левой части этих формул также меняются, рисуя в пространстве некую трехмерную траекторию. Это и есть кривая, заданная параметрически.

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

167

моделирования! будет неэффективным.

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

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

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

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

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

Степень и гладкость

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

Тангенс и кривизна

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

168

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

«Кривизна» действительно обозначает кривизну в точке кривой, то есть величину обратно пропорциональную радиусу окружности, максимально удачно вписанной в точку на кривой. Если кривая прямолинейная, то радиус такой окружности бесконечен, а кривизна равна нулю. Кривизну также можно абстрактно представить как скорость изменения касательной в точке.

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

Непрерывность

Если конец одной кривой просто совпадает с началом другой, то говорят, что кривые имеют непрерывность по позиции (positional continuity). Кривые в этом случае, могут встречаться под любым углом. Такой вид непрерывности иногда обозначается как G0.

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

169

Если же в точке соединения совпадает не только тангенс, но и кривизна обеих кривых, и кривые имеют непрерывность по кривизне (curvature continuity, G2). Иначе говоря, стыкуются по кривизне.

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

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

Рассмотрим теперь все эти понятия и названия на примере работы с кривыми. А про пугающую параметризацию поговорим чуть позже.

Создание кривых. Практические инструменты и методы

Можно выделить несколько способов создания кривых в MAYA.

Во-первых, существует два примитива в меню Create=>NURBS Primitives. Это круг ­­­­

cle и квадрат Square. Пропустим их обсуждение. Также пропустим инструменты создания дуг Create=>Arc Tools.

Во-вторых, если вы привыкли работать с кривыми в любимой программе Adobe Illustrator, можете продолжать в ней работать. Втащить эти кривые в MAYA вы можете с помощью операции File=>Import или с помощью специального инструмента для создания трехмерных текстов из кривых: Create=>Adobe Illustrator Object.

Остальные способы получения кривых не так тривиальны и требуют некоторых действий от пользователя. Кривые можно «отдирать» от поверхностей, в том числе и от полигональных ребер. Можно пересекать поверхности, порождая кривые в местах пересечения. Можно резать и соединять несколько кривых. Но основной способ, естественно, это создание кривых вручную с помощью CV Curve Tool и ЕР Curve Tool.

170

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]