WWW.DISS.SELUK.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА
(Авторефераты, диссертации, методички, учебные программы, монографии)

 

Pages:     | 1 |   ...   | 2 | 3 || 5 | 6 |   ...   | 13 |

«В двух книгах Книга первая ООО Арт Хаус медиа Москва 2007 Цыпцын Сергей. Понимая MAYA Издательство ООО Арт Хаус медиа, 2007 В двух книгах/ М. Издательство ООО Арт Хаус медиа, 2007 1428 с. ISBN 978-5-902976-03-5 Эта ...»

-- [ Страница 4 ] --

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

Использование нод не по назначению. Real Trans Objects.

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

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

В новой сцене создайте полигональный тор, растяните его (scale =7) и, как обычно, добавьте в сцену сплайновый конус (или цилиндр).

Теперь без всякого контакта с динамикой волос выполните в Script Editor команду:

createNode follicle;

Обратите внимание: в Outliner тут же появится новый объект follicle1. На самом деле были созданы две ноды: одна типа follicle, имя которой follicleShape1, а другая типа transform, называемая f o l l i c l e i. (Наиболее подкованные умы даже, возможно, сообразят, что folliclei представляет собой DAG-объект.) Выбрав в Outliner новый объект, можно пойти в Attribute Editor и обнаружить там две закладки. Во второй закладке (follicleShape1) можно увидеть два атрибута Parameter U V /, определяющих, очевидно, в каком месте поверхности должно находится основание волоса.

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

Прежде всего, надо сообщить ноде типа follicle, с какой поверхностью она будет иметь дело.

Для этого откройте Connection Editor.

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

Нажмите в Connection Editor кнопку Reload Left, чтобы загрузить атрибут pTorusShape1 в левую панель.

Затем выберите в Outliner объект follicle1 и опять нажмите стрелку вниз, чтобы выбрать ноду типа follicle (follicleShape1), а не transform.

Нажмите в Connection Editor кнопку Reload Right.

Сначала соедините атрибут World Matrix ноды pTorusShape1 с атрибутом Input World Matrix ноды follicleShape1.

Затем также присоедините атрибут OutMesh слева и атрибут Input Mesh справа.

Теперь нода follicleShape1 «знает», с какой поверхностью она работает, и потому будет однозначно вычислять трехмерные координаты точки, заданные атрибутами Parameter U/V.

В принципе осталось присоединить эти вычисляемые значения к конусу, чтобы «посадить»

его на поверхность.

Для этого достаточно загрузить ноду follicleShape1 в левую панель Connection Editor (не забываете про стрелку вниз), а конус - в правую панель.

Далее надо присоединить атрибуты Out Translate и Out Rotate слева, соответственно, к атрибутам Translate и Rotate конуса справа.

Конус мгновенно «прыгнет» на поверхность и повернется так, чтобы смотреть по нормали к поверхности своей локальной осью Z.

Дальше, конечно, можно быстро поколдовать с локальными осями, чтобы развернуть конус макушкой по нормали (например, в Attribute Editor задать для конуса Rotate Axis=90 0 0.) Однако можно использовать более гибкий и функциональный подход.

Отсоедините в Connection Editor атрибуты конуса от ноды follicleShape1.

У нас в сцене «пропадает» целый transform по имени follicle1, который грех не использовать.

Глазастые, умы наверное, уже заметили на экране специальную иконку для него.

Выберите follicle1 в Outliner и загрузите его в правую панель Connection Editor.

Затем присоедините атрибуты Out Translate и Out Rotate ноды follicleShape1 слева, соответственно, к атрибутам Translate и Rotate ноды follicle1 справа.

Теперь follicle1, а не конус разворачивается перпендикулярно поверхности. Но зато теперь но припарентить к follicle1 наш конус и потом уже развернуть его, как нам нужно.

Перетащите и бросьте в окне Outliner конус на follicle1 средней кнопкой мыши.

Преимущество такого подхода состоит в том, что мы теперь можем дополнительно вращать или смещать конус относительно точки «закрепления» на поверхности. Задайте для конуса rotateX=90, и он развернется макушкой вдоль нормали к поверхности тора.

Чтобы задать положение конуса на поверхности, надо выбрать f o l l i c l e i и в Attribute Editor, во второй закладке, установить нужные значения атрибутов Paramete U/V, задающих координаты точки на поверхности. Задайте ParameterU=ParameterV=0.5, и конус переместится на внешнюю часть тора.

Примечание 1. Как видите, нода follicle работает не только со сплайновым поверхностями, но и с полигонами. Однако вы должны понимать, что в отличт от сплайнов, полигональные поверхности не всегда имеют хорошие и равномерна распределенные UV-координаты, поэтому вам надо заранее позаботиться о тон, чтобы в том месте поверхности, куда вы собираетесь «сажать» ваши объекты, были адекватные значения UV-координат.

Примечание 2. Большое преимущество такого подхода в том, что в разделе Extra Attributes у ноды follicle есть атрибут Map Set Name, позволяющий задать, из какого UV-набора будут использоваться UV-координаты для определения положении Примечание 3. В случае сплайновых поверхностей вместо атрибута outMesh надо присоединять атрибут Local от поверхности к атрибуту Input Surface ноды fol­ Полученная сцена сохранена как follicleConstraint.ma. Вы всегда можете открыть ее, кап образец, и исследовать связи между объектами в Hypergraph.

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

Примечание. Самые проницательные умы конечно же, обнаружат в тайниках MAYA вяло документированные ноды furPointOnMeshlnfo и furPointOnSubd. Никто не может запретить вам использовать их для решения только что описанной задачи. Эти же ноды позволяют также определить, в пределах какой грани (facelndex) вы хотите задать точку на поверхности.

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

Цветокоррекция.

Использование анимационных кривых не по назначению Для получения качественной картинки почти всегда в шейдерах приходится использовать разного рода текстуры, и в первую очередь текстуры для цвета. И почти всегда исходный материал для них приходится дорабатывать. Отчасти из-за специфики освещения (свет может быть сильным или даже цветным), отчасти для того, чтобы добиться точного цветового баланса между различными составляющими сцену объектами при рендеринге. Определенным образом можно «подправить» цветовой баланс используемой текстуры в Attribute Editor с помощью атрибутов из раздела Cotor Balance, но для более сложных правок приходиться пользоваться внешними программами, например, это Photoshop.

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

Откройте новую сцену.

Откройте HyperShade и выделите материал lambert1.

Перетащите его в рабочую область HyperShade и увеличьте его изображение.

Выбрав его, откройте Attribute Editor и назначьте на канал цвета какую-нибудь файловую текстуру. Возьмите, например, стандартное изображение:

X:\Program Files\Alias\MayaN.N\brushlmages\wrapCloud.iff Можно заметить, что текстура назначилась не только на цвет, но и на прозрачность (это ненавязчивый «майский» сервис, распознающий альфа-канала в назначаемом изображении.) Выберите в HyperShade материал lambertl и покажите его входные связи (Graph=>lnput Connections.) Выделите связь, идущую на прозрачность материала (transparency), и удалите ее, чтобы лучше видеть текстуру, назначенную на цвет.

Попробуем встроить в наш материал конструкцию, функционально повторяющую известный и один из наиболее общеупотребительных инструментов Photoshop'a: Adjust Curves.

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

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

Вопрос в том, как создать «пустые» анимационные кривые? Можно, конечно, установить ключи на какой-нибудь объект, а потом убрать в Hypergraph все связи анимационной кривой с другими нодами (в данном примере понадобились бы ключи и анимационная кривая от инструмента Set Driven Кеу). Однако проще сделать кривые с помощью команды createNode, создающей ноды определенного типа.

Итак, откройте Script Editor и выполните три набора команд, создающие три анимационные кривые, которые позволят нам модифицировать каждый из цветовых каналов (RGB) текстуры:

createNode animCurveUU n redColorCorrectionCurve;

createNode animCurveUU -n greenColorCorrectionCurve;

createNode animCurveUU -n blueColorCorrectionCurve;

Обратите внимание, что после каждой команды createNode следует пара команд setKey­ frame, расставляющая два ключа на только что созданной кривой. Можно, конечно, было бы пытаться добавить ключи к пустой анимационной кривой «вручную», через Graph Editor, но поверьте мне: выполнить две MEL-команды гораздо проще. Длинные имена после флага -п для!

создаваемых кривых совершенно ни к чему, это, так сказать, эстетские выкрутасы.

Теперь мы должны разорвать связь атрибутов file1.outColor и lambert1.color, затеи выход каждого из цветовых каналов текстуры (красного, синего и зеленого) подать на вход соответствующей анимационной кривой, а затем выходы анимационных кривых подать на соответствующие цветовые каналы материала lambert Выделите и удалите связь между file1.outColor и lambert1.color в HyperShade.

Затем откройте Connection Editor, выделите текстуру f i l e l и загрузите ее в левую панель Connection Editor.

Для того, чтобы быстро разыскать созданные анимационные кривые, откройте Outliner и снимите в его меню галочку DAG Objects Only.

Выбрав затем redColorCorrectionCurve, загрузите ее в правую панель Connection Editor.

Соедините Out Color R слева и Input справа.

Проделайте тоже самое с кривыми greenColorCorrectionCurve и blueColorCorrectionCurve, загрузив их в правую панель Connection Editor и присоединив их атрибут Input к атрибутам текстуры Out Color G и Out Color В, соответственно.

Совет. Можно загрузить в правую часть Connection Editor сразу несколько выбранных объектов, чтобы сэкономить время и соединить несколько атрибутов Теперь подсоединим кривые к материалу lambert1. Выберите все три анимационны кривые в Outliner и загрузите их в левую часть Connection Editor. Для удобства можете выполнил Left Display=>Outputs Only. Затем выберите lamberti и загрузите его в правую часть Connection Editor.

Присоедините аттрибут Output анимационной кривой redColorCorrectionCurve к каналу (атрибуту) Color R материала lambert1. Проделайте то же самоес кривыми greenColorCorrectionCurvt и blueColorCorrectionCurve, соединяя их атрибут Output с Color G и Color В, соответственно.

Если взглянуть на связи в HyperShade, то выглядеть это будет примерно так:

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

кривых, то можно выбрать его, а затем открыть окно Graph Editor и увидеть анимационные кривые для каждого цветового канала. (Только не забудьте нажать клавишу «f».) Выбирая каждый канал в Graph Editor, можете отредактировать соответствующую кривую всеми известными способами. Результат будет моментально отражаться в HyperShade.

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

Примечание. Если связи присоединяются к индивидуальным каналам цвета материала (как в нашем случае), то MAYA плохо обновляет цвет материала на экране в окне камеры. Чтобы избежать этой проблемы, надо собрать три входящих в цвет атрибута и преобразовать их в один «тройной» атрибут, а потом уже подать «целиком» на цвет материала. В нашем случае это можно сделать, например, создав ноду-утилиту MultiplyDivide, задав ей Operation=No Op­ eration, и присоединив выходы - атрибуты Output - от анимационных кривых на атрибуты InputlX, InputlY, InputIZ, соответственно. Выход этой утилиты, то есть «тройной» атрибут Output, надо присоединить к атрибуту Color материала Приведенный пример еще раз подчеркивает, что вы не должны ограничивать себя только «документированными» способами построения дерева сцены. Для создания сети материалов вы «траве использовать не только утилиты из меню Create окна HyperShade, но ноды других типов, «старые решают поставленную вам задачу. И наоборот, вы можете использовать текстуры для (правления совсем не «текстурными» свойствами объектов, например, количеством испускаемых с поверхности частиц.

Методы оперативного вскрытия и анализа внутренностей.

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

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

Paint Effects. Необходимо изучить всего две ноды: штрих (тип stroke) и кисть (тип brush). Конечно количество атрибутов ноды brush велико (их более трех сотен), однако не нужно изучать ничего кроме свойств этих двух объектов. Большинство операций из меню Paint Effects работает с атрибутами ноды brush, изучив устройство которой, вы легко поймете, как они работают.

Fluid Effects. Еще проще. Все свойств нового объекта зашиты в нем самом. Контейнер (нод типа fluidShape) содержит в себе атрибуты, описывающие не только положение его в пространстве но и все динамические свойства, визуальные характеристики, параметры текстурирования даже алгоритмы просчета уравнений движения сплошной среды. Алгоритмы рассортированы по разделам и все, что вам надо сделать - это как следует их пошевелить, делая выводы, о том, какое предназначение они имеют.

Динамика твердых тел. Нетрудно заметить, что на каждом объекте, превращенном в твердое тело, появляется некая «скорлупа» - нода типа rigidBody, которая содержит в себе набор атрибутов, определяющих именно динамические свойства твердого тела, такие, как упругость или масса. Игра с этими атрибутами позволяет быстро выяснить их назначение. (Атрибуты с неочевидными свойствами описаны в документации к ноде rigidBody.) Изучение связей этой ноды в Hypergraph позволяет обнаружить еще одну важную ноду типа rigidSolver, ответственную я просчет движения всех твердых тел в сцене. Знание ее атрибутов необязательно, но желательно так как понимая предназначение ее атрибутов, вы сможете решать проблемы с той точностью, с какой производится обсчет траекторий и коллизий.

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

Динамика частиц. Большинство свойств частиц, как динамических так и визуальных, собраны в одной ноде типа particleShape. Источники частиц (ноды типа emitter) также имеют набор вменяемых атрибутов, хорошо поддающихся дрессировке. Конечно, от знания expressions для частиц вас никто не освобождал, но следует помнить, что такие expressions, как правило, модифицируют значения атрибутов (скорости, ускорения и пр.), назначение и тип которых надо понимать.

MAYA Fur. Все основные свойства меха сосредоточены в ноде типа FurDescription. Можно рассматривать ее как большую процедурную текстуру. Изучив параметры такой текстуры, можно довольно быстро освоится с «майским» мехом. Конечно, работа с картами атрибутов меха требует некоторого времени для освоения и понимания, однако вам не придется сталкиваться с многочисленными вспомогательными объектами. Вся работа с мехом выполняется, как правило, с помощью Attribute Editor для ноды FurDescription и инструмента Fur Paint Tool, меняющего атрибуты этой ноды. Свойства специального рендерера для визуализации меха также сосредоточены в одном месте, в ноде типа FurGlobals, атрибуты которой довольно внятно описаны в документаци (иногда в документацию заглядывать придется, особенно когда речь заходит про рендеринг).

MAYA Hair. Совершенно шикарная и стройная концепция. Всего две ноды определяют поведение и внешний вид волос. Общие свойства прически задаются нодой типа hairSystem включая форму, цвет, физические свойства и параметры численного просчета траекторий.

Индивидуальные свойства каждой -волосины» определяются атрибутами ноды типа follicle.

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

К сожалению, часть MAYA, касающуюся моделинга и анимации, не удастся так же ловко описать, пользуясь концепцией работы с атрибутами базовых нод. Форма объекта определяется набором точек, редактируемых, как правило, вручную (никто, кроме программистов, не пытается изменять атрибут inMesh! (, а вид анимации задается набором ключей, которые также проставляются в основном вручную. Количество вспомогательных объектов и операций для моделирования и анимации чудовищно велико, поэтому и освоение этих областей MAYA требует и времени и усилий, несопоставимых с другими модулями. Но делать нечего - из MAYA слова не выкинешь. В дальнейших главах я попробую взглянуть на моделирование и анимацию изнутри и попытаться описать логику использования инструментов и ключевые понятия, лежащие в основе их «майской» реализации.

Догоняя MAYA Благодаря MAYA, мне довелось много путешествовать. Первая вылазка была в ноябре года на тренинг по MAYA в Лондоне. Главным техническим специалистом в компании, где я тогда работал, был Леша Плотников, человек добрейшей души и центнера весу. Именно он и должен б л поехать учиться, и на вопрос начальства: «Леша, поедешь на учебу в Лондон?», Леша широко улыбался и мечтательно растягивал: «Да-а-а-а!...». Однако в ответ на следующий вопрос: «А что у тебя с загранпаспортом?», Леша вдумчиво мял свою шикарную бороду и, как настоящий митек, отвечал: «Ну, дык, ведь, елы-палы, типа, паспорт, кхгм...». Что означало: паспорта нет, но он постарается.

И в результате в Лондон поехал я. В аэропорту Хитроу таксист спросил меня, куда ехать, на таком английском, что я подумал, будто перепутал самолеты и улетел в другую страну, языка которой не знаю. Позже выяснилось, что это был «кокни» (лондонский диалект), но тогда «всерьез призадумался, а пойму ли хоть слово на будущих занятиях. Занятия, впрочем, мало походили на учебу, несмотря на то, что сидеть пришлось всего по двое за одной станцией SGI lndigo. Все равно это больше напоминало групповую медитацию или массовое просветление. Франк Китцен показывал какие-то такие невероятные вещи в MAYA, что со всех сторон неслось: «Не может быть!», «Конец глазам!», «Разбудите меня!», «Фрэнк, давай еше!». И Фрэнк давал еще...

Так продолжалось три дня. С тех пор я перестал играть в компьютерные игры. Есть только одна игра, и я привез ее из Лондона...

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

Партсобрание компании Alias I Wavefront проходило тогда в Испании, в местечке Марбейя около Малаги, поэтому без шенгенской визы туда было никак не добраться. Дима Озерец, с которым мы должны были вдвоем лететь в январскую Испанию, счастливый обладатель трехгодовой визы, утром уехал в Шереметьево, ехидно заметив, что мероприятие начинается на следующий день в 10 утра, и было бы любопытно посмотреть, как я собираюсь успеть к началу, не имея не то что билетов, но и визы на руках. Ласково глядя ему вслед, я уныло поплелся в посольство, вызволять свой незавизированный паспорт. Там, однако, мне сообщили, что ультракомпьютер заработал, и выдали мне визу в течение пяти минут. И вот в два часа дня я стою на улице Кравченко и соображаю: как же успеть на встречу с MAYA завтра в 10 утра?

Марш-бросок в Шереметьево и опрос девушек, продающих билеты, показал, что все рейсы в Испанию на сегодня давно улетели. «А куда еще не улетели? Дайте билет на попутный самолет!», истошно вопрошал я, лихорадочно прокладывая в голове маршрут в сторону Испании.

Очаровательно улыбаясь, девушки отправили меня последним самолетом в Мюнхен. Разница во времени работала на меня, и в аэропорту Мюнхена я снова общался с девушками и ловил попутный самолет. Он был только до Барселоны. Я летел над Пиренеями поздним вечером и соображал, как же проехать восемьсот километров от Барселоны до Малаги: автостопом или на поезде совершенно не предполагая, что самолеты могут летать по ночам. Однако совершенно случайно в самолете Мюнхен-Барселона, в тот момент, когда все уже нетерпеливо толпились в проходе в ожидании трапа, я вдруг обнаружил соотечественника, давно живущего в Испании и знающей в каком направлении надо совершить забег по безумному аэропорту Барселоны, чтобы попасть к кассам внутренних авиалиний. Забег (не меньше километра) был совершен, и я в третий раз умолял очередных девушек устроить меня на аэропопутку. И хотя билетов не было, лист ожидания был открыт, и через час я уже сидел в довольно забавном самолете, берущем курс на Малагу Проехать оставшиеся 60 ночных километров оказалось делом техники, отточенной еще в Москве до совершенства, и в два часа ночи я застал участников грядущего семинара, идущих из бара нетвердой походкой. Видели бы вы лицо Димы...

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

Возвращение обратно было не менее замысловатым. Я уговорил Диму вылететь на сутки позже из Мадрида, а освободившийся день использовать для поездки в Сьєрра-Неваду аргументируя, что это как раз по пути. Я давно мечтал попасть на этот самый южный горнолыжни курорт Европы, у меня просто в голове не укладывалось, как в семидесяти километрах от м р оя могут существовать горы высотой более трех километров и все это - прямо напротив марокканскогс побережья Африки (http://www.iespana.es/sierra-nevada/). Мы взяли напрокат маленький «Фиат»

и двинулись на восток, вооруженные картой и моим оптимизмом. По дороге Дима не один раз пристально поинтересовался, а не будет ли осложнений на дороге при подъеме на такую высот) (ведь именно он сидел за рулем), и я с видом коренного тореадора уверенно отвечал, что дорога будет просто шикарная. Действительно, первые 150 километров оказались чудовищно хороши, в Гранаде мы набили багажник изумительным вином "Malaga" и начали углубляться в материк. Я по-прежнему обещал чудесную дорогу до самой Сьерра-Невады и остервенело изучал карту. Ве с было просто прекрасно, правда, когда до цели оставалось двадцать километров, пошел мелкий дождь. Минут через 15 он превратился в уверенный ливень и Дима начал нехорошо посматривал на меня. Вдобавок моментально стемнело, и фары маленького «фиата» с трудом выхватывал горную обочину из хлещущего в темноте ливня. Когда указатель сообщил, что до цели - пять километров, дождь без всяких предупреждений превратился в снег. Дорога кучеряво лезла вверх, но наша машина цеплялась за нее всеми колесами... Дабы не пугать себя, я старался на поворачивать голову в сторону Димы и тщательно считал стометровые столбики, которые были пусть с трудом, но видны. Когда, по моим подсчетам, мы должны были въехать в поселок, снег превратился в настоящий буран, и мы, естественно, проскочили поворот в кромешной тьме, продолжая карабкаться куда-то в тучи. Подозрительным казалось также полное отсутствие машин на дороге в течение уже довольно длительного времени. В салоне было тепло и темно, и лишь побелевшие костяшки водительских пальцев, судорожно вращавших руль, освещали озверевшее лицо Димы. Когда появился непредвиденный поворот, мы обнаружили, что, проскочив въезде поселок, мы взобрались на уровень первой очереди подъемников и перед нами открылся туманный вид освещенного поселка, лежащего прямо внизу перед нами. Причем буран неожиданно стих или просто остался за спиной, а вниз, в поселок, по склону сбегала практически прямая дорожка, Сбегать-то сбегала, но прямолинейность дороги с лихвой компенсировалась ее крутизной.

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

Если бы у водителя еще оставались силы, я вряд ли писал бы сейчас эти строки...

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

Однако солнечным утром мы обнаружили абсолютно чистую дорогу с остатками тающего снега.

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

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

Поскольку MAYA позиционируется в основном как средство для анимации и спецэффектов набор ее инструментов моделирования в основном предназначается или, как говорится, «заточен»

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

Еще чуть-чуть «воды»

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

История моделирования, но не Construction History Давным-давно трехмерные модели были исключительно полигональными, поэтому у компьютерных художников не было особых проблем с выбором подходящих инструментов моделирования. Рахитичные компьютеры того времени еле ворочали скудное количество полигонов по экрану, так что моделировать приходилось частично вслепую, оценивая результат лишь по итогам рендеринга. Однако пытливые умы из рядов инженеров-конструкторов разработали для своих секретных нужд программы типа CAD (Computer Aided Design, дословно «дизайн с помощью компьютера»). Эти программы использовали параметрическое представление поверхностей и дали миру инструменты сплайнового моделирования. История умалчивает, как все было на самом деле, однако, по-видимому, группа товарищей-художников, зайдя «на чашку пива» к группе приятелей-инженеров, увидела в одночасье, что форму сложной поверхности можно гладко изменять с помощью лишь нескольких контрольных точек. Вот тут вся художественная команда явно призадумалась... В результате, так или иначе, появился новый класс методов моделирования и началось победное шествие сплайновых инструментов в индустрии компьютерной графики. К слову сказать, еще в 1999 году, когда я обучался в компании Alias - тогда еще Wavefront, сплайновые инструменты позиционировались как оружие будущего, а полигоны - как скромные труженики села. Про сабдивы тогда никто вслух еще не говорил. Боялись.

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

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

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

Однако у сплайнов был маленький недостаток по сравнению с полигонами - объект не мог иметь произвольную топологию (или, если попроще, форму). Любая сплайновая поверхность всегда обязана быть сеткой из изопарм. Иначе говоря, сеткой из взаимно пересекающихся «параллельных»

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

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

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

Один из моих лучших учеников, Миша Лапицкий, человек с великолепным художественным образованием и талантом, приходя в ужас от излагаемых мной кошмаров от всяческих «бирэйлов»

(birail), «стичей» (stitch) и «алайнов» (align), просто брал сплайновый цилиндр, сгибал его так, чтобы о и край цилиндра принимал форму шеи, а второй сужался в область ротового отверстия. Затем в течение получаса, добавляя, где надо, дополнительные ряды контрольных точек, Миша лепил потрясающие, выразительные головы, заявляя при этом, что никогда скульптору не понять различия между типами параметризации поверхностей и что он хочет просто моделировать персонажей, а не делать бесконечный «ребилд» (rebuild)... И пусть его модель была «неправильная» (то есть имела массу лишних контрольных точек в неиспользуемых областях), но еще через полчаса для нее появлялись «блендшейпы» (blendshapes) для морфинга, и модель начинала говорить, причм не надо было бояться, что где-нибудь могут разъехаться швы между патчами. (Вышеупомянутый метод моделирования хорошо известен и называется sock-head. Я подозреваю, что его придумал художники, озверевшие от «инженерности» сплайнов. И до сих пор продолжают придумывать другие методы...) Смысл моих эмоциональных и субъективных эскапад, сводится к тому, что единственна скромное преимущество полигонов перед сплайнами (а именно, возможность поверхности иметь произвольную внутреннюю топологию) не может быть скомпенсировано никакими изощреннейши»

сплайновыми инструментами.

И тут появились сабдивы...

Терминологичекий комментарий. Если с полигонами все понятно, и даже воет\ патриотический термин «многоугольники» практически не путает пользователе, то в отношениий сплайнового моделирования в народе употребляется мои терминов: «нурбсы» (NURBS), «сплайны», «Безье», «патчи», кто-то слыша даже про формы Эрмита и кубические параболы. Термин «сплайны» означж> параметрические кривые и поверхности, которые бывают разных типов. Сшт сложный и гибкий класс называется NURBS (non-uniform rational b-splines).

«Би-сплайны» означает, «базовые сплайны», здесь буква Ь означает basic.Это специальный тип сплайнов, которые могут быть быстро вычислены как сумма базовых функций. Он был придуман еще в 1946 году, однако методы быстрого рекурсивного вычисления би-сплайнов появились только 1972 году.

Слово «неравномерные» (non-uniform) означает возможность неравномереной параметризации вдоль протяженности поверхности, хотя в основном работа ведется с равномерными (uniform) сплайнами.

«Рациональные» (rational), означает, что котрольные точки могут иметь разные веса и притягивать к себе поверхность по-разному, хотя опять же, по умолчанию работа в MAYA ведется с нерациональными поверхностями и кривым:

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

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

Термин «сабдивы» окончательно прижился для обозначения subdivision surfaces, или «поверхностей разбиения» (это, правда, довольно неуклюжий термин;

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

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

П ч м так и что же такое сабдивы?

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

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

Дело в том, что subdivision surfaces обладают такой же степенью гладкости, как и NURBS.

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

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

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

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

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

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

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

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

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

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

Примечание. Пытливые умы тут, конечно, встрепенутся: ведь в 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.

Метаболы К менее радикальным методам создания трехмерных поверхностей можно отнести использование технологии «метаболов» (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;

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

Примером процедурного 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

А уравнение задает просто прямую.

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

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

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

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

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

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

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

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

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

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

Степень и гладкость Терминологически сложились некоторые названия для объектов первой и третьей степени.

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

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

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

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

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

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

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

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

Если же в точке соединения совпадает не только тангенс, но и кривизна обеих кривых, и кривые имеют непрерывность по кривизне (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.

Добраться до этого инструмента можно через меню Create. Как и положено инструменту (Tool), курсор принимает определенную форму, и вы попадаете в контекст инструмента, то есть MAYA ждет от вас активных действий. Как следует из Help Line, нужно пощелкать мышкой в окне, расставляя контрольные точки (CV или Control Vertices), а затем нажать Enter, чтобы вернуться к о н м из стандартных инструментов, который использовался до выбора CV Curve Tool.

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

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

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

Каждое дальнейшее добавление контрольной точки вызывает добавление нового сегмента (span). Для изучения свойств кривых бывает удобно включить отображение сегментов для всех создаваемых кривых. Это можно сделать в Windows=>Settings/Preferences=>Preferences..=>NURBS, аключив галку New Curves- Edit Points.

Естественно, форму кривой можно отредактировать после построения, нажав правую кнопку мыши над кривой и выбрав в качестве компонент Control Vertices. Далее употребляя все известные инструменты трансформаций (а не только Move Tool), вы можете делать с контрольными точками все, что хотите.

С о в е т. При интенсивном таскании за точки иногда хочется сразу хватать и тащить вершину, а не сначала выбрать и только потом тащить. Нужная галка находится по адресу Windows=>Settings/Preferences=>Preferences...=>Selection=>Curve Если ВЫ хотите «достраивать» уже имеющуюся кривую, выберите ее и используйте Curves=>Add Point Tool.

Пытливые умы могли заметить, что начало кривой, то есть первая контрольная точка обозначается небольшим квадратиком (на самом деле это - квадратный нолик), а вторая точка, задающая направление в начале кривой, буквой U. (Буквами U и V принято обозначать параметрические координаты на кривых и поверхностях, но об этом позже). Направление кривых имеет важное значение для всех последующих операций. Поменять его, то есть развернуть кривую всегда можно при помощи Edit Curves=>Reverse Curve Direction.

А где же колышки, воскликнут романтические умы, которые забивают в песок? Сейчас, сейчас... Для построения кривой, проходящей точно через поставленные точки, используют инструмент Edit Curves=>EP Curve Tool. В ходе расстановки точек Edit Points кривая третьей степени пытается вписаться в эти точки, проходя точно через них и упруго изгибаясь в промежутках Каждое добавление новой точки создает новый сегмент. Концы сегментов, в отличие от CV Curve Tool, определяются расставляемыми точками.

Терминологический комментарий. Если для CV сложились различные названия (такие как «контрольные точки» или «контрольные вершины»), то для ЕР пока что нет ни одного термина. Сказать «редактируемые точки» совершенно неадекватно и не отражает сути. «Узлы (knots)» - гораздо лучше и ближе по смыслу но как-то не прижилось, а, скажем, «границы сегментов» - это слишком сложно и длинно. Конечно, в трудовых коллективах народ активно использует нецензурные «сивишки» и «епэшки», но употреблять такие «термины» в этой книге даже у меня не хватает экстремизма. К счастью, по сравнению с контрольными вершинам Edit Points используются гораздо реже, поэтому я постараюсь обойтись вообще без перевода. На всякий случай, замечу только, что термин «сегменты» я употребяю Форму кривой можно также редактировать при помощи Edit Points, нажав правую кнопку мыши над кривой и выбрав в качестве компонент Edit Points.

CV или ЕР? Кто главный?

Пытливые умы естественно не могут удержаться от вопроса: а «кто», собственно говоря «главный» CV или ЕР? Вообще-то, вы можете не особенно беспокоиться по этому поводу и попросту использовать оба типа компонент, но если быть математически корректным, то «главнее» CV Именно по положению контрольных вершин вычисляется форма кривой, ее разбивка на сегменты и, следовательно, набор Edit Points. (Проверьте, что перетаскивание контрольной вершины всегда влияет на три ближайших Edit Points, если контрольная вершина не крайняя).

При редактировании Edit Points MAYA также меняет форму кривой, а следовательно положения CV. Но изменение CV влечет изменение Edit Points и получается замкнутый круг.

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

Следовательно, старайтесь использовать для редактирования кривых контрольные вершины, a Edit Points применяйте только для небольших и локальных корректировок формы кривой.

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

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

Параметризация. Длина кривой.Способы параметризации.

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

Настройки инструментов CV Curve Tool и ЕР Curve Tool практически идентичны.

Выбор степени кривой (Curve Degree) тривиален. В случае кривых первой степени, эти инструменты действуют идентично, так как позиции контрольных точек совпадают с концами сегментов и, следовательно, с позициями Edit Points. А вот параметр Knot Spacing заслуживает отдельной дискуссии. Этот параметр определяет, как будет «пронумерована» создаваемая кривая.

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

(тот самый параметр t, из раздела про теорию). Для кривых такая координата обозначается буквой U и однозначно определяет положение (или точку) на кривой.

В MAYA существует два способа параметризации (то есть задания параметра) кривых и поверхностей. Второй из них называется Chord Length (параметризация с использованием длины кривой), и он более естественен для понимания, так как определяет параметр как длину кривой.

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

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

В каждой точке на границе сегмента (то есть в Edit Point) значение параметра полагается равным номеру этого сегмента, то есть целому числу. А в промежутках равномерно распределяется вдоль длины сегмента. Этот способ называется Uniform (равномерная параметризация), он и является первым, используемым по умолчанию методом параметризации, его и используют в настройках CV Curve Tool и ЕР Curve Tool.

Примечание. Можно привести физическую аналогию параметризации. Представьте себе, что у вас прямой кусок упругой, но растягивающейся веревки. И вы можете схватить его где-то посередине в двух-трех отмеченных краской местах (это границы сегментов), чтобы изогнуть. Если вы схватите веревку в зтих местах с помощью жестких зажимов-прищепок и потянете, то веревка растянется и изогнется, однако границы обозначенных сегментов останутся на месте, есть под зажимами. Это - аналог Uniform-параметризации. Если вместо зажимов потянуть веревку скользящими кольцами (а точнее, трубками), она будет изгибаться, одновременно распределяя свою длину между кольцами и гладко проскальзывая между ними. Первоначальные границы сегментов, естественно проскользнут в новые положения на самой веревке. Это - аналог Chord Length Следующий вопрос беспокойных умов естественно будет о том, какой метод лучше У каждого метода свои плюсы и минусы, но, похоже, у метода Chord Length минусов больше (Возможно, я делаю здесь «политически некорректные» заявления, унижая один метод, по сравнению с другим, поэтому оговорюсь: это - моя совершенно субъективная точка зрения.) Коль скоро из кривых будут получены поверхности, наследующие параметризацию, о плюсах и минусах пойдет речь на примере поверхностей.

Параметризация Chord Length интуитивно понятна и дает представление о распределении параметра прямо по внешнему виду кривой или поверхности. Текстуры ложатся на поверхности с такой параметризацией более равномерно, без «гармошки» в местах скопления изопарм (для Uniform-параметризированных поверхностей, на этот случай существует галка Fix Texture Wrap) в разделе Texture Map в Attribute Editor). При построении вручную Chord Length-параметризаця дает более гладкое распределение кривизны. Попробуйте построить кривые, проходящие через одни и те же точки, с помощью ЕР Curve Tool, но задавая разные методы параметризации.

Обратите внимание, что при использовании CV Curve Tool кривые, построенные с различными методами параметризации, отличаются не так сильно.

Работа с поверхностями с параметризацией Chord Length не так предсказуема, особенна при сшивании краев, так как диапазон параметра с каждой стороны оказывается разным.

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

Да, к сожалению, для эффективного использования NURBS-объектами приходится постоянно помнить про параметризацию. Ситуация осложняется еще и тем, что одни операции (например, loft) создают поверхности с Uniform-параметризацией, а другие (например, fillet) с параметризацией Chord Length. И приходится постоянно следить за распределением параметра на объектах, а операция rebuild становится вашей второй натурой. Но об этих «ужасах» побеседуем позже, а п к договоримся, что, по возможности, будем придерживаться Uniform-параметризации.

«А как ее придерживаться и как за ней следить?» - воскликнут пытливые умы. Следить надо в Attribute Editor. Там для поверхностей и кривых, в закладке для shape, всегда указан диапазон параметра и количество сегментов в выбранном объекте.

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

Операции над кривыми Склеивание и разрезание. Detach и Attach.

Способы склейки. Keep originals После создания и редактирования кривые чаще всего нужно резать или склеивать.

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

Warning: Some items cannot be moved in the 3D view.

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

Как только один или несколько маркеров на кривой выбрано (не забудьте про shift) достаточно выбрать Edit Curves=>Detach, чтобы разрезать кривую.

Чтобы склеить две кривые, требуются чуть большие усилия и использование операция Attach. Конечно, необходимо выбрать кривые перед тем, как склеивать, но какие концы у даух кривых вы хотите соединить? MAYA обычно использует концы, расположенные ближе всего, но бывают ситуации, когда такая близость неочевидна. В таких случаях, вместо выбора самих кривых рекомендуется выбрать Curve Point (то есть маркер) на конце каждой кривой.

Необходимо также выбрать метод склеивания, который задается через Option Box операция EditCurves=>Attach.

По умолчанию используется метод Blend, гладко соединяющий две кривых в одну. Опция Insert Knot позволяет вставить две дополнительные точки рядом с местом соединения - это в случаях, когда концы кривых недостаточно хорошо «пригнаны» друг к другу перед соединением А дополнительный Insert Parameter определяет близость такой вставки к месту соединения.

Очевидно, что, пользуясь принципом Construction History, можно изменить и метод соединения и другие параметры уже после применения операции. Достаточно просто открыть Аttribute Editor или Channel Box и отредактировать там атрибуты ноды attachCurve, автоматически создаваемой после применения операции Attach.

Примечание. В Option Box любой команды редактирования кривых и поверхности е с т ь опция Keep Originals, включение которой задает создание нового объекта для результата выполнения операции и сохранения исходных объектов нетронутыми.

По умолчанию эта опция выключена у всех операций, кроме команды Attach. При включенной опции Keep Originals удобно наблюдать изменения в форме у объектов получаемых после выполнения операции, в сравнении с исходными объектами. Как правило, выключение этой опции не препятствует созданию Construction History, однако при операции Attach, создающей из двух объектов один, для сохранения истории нужно обязательно сохранять «исходники», поэтому опция Keep Originals для нее включена по умолчанию.

Второй метод соединения кривых называется Connect, и служит он для «негладкой» склейки кривых. Он делает «угол» между кривыми не сглаженным, вставляя в место соединения кривых «жесткую» точку. «Жесткая» точка - это означает, что кривая в этой точке теряет свою гладкость «сегменты справа и слева от нее совершенно независимы.

Совет. Постарайтесь сразу отказаться от идеи использования «жестких» точек и метода Connect при работе как с кривыми, так и с поверхностями.

И вот почему.

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

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

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

Во время построения кривой при помощи CV Curve Tool в том месте, где вы собираетесь сделать угол, надо нажать клавишу f и еще немного подъехать к последней поставленной точке а затем поставить рядом еще, как минимум, две контрольные точки.

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

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

Далее снова нажмите Insert и продолжайте строить кривую.

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

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

Совет. При построении кривых используйте клавишу shift. Она позволяет ставить следующую точку строго по горизонтали или по вертикали относительно предыдущей точки.

Использование сеток При построении кривых старайтесь максимально использовать привязку к сетке, Это позволит, во-первых, распределять точки более равномерно, а во-вторых, сделает задачу последующего выравнивания и стыковки ощутимо легче. В Option Box команды Display=>Grid есть все необходимые параметры для изменения частоты и цвета сетки.

уменьшающие частоту сетки:

Их удобно назначить на горячие клавиши для оперативного использования прямо Тактика построения кривых Старайтесь экономить контрольные точки. Пытайтесь описать нужную вам форму при помощи минимального набора контрольных вершин. Если количества точек не хватает для задания необходимой формы, добавляйте точки, там, где это необходимо, с помощью команды Insert Knot. Если вы чувствуете, что ваша кривая стала «перегружена» точками, можно воспользоваться командой Rebuild, которая постарается максимально уменьшить количество точек на кривой при минимальном искажении формы самой кривой (степень допустимого искажения вы задаете сами Разберем эти две команды.

Совет. Контрольные точки можно удалять клавишей Delete!

Вставка точек. Команда Insert Knot Нельзя просто вставить контрольную точку (CV), так как она не лежит на кривой и соответственно, непонятно, как задать ее новое положение. Зато можно вставить Edit Point в любое место на кривой. Это добавит новый сегмент и новую контрольную точку. Как обычно, любое место можно выбрать при помощи контекстного меню и Curve Point. После чего следует просто применить команду Edit Curves=>lnsert Knot с параметрами по умолчанию.

Для пытливых умов в Option Box команды Insert Knot есть опция Between Selection, позволяющая вставить несколько новых Edit Points между выбранными маркерами. Остальные параметры, позволяющие менять жесткость (Multiplicity) точек, нас не интересуют, так как мы договорились пытаться не использовать жесткие точки.

Перестройка. Операция Rebuild.

Про операцию Rebuild можно рассказывать бесконечно. Количество ее параметров вызывающе велико. Попробуем разобрать лишь некоторые, наиболее полезные случаи.

Эту операцию применяют в различных целях.

перераспределения параметров на кривой.

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

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

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

Уменьшение количества контрольных точек кривой задается с помощью опции Reduce для Rebuild Type.

В этом случае MAYA сама посчитает, насколько можно уменьшить количество точек, так чтобы оставшиеся точки сместились в пространстве на величину, не большую, чем параметр Tol­ erance (если хотите задать его сами, включите опцию Use Tolerance=Local), и кривая максимально сохранила прежнюю форму.

Метод Curvature, напротив, добавляет дополнительные точки в местах сильной кривизны и не является сильно полезным.

Метод Match Knots позволяет сделать одинаковое количество точек (корректнее говорить:

количество сегментов, number of spans) у всех выбранных кривых. Образцом для подражания считается последняя выбранная кривая. Эта опция исключительно полезна при подготовке кривых д я построения по ним поверхностей, например, с помощью операции Loft. Понятно, что если кривые будут разбиты на одинаковое количество сегментов, то и поверхность, проходящая через них, тоже будет иметь это же самое (весьма предсказуемое) количество сегментов.

Чтобы одним махом избавиться от неведомо откуда взявшихся «жестких» точек (например, п с е применения операции Curve Fillet) нужно воспользоваться методом No Multiple Knots.

Самым многовариантным и используемым по умолчанию является метод Uniform. Разберем его многочисленные предназначения.

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

Для этого надо выбрать нужный вариант для параметра Parameter Range, а затем «заморозить»

положения контрольных точек с помощью установки параметра Keep=CVs. Это довольно часто выполняемая процедура при интенсивной работе с кривыми, и я рекомендую обратить на нее внимание.

Совет. Я продолжаю советовать придерживаться параметризации 0 to #Spans, что означает «от нуля до определенного количества сегментов», то есть это Uniform-параметризация, которая обсуждалась выше, в разделе про построение Параметр Keep определяет, какие компоненты кривой нужно заморозить и не трогать во время «перестройки».

Если зафиксировать положения контрольных точек (опция CVs), то все что может сделать с кривой операция Rebuild, это изменить ее параметризацию или степень, при помощи параметра Degree.

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

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

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

Правило вычисления количества контрольных вершин. Помните о том, что количество контрольных точек для кривой всегда равно количеству сегментов плюс степень кривой, то есть для кривых третьего порядка количество контрольных вершин всегда на три больше, чем количество сегментов. Количество сегментов всегда можно посмотреть в Attribute Editor как значение атрибута spans. Если кривая является замкнутой (или периодической), то количество ее контрольных вершин в точности равно количеству сегментов. Проверить, является ли кривая замкнутой, можно, взглянув на атрибут Form в Attribute Editor, где значение Periodic означает замкнутость.

На этом можно покончить с командой Rebuid Curves. Для поверхностей существует аналогичная операция, по адресу Edit NURBS=>Rebuild Surfaces. Большинство ее параметров и логика их использования совпадают с аналогичными параметрами для кривых. Основное отличие поверхностей с точки зрения этой операции - это возможность перестраивать поверхность индивидуально по двум направлениям. Интуитивно должно быть понятно, что, в отличие от кривых, положение точки на поверхности должно задаваться уже двумя параметрами, U и V. Точно так же, как положение конкретной точки на глобусе задается при помощи широты и долготы. Все, что выше сказано по поводу параметризации, справедливо также и для поверхностей, для которых всегда определены два параметра U и V в направлениях «вдоль» и «поперек» поверхности, причем вдоль этих направлений тип параметризации может быть различным.

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

В соответствии с общей идеологией, перед применением этих операций необходимо чтолибо выбрать, причем в одних случаях это могут быть сами кривые, в других их контрольные вершины, в третьих точка на кривой Curve Point. Внимательно читайте Help Line, наводя курсор на соответствующий пункт меню: там всегда написано, что надо предварительно выбрать.

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

Modify=>Lock Length - очень полезная операция, особенно при перетаскивании вершин Позволяет зафиксировать и удерживать постоянной длину кривой.

Duplicate Surface Curves - позволяет «отодрать» выбранные изопармы или полигональные ребра (!) и превратить их в обычные трехмерные кривые. Причем с сохранением истории.

' Align Curves как правило, используется для подгонки концов двух кривых. Погоняет концы к и ы так, чтобы они гладко стыковались по кривизне или по тангенсу.

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

Cut Curve - разрезает кривые в месте их пересечения. Позволяет резать несколько кривых сямощью последней выбранной кривой.

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

Extend Curves удлиняет кривую различными методами. Полезна для «выращивания»

кривых, может быть использована в анимации.

Offset Curve - «Отступает» от кривой равномерно по все длине, при этом могут возникать перехлесты и петли, особенно при отступе «внутрь» изгиба кривой. Для борьбы с этим перехлестами есть опция Loop Cutting, включенная по умолчанию. Однако она меняет количество точек и доли применяться с осторожностью.

Fit B-Spline - хорошее название, ничего не скажешь. Просто проводит новую кривую так чтобы ее Edit Points совпадали с контрольными вершинами выбранной кривой.

Smooth Curve - посмотрите в англо-русском словаре, что делает эта операция.

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

В меню Modify Curves также находятся операции для глобального «процедурного» изменения ф р ы кривой целиком, такие как сгибание (Bend), закручивание (Curl), выпрямление (Straighten) и другие.

Кривые на поверхности: Curves on surface.

«Оживление»: Make Live Нельзя пройти мимо одного уникального типа объектов в MAYA. Это так называемые «кривые на поверхности». Вещь исключительно удобная, особенно для вырезания отверстий в поверхностях или пришивания поверхностей друг к другу.

«Кривые на поверхности» могут быть получены как результат пересечения поверхностей.

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

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

Для того, чтобы нарисовать «поверхностную» кривую, создайте любую поверхность (например, сферу) и сделать ее «живой» (Modify=>Make Live), то есть пригодной для рисования по ней. Затем можно взять CV или ЕР Curve Tool и просто нарисовать на поверхности нужную форму кривой, щелкая мышью, как обычно.

В отличие от полигональных поверхностей (которые тоже можно делать Make Live), контрольные точки в данном случае не просто «приснапливаются» к NURBS-поверхностям, но и намертво «вшиваются» в них. Точнее говоря, в поверхности лежат не только контрольные вершины но и сама кривая целиком. (Чтобы снова сделать поверхность «неживой», то есть обычной, надо еще раз выполнить Modify=>Make Not Live).

Если выбрать полученную кривую, а затем взять Move Tool, то выяснится, что у таких кривых «не хватает одной оси».

Кроме того, эти кривые не появляются в Outliner, что само по себе вызывающе.

Дело в том, что, как я уже говорил, это особый тип кривых. Для этих кривых трехмерное пространство схлопнулось до размеров поверхности, на которой они находятся. Их контрольные точки также лежат на поверхности и имеют всего две степени свободы - их можно перемещать лишь в двух направлениях, вдоль поверхности. Как нетрудно догадаться, это направления U и V, определенные для каждой NURBS-поверхности. Такие кривые лучше называть «кривые в поверхности», чтобы подчеркнуть их «вшитость» в поверхность. По причине такой «вшитости» эти кривые можно увидеть в Outliner, только если включить отображение shape-нод (Display=>Shapes).

Это подчеркивает их принадлежность форме поверхности, а не трехмерному пространству.

«Кривые на поверхности» можно использовать как обычные кривые во всех операциях «Мелирования типа Loft или Bevel. Однако их «принадлежность» к поверхности позволяет использовать их в операциях, учитывающих кривизну поверхности, на которой они лежат, например freeform Fillet. Это делает «кривые на поверхности» просто незаменимыми для построения гладких сопряжений между объектами.

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

Создайте в новой сцене NURBS-цилиндр.

Растяните его по вертикали и сделайте его «живым»: Modify=>Make Live.

Сейчас мы нарисуем на цилиндре, нет, не кривую, а прямую линию.



Pages:     | 1 |   ...   | 2 | 3 || 5 | 6 |   ...   | 13 |
Похожие работы:

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ УТВЕРЖДАЮ Ректор ТГУ _ _ 2011 г. № Основная образовательная программа высшего профессионального образования по направлению подготовки 020400.68 Биология Магистерская программа Физиология растений Квалификация выпускника Магистр Нормативный срок освоения программы - 2 года Форма обучения очная Томск 2011 СОДЕРЖАНИЕ 1. Общие положения 1.1. Основная образовательная программа (ООП) магистратуры (магистерская...»

«СОДЕРЖАНИЕ 1. Общие положения 1.1 Основная образовательная программа бакалавриата, реализуемая ФГБОУ ВПО КрасГАУ по направлению подготовки 110100 АГРОХИМИЯ И АГРОПОЧВОВЕДЕНИЕ и профилю подготовки Агроэкология 1.2 Нормативные документы для разработки ООП бакалавриата по направлению подготовки 110100 АГРОХИМИЯ И АГРОПОЧВОВЕДЕНИЕ 1.3 Общая характеристика вузовской основной образовательной программы высшего профессионального образования (бакалавриат) по направлению подготовки 110100 АГРОХИМИЯ И...»

«Муниципальное казенное общеобразовательное учреждение Средняя общеобразовательная школа № 3 с углубленным изучением отдельных предметов имени Героя России Игоря Ржавитина Принята Утверждаю педагогическим советом № 9 Директор муниципального от 03.06.2011г. общеобразовательного учреждения Средняя общеобразовательная школа № 3 с углубленным изучением отдельных предметов имени Героя России Игоря Ржавитина _Кочнева А.Л. Приказ № 38-Д 03 июня 2011г. Изменения внесены приказом от 17 января 2012г. №...»

«Программа аттестационных испытаний по направлению Международные отношения РАЗДЕЛ I ТЕОРИЯ МЕЖДУНАРОДНЫХ ОТНОШЕНИЙ Система международных отношений: структура, акторы, механизм функционирования Понятие система международных отношений. Среда (природа) международных отношений. Понятие акторы в теории международных отношений. Классический реализм и неореализм Макиавелли, Гоббс о природе человека. Э.Карр - критика либерализма. Основные положения школы Г.Моргентау. Дж.Кеннан о необходимости...»

«М.В. ЕРШОВ ЭКОНОМИЧЕСКИЙ СУВЕРЕНИТЕТ РОССИИ В ГЛОБАЛЬНОЙ ЭКОНОМИКЕ ЭКОНОМИКА 2005 ОГЛАВЛЕНИЕ ОТ АВТОРА ВВЕДЕНИЕ ГЛАВА 1. Мировая финансовая система в новых экономических условиях Несколько общих замечаний ГЛАВА 2. Механизмы валютной экспансии. 34 Долларизация в России: некоторые аспекты. 37 О курсообразовании О валютном правлении (currency board) Валютное правление в условиях России Валютный курс как инструмент глобализации. ГЛАВА 3. Механизмы глобального Регулирования и возможность...»

«МИНЗДРАВСОЦРАЗВИТИЯ РОССИИ Государственное образовательное учреждение высшего профессионального образования ИРКУТСКИЙ ГОСУДАРСТВЕННЫЙ МЕДИЦИНСКИЙ УНИВЕРСИТЕТ (ГОУ ВПО ИГМУ Минздравсоцразвития России) Медико-профилактический факультет Кафедра общественного здоровья и здравоохранения УТВЕРЖДАЮ Проректор по учебной работе ГОУ ВПО ИГМУ Минздравсоцразвития России _ А.В. Щербатых 20 г. УТВЕРЖДЕНО протокол ФМС от № ЭКОНОМИКА ЗДРАВООХРАНЕНИЯ РАБОЧАЯ ПРОГРАММА УЧЕБНОЙ ДИСЦИПЛИНЫ для специальности 060105...»

«РАБОЧАЯ ПРОГРАММА По ЛИТЕРАТУРЕ Ступень обучения (класс) ОСНОВНОЕ ОБЩЕЕ ОБРАЗОВАНИЕ, 5-9 класс Количество часов 4 42 Уровень (базовый, профильный) базовый Программа разработана на основе примерной программы по учебным предметам Литература. 5-9 классы: проект. ( Стандарты второго поколения) М.: Просвещение, 2010 г. и рабочей программы по литературе для 5-9 классов (авторы В.Я.Коровина, В.П.Журавлев, В.И.Коровин, Н.В.Беляева – М, Просвещение, 2011 г.). Пояснительная записка Рабочая программа по...»

«Russian Edition Grade 4 Mathematics Test, Book 2 May 5–7, 2010 Программа тестирования штата Нью-Йорк Тест по математике Книга 2 4 Класс Mай 5–7, 2010 Фамилия и имя_ 21648-R Developed and published by CTB/McGraw-Hill LLC, a subsidiary of The McGraw-Hill Companies, Inc., 20 Ryan Ranch Road, Monterey, California 93940-5703. Copyright © 2010 by the New York State Education Department. All rights reserved. No part of this publication may be reproduced or distributed in any form or by any means, or...»

«Министерство образования и науки РФ ФБГОУ ВПО Алтайский государственный университет Кафедра всеобщей истории и международных отношений Учебно-методический комплекс по дисциплине Актуальные проблемы всеобщей истории для направления 030600 История (квалификация (степень) магистр) Рассмотрено и утверждено На заседании кафедры от 31 августа 2012 г. Барнаул 2012 МИНОБРНАУКИ РОССИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Алтайский...»

«МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНЫЙ УНИВЕРСИТЕТ УТВЕРЖДАЮ Декан факультета плодоовощеводства и виноградарства, доцент С.М. Горлов _ 2010 г. РАБОЧАЯ ПРОГРАММА Основы научных исследований в агрономии дисциплины для специалистов Факультет Плодоовощеводства и виноградарства Кафедра Плодоводства Дневная форма обучения Вид учебной работы Курс,...»

«Министерство образования и наук и Российской Федерации ВЕСТНИК ДАЛЬНЕВОСТОЧНОГО РЕГИОНАЛЬНОГО УЧЕБНОМЕТОДИЧЕСКОГО ЦЕНТРА №20/2013 Владивосток 2013 УДК 378.12 ISSN 2078-3906 Серия основана в 1994 году Редакционная коллегия: С.В. Иванец, А.А. Фаткулин, Ю.М. Сердюков, П.Ф. Бровко, Г.Н. Ким, Ю.Г. Плесовских, Е.В. Крукович, Т.В. Селиванова Вестник Дальневосточного регионального учебно-методического центра. – Владивосток: ДВФУ, 2013. – 217 с. Предлагаемый Вестник ДВ РУМЦ продолжает серию сборников...»

«МИНИСТЕРСТВО ЗДРАВООХРАНЕНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ САМАРСКИЙ ГОСУДАРСТВЕННЫЙ МЕДИЦИНСКИЙ УНИВЕРСИТЕТ Посвящается 95-летию Самарского государственного медицинского университета АСПИРАНТСКИЕ ЧТЕНИЯ – 2013 Программа и пригласительный билет Всероссийской конференции с международным участием Молодые учёные – медицине 23 октября 2013 Самара - 2013 Уважаемые аспиранты и молодые преподаватели, клинические...»

«Московский государственный университет имени М.В.Ломоносова МОСКОВСКАЯ ШКОЛА ЭКОНОМИКИ УЧЕБНАЯ ПРОГРАММА ДИСЦИПЛИНЫ Экономика общественного сектора - 2 Направление 080100 Экономика для подготовки студентов-магистров очного отделения Учебная программа утверждена Решением Ученого совета МШЭ МГУ Протокол № от __2012 г. Москва 2012 1 Задача курса – ознакомить студентов с основными концепциями и методами современной экономики общественного сектора. Курс читает коллектив лекторов, каждый из которых...»

«Оглавление Целевой раздел: Пояснительная записка 1. 2. Планируемые результаты освоения обучающимися основной образовательной программы начального общего образования. 2.1. Формирование универсальных учебных действий (личностные и метапредметные результаты) 2.1.1. Чтение. Работа с текстом (метапредметные результаты) 2.1.2. Формирование ИКТ-компетентности обучающихся (метапредметные результаты) 2.2. Русский язык. 2.3. Литературное чтение.. 2.4. Иностранный язык (английский) 2.5. Математика 2.6....»

«Пояснительная записка Современная социокультурная ситуация в России предъявляет высокие требования к профессиональной компетентности исследователя в области лингвистики, романистики в том числе. Научная школа образовательного учреждения ГБОУ ВПО Московский городской педагогический университет по профилю 10.02.05 – романские языки ориентирована на изучение широкого круга проблем профессионального образования в рамках современных концепций модернизации и развития российских учебных заведений....»

«Фонд Михаила Прохорова Правительство Красноярского края Администрация Красноярска в партнерстве с МВДЦ Сибирь и Выставочной компанией Красноярская Ярмарка 660077, Россия, г. Красноярск, ул. Авиаторов, 19, МВДЦ Сибирь 31 октября – 4 ноября 2013 года VII Красноярская Ярмарка Книжной Культуры ПРОГРАММА: главная сцена/сцена холла/сцена II/детская площадка 31 октября, четверг время 14.00-14.30 Торжественное открытие VII Красноярской ярмарки книжной культуры Холл Рецепты хорошего города 14.00-15....»

«МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНЫЙ УНИВЕРСИТЕТ Факультет управления Кудряков 2013 г. Рабочая программа дисциплины Управление государственной и муниципальной собственностью Направление подготовки 081100 Государственное и муниципальное управление Квалификация (степень) выпускника Бакалавр Форма обучения Очная, заочная Краснодар 1. Цели...»

«ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ САРАТОВСКАЯ ГОСУДАРСТВЕННАЯ ЮРИДИЧЕСКАЯ АКАДЕМИЯ УТВЕРЖДАЮ Первый проректор, проректор по учебной работе _ __2012 г. УЧЕБНО-МЕТОДИЧЕСКИЙ КОМПЛЕКС ДИСЦИПЛИНЫ ПРЕДПРИНИМАТЕЛЬСКОЕ ПРАВО Направление подготовки 030900.68 Юриспруденция квалификация (степень) магистр Саратов- Учебно-методический комплекс дисциплины обсужден на заседании кафедры гражданского и международного частного права 25 мая 2012...»

«l Министерство образования и на}ки Российской Федерации Федеральное государственное бюджетное образовательное r{реждение Высшего профессионшIьного образования кВологодский государственный педагогический университет)) Исторический факультет Кафедра всеобщей истории - историчЬские науки Отрасль науки Специа_шьность * 07.00.03 - Всеобщая история (Средние века, Новая и Новейшая история) шифр н€}звание Автор: доцент М.В. Васильева Программа одобрена на заседании кафедры всеобщей истории *?r октября...»

«ПРАВИЛА Действителен с 25 июля 2014 В WOR(l)D мы заботимся о членах организации, ценим и премируем их посредством инновационной программы выплат, распространенной в современной индустрии прямых продаж. Доходы, изображенные в данной публикации, не обязательно представляют собой доходы, которые каждый партнер WOR(l)D может или будет зарабатывать, благодаря его или ее участию в Плане Вознаграждений WOR(l)D. Эти цифры не должны рассматриваться как гарантии 2 или проекции твоих фактических доходов...»






 
2014 www.av.disus.ru - «Бесплатная электронная библиотека - Авторефераты, Диссертации, Монографии, Программы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.