7. Щелкните на кнопке Make Symmetrical (Симметрично по X и Y), чтобы выключить этот режим и сделать возможным использование различных кривых деформации в продольных сечениях объекта по осям X и Y, ориентированным перпендикулярно линии пути. Щелкните в окне диаграммы деформации на кнопке Display Y Axis (Показать деформацию по Y). Появится линия диаграммы зеленого цвета. Чтобы сделать полозья саней тоньше, создайте на кривой деформации четыре новых вершины типа Corner (С изломом) в точках, отстоящих на 20, 22, 78 и 80 % от начала пути лофтинга. Затем выделите вершины с координатами (0; 60), (20; 60), (80; 60) и (100; 60), то есть первую, вторую, последнюю и предпоследнюю вершины кривой деформации, и опустите их вниз до отметки 20 % по вертикальной шкале, указывающей масштаб сечения в процентах от исходного.
8. Чтобы сделать полозья не только тоньше основной части тела лофтинга, но и несколько больше по высоте, переключитесь на отображение кривой деформации по оси X. Создайте на ней четыре новых вершины в тех же точках по шкале расстояния от начала пути лофтинга, что и на кривой деформации по оси Y. Выделите первую, вторую, последнюю и предпоследнюю вершины кривой деформации и поднимите их вверх до отметки 130 % по вертикальной шкале окна диаграммы деформации. На рис. 7.41 показан вид кривых деформации по обеим осям поперечного сечения тела лофтинга, а на рис. 7.42 — вид самого объекта после деформации масштаба.
Надеюсь, после выполнения этих двух упражнений у вас больше не будет проблем с использованием деформации масштаба тел лофтинга любой, самой экзотической формы.
2. Щелкните на кнопке Geometry (Геометрия) командной панели Create (Создать), выберите в раскрывающемся списке разновидностей объектов вариант Compound Objects (Составные объекты) и щелкните на кнопке Boolean (Булевские) в свитке Object Type (Тип объекта). В нижней части панели появятся свитки Pick Boolean (Задать операнд), Parameters (Параметры) и Display/Update (Показать/Обновить).
3. Установите переключатель свитка Pick Boolean (Задать операнд) в одно из четырех положений:
Reference (Экземпляр), Сору (Копия), Instance (Образец) — в составной объект будет включен соответствующий тип дубликата объекта, указанного в качестве операнда В; Move (Перемещение) — объект-операнд В будет перемещен в состав булевского объекта.4. Щелкните на кнопке Pick Operand В (Указать операнд В) и выделите объект, который должен являться операндом В. В окнах проекций мгновенно появится булевский объект, вид которого будет зависеть от текущей установки переключателя Operation (Операция) в свитке Parameters (Параметры).
5. Выберите тип булевской операции, установив переключатель Operation (Операция) в одно из пяти положений:
Union (Объединение) — тела объектов (операндов А и В) объединяются, образуя новое тело с одной общей поверхностью и общим объемом (рис. 7.44, слева вверху); Intersection (Пересечение) — образуется новый объект, представляющий собой область пространства, принадлежащую как операнду А, так и операнду В (область пересечения операндов), как показано на рис. 7.44, справа вверху; Subtraction (A-B) (Исключение (А-B)), Subtraction (B-A) (Исключение (B-A)) — новый объект образуется путем исключения из одного объекта-операнда пространственной области, принадлежащей другому операнду, как показано на рис. 7.44, внизу; Cut (Вырезка) — вырезает объем тела-операнда В из операнда А, но при этом ничего не добавляет к сетке оболочки операнда А: в оболочке просто появляются отверстия. Имеются четыре типа вырезки, знакомиться с которыми не входит в наши планы.
С назначением оставшихся параметров булевских объектов ознакомьтесь (при желании или необходимости) по электронной справочной системе max 7.5, а пока отработаем приемы создания булевских объектов на практике, выполнив два упражнения.
В следующей главе вы сумеете создать дверь и окно, которые будут установлены в эти проемы.
1. Чтобы зубья имели клиновидную форму, сузьте параллелепипед на одном из концов, применив к нему еще не использовавшийся нами модификатор заострения. Для этого при выделенном параллелепипеде щелкните на кнопке Taper (Заострение) в раскрывающемся списке Modifier List (Список модификаторов) командной панели Modify (Изменить). Параллелепипед будет заключен в габаритный контейнер модификатора оранжевого цвета. Обратите внимание, что центральная точка модификатора, обозначенная коричневым крестом, находится не в его геометрическом центре, так как совмещена с опорной точкой параллелепипеда, расположенной в середине его основания. Это отчетливо видно в окне проекции Тор (Вид сверху). При таком расположении центра заострение на виде сверху не будет симметричным. Чтобы переместить центр модификатора, щелкните на квадратике со значком «плюс» слева от надписи Taper (Заострение) в окне стека модификаторов и выберите в раскрывшемся дереве подобъектов строку Center (Центр). Крест, обозначающий центральную точку, окрасится в желтый цвет. Щелкните на нем в окне проекции Тор (Вид сверху), выбрав инструмент Select and Move (Выделить и переместить), и перетащите в середину параллелепипеда, как показано на рис. 7.47.
2. Настройте параметры заострения в свитке Parameters (Параметры). Установите в счетчике Amount (Величина) значение 0,55. Переключатель Primary (Первичная ось) раздела Taper Axis (Ось заострения) установите в положение X, а переключатель Effect (Ось эффекта) — в положение Z. Создайте два образца заостренного параллелепипеда и разместите их на конце заготовки вилки, как показано на рис. 7.48.
3. Переходите к булевскому вычитанию. Выделите объект Vilka и выберите на командной панели кнопку Boolean (Булевские). Щелкните на кнопке Pick Operand В (Указать операнд В) в свитке Pick Boolean (Задать операнд) и выделите первый из трех параллелепипедов, предназначенных для формирования промежутков между зубьями вилки. Проследите, чтобы переключатель Operation (Операция) был установлен в положение Subtraction (A-B) (Исключение (А-В)). Параллелепипед исчезнет, оставив после себя щель между двумя зубьями вилки, как показано на рис. 7.49. Щелкните правой кнопкой мыши, завершая операцию булевского вычитания.
4. Снова щелкните на кнопке Pick Operand В (Указать операнд В) и выделите следующий параллелепипед. Он также исчезнет, сформировав щель между следующей парой зубьев. Повторите описанные действия применительно к третьему параллелепипеду. Окончательный вид вилки приведен на рис. 7.50. Закончив работу, сохраните файл под измененным в начале работы именем. Готовую вилку можно найти в файле под именем Vilka01.max, хранящемся в папке Scenes\Glava_07 компакт-диска, прилагающегося к книге.
Итак, многократное применение операции создания булевского составного объекта позволяет вырезать множественные отверстия в оболочке трехмерного тела. Недостаток такого способа заключается в том, что после, скажем, трехкратного применения булевского исключения объект становится «трижды булевским», то есть сведения о параметрах булевской операции и ее операндах трижды помещаются в стек объекта. Это увеличивает объем файла и замедляет работу программы по перерисовке сцены.
Впрочем, операцию многократного булевского исключения или объединения сразу нескольких объектов можно выполнить за один прием. Это делается с помощью программного модуля Collapse (Свертка), кнопка активизации которого находится на командной панели Utilities (Сервис).
2. Щелкните в нужной точке любого окна проекции и перетащите курсор, чтобы создать объект-источник частиц, представляющий собой объект-пустышку, не подлежащий визуализации в составе сцены и используемый только для определения местоположения и ориентации системы частиц. Источники частиц типа Spray (Брызги) и Snow (Снег) создаются так же, как сплайны-прямоугольники, а остальных типов частиц — как примитивы-параллелепипеды. Примеры источников различных типов частиц показаны на рис. 7.52.
3. Пока созданный источник частиц еще выделен, настройте параметры этих частиц в свитках, появляющихся в нижней части панели Create (Создать). После отмены выделения источника для настройки его параметров перейдите на командную панель Modify (Изменить).
Дальнейшие действия зависят от выбранного типа частиц. Мы в нашей книге рассмотрим только порядок создания и настройки одной из простейших систем частиц типа Snow (Снег). Использование остальных систем частиц во многом аналогично, но имеются и особенности, с которыми вы при желании и необходимости можете ознакомиться, используя справочную систему max 7.5.
4. Чтобы падающий снег выглядел более естественно, создадим еще один источник таких же частиц, но разместим его под некоторым углом, чтобы испускаемые им частицы падали не строго вертикально, а так, как будто их слегка сдувает ветром. Снова щелкните на кнопке Snow (Снег) в свитке Object Type (Тип объекта) командной панели Create (Создать). Выделите значок источника первой системы частиц и, нажав и удерживая клавишу Shift, перетащите его вправо примерно на 100 см, создав независимую копию. Затем опустите значок источника вниз также примерно на 100 см и поверните его вокруг глобальной оси Y примерно на 20°. Правильное положение второго источника частиц в составе сцены показано на рис. 7.54.
5. Итак, два источника снега созданы, но где же снежинки? Все просто. Перетащите вправо-влево ползунок таймера анимации, и вы увидите, как снежинки начнут сыпаться с плоскостей значков источников. По умолчанию снежинки изображаются в окнах проекций крестиками. Теперь самое время настроить обе системы частиц. Выделите значок источника системы частиц Snow01 (Снег01) и перейдите на командную панель Modify (Изменить). Первое, что следует сделать, — это настроить временные характеристики частиц. Чтобы создавалось впечатление, что снег начал падать давно, уже в первом кадре анимации должно быть видно достаточно снежинок. Установите в счетчике Start (Начало) раздела Timing (Расчет времени) значение -200. Это будет означать, что в первом кадре анимации система снежинок будет иметь такой вид, как будто они сыплются из источника уже на протяжении двухсот кадров. В счетчике Life (Время жизни) укажите величину 200. Эта величина задает время жизни (в кадрах) каждой частицы с момента ее испускания до момента исчезновения. Теперь снежинки будут видны даже при крайнем левом положении ползунка таймера анимации. Не сбрасывайте флажок Constant (Постоянный темп), чтобы темп выпадения частиц оставался постоянным на всем интервале времени анимации.
6. Теперь настройте параметры раздела Particles (Частицы). В счетчике Viewport Count (Число в окне), задающем максимальное число частиц, отображаемых в каждом из окон проекций в любой момент времени, оставьте установленную по умолчанию величину 100. Зато в счетчике Render Count (Число видимых), определяющем максимальное число частиц, видимых в каждом отдельном кадре итоговой визуализации, установите вместо значения 100 число 10 000. Задайте размер каждой частицы в счетчике Flake Size (Размер снежинки) равным порядка 1,3 см. Уменьшите принятое по умолчанию значение средней начальной скорости падения частиц в счетчике Speed (Скорость) до величины 2,5, а значение степени различий начальных скоростей и направлений распространения частиц, задаваемое в счетчике Variation (Вариации), увеличьте до 3,0. В заключение укажите, какой вид должны иметь частицы после визуализации, используя переключатель раздела Render (Конечный вид). Установите его в положение Facing (Грани), при этом частицы визуализируются в виде квадратных граней, размеры которых равны размерам частицы. Это дает возможность нанести на частицы материал с маской прозрачности, придающей каждой частице форму снежинки.
7. Настройте аналогичным образом и вторую систему частиц. Только задайте для снежинок этой системы несколько более высокую скорость падения Speed (Скорость) = 3,0 и меньшее значение разброса скорости и направлений распространения Variation (Вариации) = 1,0. Итоговый вид сцены с падающим снегом на момент начального кадра анимации показан на рис. 7.55.
8. Активизируйте окно проекции Perspective (Перспектива), щелкните на
кнопке Play Animation (Воспроизвести анимацию) и полюбуйтесь медленно падающими снежинками. Для завершения воспроизведения анимации падающего снега снова щелкните на той же кнопке, которая теперь называется Stop Animation (Остановить анимацию). Насмотревшись на снежинки, выделите оба источника частиц и скройте их от просмотра, чтобы до поры до времени снежинки не мешали нам продолжать работу над сценой. В заключение сохраните файл сцены под заданным в начале упражнения именем MAX-kafe06.max.
Как видите, чтобы вызвать в виртуальном мире осадки в виде снега, требуется не так уж много усилий.
Окно диалога Particle View (Просмотр частиц) можно условно разделить на четыре части:
панель событий, на которой отображаются события и связи между ними; панель параметров, на которой отображаются настройки выбранного оператора или теста; панель описания, на которой отображается действие выбранного элемента; библиотека элементов, которая содержит все доступные операторы и тесты, которые можно использовать для управления потоком частиц.Событие отображается на панели в виде прямоугольника, в котором можно увидеть названия всех операторов и тестов, которые в него входят (рис. 7.57). Любое событие можно отключить, щелкнув по значку лампочки в правом углу. Второй щелчок по этому значку вновь включит событие. Точно так же можно отключать отдельные операторы и тесты, которые входят в состав события. Для этого нужно щелкнуть по значку, который находится слева от названия оператора или теста. Отключенное событие, оператор или тест выделяется серым цветом (рис. 7.58).
Первым в списке событий всегда является глобальное событие {global event), именуемое так же, как источник потока частиц: PF Source 01 (Источник потока частиц 01), PF Source 02 (Источник потока частиц 02) и т. д. Глобальным оно называется потому, что все помещенные в его состав операторы оказывают действие на все без исключения частицы потока. Глобальное событие — единственное, которое имеет выход в виде квадратного выступа в левой нижней части рамки, а потому может быть связано с другим событием напрямую, без использования теста.
Все остальные события, кроме первого, называют локальными (local event) и именуются просто Event 01 (Событие 01), Event 02 (Событие 02) и т. д. Каждое локальное событие имеет вход в виде квадратного выступа в левой верхней части рамки, но не имеет выхода. Поэтому локальные события не могут связываться друг с другом напрямую. Для обеспечения такой связи в состав локального события обязательно должен быть включен хотя бы один тест. События могут размещаться на панели событий в любом порядке. Очередность их исполнения задается при помощи тестов, соединяющих события между собой. События соединяются тонкими линиями, каждая из которых одним концом указывает на тест одного события, а другим — на вход второго события. Если выделить один из элементов события, на панели параметров появятся его настройки. Для удобства основной параметр каждого оператора помещается в скобках после его названия. Так, для оператора Display (Отображение) этим параметром является способ отображения частиц. Настройка потока событий предполагает выполнение следующих операций:
настройку параметров отдельных операторов и тестов в свитках на панели параметров окна диалога Particle View (Просмотр частиц), для чего требуется предварительно выделить имя оператора (теста) в составе события;
добавление новых действий в состав имеющихся событий или удаление действий из состава событий; изменение или удаление связей между событиями; добавление новых событий и назначение их связей с имеющимися.Добавление новых операторов или тестов в состав события можно выполнить несколькими способами;
путем перетаскивания из библиотеки элементов с помощью мыши (рис. 7.59); с помощью меню события; с помощью меню Edit (Правка) окна диалога Particle View (Просмотр частиц).
Если оператор или тест разместить вне любого из имеющихся событий, то на его основе будет автоматически образовано повое событие (рис. 7.60). В состав нового события помимо выбранного оператора или теста автоматически добавляется событие Display (Дисплей) (рис. 7.61).
Для создания новой связи одного события с другим необходимо добавить в состав события тест и указать курсором на синюю точку, имеющуюся на выходе теста и расположенную слева от значка в форме ромба. Курсор примет вид четырехконечной стрелки, как показано на рис. 7.62.
Затем следует перетащить курсор ко входу второго связываемого события и установить его на кружок над входом. Курсор снова примет вид четырехконечной стрелки (рис. 7.63).
Затем нужно отпустить кнопку мыши, и выход теста первого события будет связан со входом второго события (рис. 7.64).
3. Поскольку при салюте частицы испускаются вверх, а не вниз, нужно перевернуть источник частиц, направив его вверх. Если теперь щелкнуть на кнопке Play Animation (Воспроизвести анимацию), можно увидеть, что движение частиц мало напоминает россыпи настоящего салюта. Поэтому нужно определить события, настроив тем самым желаемый эффект. Для выполнения настройки событий, управляющих поведением настройки частиц, перейдите к свитку Setup (Настройка) и нажмите кнопку Particle View (Просмотр частиц). Вы увидите окно диалога с таким же названием. Для его вызова можно также нажать клавишу 6. В окне Particle View (Просмотр частиц) уже присутствуют два первых события с названиями PF Source 01 (Источник потока частиц 01) и Event 01 (Событие 01). В состав первого события, которое является глобальным, входит оператор Render (Визуализация), благодаря которому все частицы могут быть визуализированы. В состав первого локального события Event 01 (Событие 01) входят операторы Birth (Рождение), Position Icon (Положение значка), Speed (Скорость), Rotation (Вращение), Shape (Форма) и Display (Отображение).
4. Прежде чем создавать праздничный фейерверк, необходимо представить себе, какой должна быть траектория движения частиц. Составление диаграммы событий — задача не из легких. Для того чтобы построить событийную модель и правильно выбрать параметры каждого из событий, необходимо хорошо себе представлять, какие действия должны происходить с частицами. В нашем случае частицы рождаются и летят вверх. Каждый залп праздничного салюта оставляет позади себя немного растянутый хвост. По достижении определенной высоты хвост должен исчезнуть, и в этом месте должен произойти разлет частиц во все стороны. Таким образом, мы будем создавать несколько событий: событие, которое породит частицы (1), событие, которое позволит создать хвост летящего залпа (2), событие, определяющее высоту, на которой произойдет взрыв пиротехнического заряда (3), и, наконец, событие, определяющее поведение частиц при взрыве фейерверка (4). Как видите, сцена довольно сложная, но попробуем шаг за шагом ее воссоздать.
5. Начнем с первого события. Первое, что необходимо сделать, — увеличить время, в течение которого источником испускаются частицы. Выделите в прямоугольнике Event 01 (Событие 01) оператор Birth (Рождение) и измените значение Emit Stop (Окончание времени испускания частиц) с 30 на 150.
9. Теперь давайте определимся, как должны вести себя частицы, образующие хвост залпа. Они должны возникать по пути следования первоначальных частиц и исчезать через некоторое время. При этом они не должны разлетаться, иначе хвост «развеется». Выделите оператор Speed (Скорость) и установите значение одноименного параметра равным нулю. Благодаря этому частицы будут стоять на месте. Теперь добавьте к событию оператор Delete (Удалить). С его помощью можно ограничить длину хвоста. Выделите его на панели событий и установите переключатель Remove (Убирать) в положение By Particle Age (По возрасту частиц). После этого станут активными параметры Life Span (Время жизни) и Variation (Вариации). Установите значение первого параметра равным 12. Это означает, что частицы будут существовать в течение 12-ти кадров после рождения, после чего будут исчезать. По ходу движения первоначальных частиц постоянно будут появляться новые частицы, порожденные ранее, будут исчезать, а на анимации это будет выглядеть как движущийся хвост. Значение параметра Variation (Вариации) установите равным нулю. Добавьте во второе событие еще один оператор — Shape Facing (Вид частиц). Он служит для того, чтобы частицы, имитирующие салют, все время были обращены к камере плоской стороной. Также с его помощью можно управлять размером этих частиц. Перейдите к параметрам этого оператора и нажмите кнопку Look At Camera/ Object (Связать с камерой/Объектом) и укажите в сцене камеру, через которую будет производиться наблюдение за событиями. В группе настроек Size/Width (Размер/Ширина) проверьте, чтобы переключатель был установлен в положении In World Space (В глобальном пространстве) и в поле Units (Единицы) введите число 3. Для того чтобы наблюдать салют в окне проекции, оператор Shape Facing (Вид частиц) вам не нужен, он понадобится при визуализации эффекта.
10. Перейдем к третьему событию, которое, как вы, наверное, помните, должно определять высоту, на которой произойдет взрыв пиротехнического заряда салюта. Для его создания выберите тест Spawn (Порождение) из библиотеки и перетащите на пустое место в окно событий. В настройках теста установите переключатель Spawn Rate And Amount (Количество и частота порождений) в положение By Travel Distance (По пути следования). Выберите значение параметров Step Size (Размер шага) равным 1,7, Spawnable % % (Процент порождающих частиц) — 100, Offspring # # (Количество новых частиц) — 100, Variation % (Вариации) — 25. В группе настроек Speed (Скорость) установите переключатель в положение Inherited % (Унаследовать) и установите значение 0. Для параметра Variation % (Вариации) в этой группе также выберите значение 0. Параметр Divergence (Дивергенция) установите равным 16. Под влияние третьего события должны попадать только те частицы, возраст которых превышает 75 кадров. Ранее мы создали тест Age Test (Возрастной тест) в первом событии. Именно его нужно связать с третьим событием.
11. Добавьте к третьему событию уже знакомый вам оператор Speed (Скорость), отвечающий за скорость частиц. Значение параметра Speed (Скорость) установите равным 50, Variation (Вариации) равным нулю, а в раскрывающемся списке Direction (Направление) выберите пункт Along Icon Arrow (Вдоль указателя стрелки). Теперь добавим в событие еще один знакомый нам оператор Delete (Удалить), который будет удалять частицы, достигшие высоты, на которой будет происходить взрыв салюта. В настройках оператора установите переключатель Remove (Убирать) в положение By Particle Age (По возрасту частиц). Значение параметра Life Span (Время жизни) установите равным 80, a Variation (Вариации) равным нулю.
12. Для того чтобы траектория движения частиц была более реалистичной, на них должна действовать сила земного притяжения. Для имитации эффекта гравитации в сцену необходимо добавить объемную деформацию Gravity (Гравитация). Сверните окно Particle View (Просмотр частиц), после чего щелкните на кнопке категории SpaceWarps (Объемные деформации) командной панели Create (Создать) и выберите вариант Forces (Силы) в раскрывающемся списке разновидностей объектов. Щелкните на кнопке Gravity (Гравитация) и создайте объемную деформацию в произвольном месте сцены. В свитке Parameters (Параметры) установите переключатель в положение Planar (Плоский фронт) и укажите значение параметра Strength (Сила) равным 0,2. Благодаря этому воздействие гравитации будет происходить только в направлении значка. Для того чтобы на частицы воздействовала сила гравитации, добавьте оператор Force (Сила) в третье событие. В настройках оператора с помощью кнопки Add (Добавить) добавьте в список Force Spacewarps (Действующие объемные деформации) созданную объемную деформацию Gravity (Гравитация), а значение параметра Influence % (Процент влияния) установите равным 70. Завершая настройку события, добавьте в него оператор Shape Facing (Вид частиц). Поскольку его параметры практически полностью будут совпадать с настройками одноименного оператора, использующегося во втором событии, проще просто скопировать его. Для этого щелкните по оператору правой кнопкой мыши и в контекстном меню выберите пункт Сору (Копировать) (рис. 7.67). Затем щелкните правой кнопкой в области третьего события и выберите пункт Paste (Вставить). Установите значение параметра Units (Единицы) равным 1.
13. Наконец, перейдем к настройке последнего события, которое будет определять поведение частиц при взрыве фейерверка. Для того чтобы частицы разлетелись в разные стороны, необходимо в настройках оператора Speed (Скорость) указать случайное направление вектора скорости каждой частицы. Добавьте этот оператор на панель событий, тем самым создав четвертое событие. В списке Direction (Направление) выберите пункт Random 3D (Случайное 3D). Скопируйте оператор Force (Сила) из третьего события и установите значение параметра Influence % (Процент влияния) равным 500. На некотором расстоянии от эпицентра взрыва фейерверка искры должны потухнуть. Это означает, что частицы, имитирующие их, должны быть удалены. Поэтому снова обратимся к оператору Delete (Удалить). Вы можете создать новый оператор пли же скопировать его из второго или из третьего события. В настройках оператора установите значение параметра Life Span (Время жизни) равным 13. Завершим настройку события, добавив в него оператор Shape Facing (Вид частиц). Установите значение параметра Units (Единицы) равным 7. Используя тест Spawn (Порождение), свяжите третье событие с четвертым. Конечная диаграмма событий будет выглядеть, как на рис. 7.68.
14. Закройте окно Particle View (Просмотр частиц) и нажмите кнопку Play Animation (Воспроизвести анимацию). Вы увидите, что над зданием кафе «МАХ» происходит праздничный салют (рис. 7.69). Сохраните сцену под названием MAX-kafe_salut.max. В папке Animation\Glava07 вы можете посмотреть, как выглядит этот эффект, запустив файл salut.avi.
Для создания булевских составных объектов выполните следующие действия:
1. Создайте два трехмерных тела (см. пример на рис. 7.43) и расположите их так, чтобы оболочки объектов перекрывались, как показано на рис. 7.43, в. Выделите одни из объектов, который далее будет именоваться «операнд А».
Метод лофтинга является логическим продолжением тех методов преобразования форм-кривых в трехмерные тела, с которыми вы познакомились в предыдущей главе, так что имеет смысл начать изучение составных объектов с такого типа, как Loft (Лофтинговые). Объект, созданный методом лофтинга, или лофтишовый объект (loft object), — это трехмерное тело, поверхность которого строится как огибающая одной или нескольких опорных двумерных форм (loft shapes), размещенных вдоль некоторой кривой, называемой путем (path). Формы, на которые опирается поверхность подобного объекта, становятся его поперечными сечениями, а форма-путь определяет размещение сечений в пределах объекта. Чтобы создать объект методом лофтинга, требуются как минимум две формы — одна в качестве сечения (сечений может быть и несколько) и одна — в роли пути. Если используется только одна форма-сечение, то max 7.5 разместит ее на обоих концах пути.
Единственными ограничениями на формы-сечения являются требования, чтобы все они состояли из одинакового числа сплайнов или NURBS-кривых и чтобы сплайны в их составе имели одинаковый порядок вложенности. Последнее означает, что если одно из сечений представляет собой две замкнутые кривые, вложенные одна в другую, как, например, сплайн-кольцо, то и остальные сечения должны иметь вид двух кривых, вложенных друг в друга, а не расположенных рядом друг с другом.
В предыдущей главе вы начали создавать настенный светильник для «МАХ-кафе». Продолжите работу над светильником, создав методом лофтинга кронштейн для лампы. Выполните следующие действия:
1. Откройте сохраненный в предыдущей главе файл Lampa01.max, содержащий два объекта: плафон и опору в форме щита. Если этого файла у вас нет, то загрузите файл Lampa01.max из папки Scenes\Glava_06 прилагающегося к книге компакт-диска. Сохраните файл под именем Lampa02.max, используя прием инкрементирования имени. Временно скройте плафон и опору от просмотра, чтобы они не мешали работе. Переместите начало координат сетки в окне проекции Left (Вид слева) в левый нижний угол окна и установите масштаб, при котором вертикальный размер видимой части сетки в окне проекции составляет примерно 50 см. Разверните окно проекции на весь экран.
2. Выберите на командной панели Create (Создать) инструмент Point Curve (Точечная кривая) и нарисуйте кривую, показанную на рис. 7.1, которая будет играть роль пути для тела лофтинга. При определении размеров кривой исходите из того, что она должна вписываться в воображаемый квадрат со стороной около 40 см. Затем создайте стандартный сплайн Circle (Круг) радиусом 1,5 см, представляющий собой сечение формируемого кронштейна.
Интерьер нашего «МАХ-кафе» должно украсить настенное зеркало в массивной багетной раме. Создайте раму методом лофтинга, выполнив для этого следующие действия:
1. Запустите или перезагрузите max 7.5 и сохраните пустой файл под именем Zerkalo.max. Выберите в качестве единиц измерения сантиметры и установите шаг сетки равным 1 см. Переместите начало координат сетки в окне проекции Front (Вид спереди) в левый нижний угол окна и установите масштаб, при котором вертикальный размер видимой части сетки в окне проекции составляет примерно 20 см. Разверните окно проекции на весь экран.
2. Нарисуйте замкнутый сплайн типа Line (Линия), показанный на рис. 7.6, который будет играть роль поперечного сечения рамы. Чтобы воспроизвести образец, разместите вершину 1 в точке (0; 14,3; 0), вершину 2 — в начале координат, вершину 3 — в точке (23,9; 0; 0). Не забывайте о возможности точного размещения вершин с помощью полей ввода координат в нижней части экрана max 7.5 или окна диалога Move Transform Type-In (Ввод данных преобразования перемещения). Остальные вершины разместите примерно так, как показано на рисунке, и откорректируйте форму кривой. Назовите полученную форму Profil.
Конечно, помешивать угли можно и просто палкой или куском толстой проволоки с загнутым концом. Однако мы методом лофтинга создадим для камина нашего кафе более совершенную кочергу, как бы выкованную из металлического прутка квадратного сечения с ребристой ручкой, чтобы удобно было держать в руках (рис. 7.8).
Ложка нам понадобится для сервировки столов «МАХ-кафе». Если вдуматься, то создать трехмерное тело в форме обычной ложки не так-то просто. Ложка не является ни телом вращения, ни телом экструзии, да и обычный лофтинг не дает желаемых результатов — ложка выходит довольно корявая (попробуйте сами!). Тут-то и приходит на помощь лофтинг NURBS-поверхности. Кстати, при выполнении этого упражнения мы рассмотрим еще один полезный практический прием, часто применяемый разработчиками трехмерных моделей, — использование опорных контуров-проекций. Такие контуры не участвуют непосредственно в формировании поверхности, а служат только опорными линиями, демонстрирующими будущие границы проекций поверхности создаваемого тела. Опорные проекции используются для визуальной ориентировки с целью правильного размещения и масштабирования сечений.
Итак, чтобы усвоить все особенности построения NURBS-поверхностей методом лофтинга, внимательно повторяйте за мной следующие действия:
1. Подготовьте программу к работе обычным порядком. Запустите или перезагрузите max 7.5, выберите в качестве единиц измерения сантиметры и установите шаг сетки равным 1 см. Установите в окне проекции Тор (Вид сверху) масштаб, при котором вертикальный размер видимой части сетки составляет примерно 25 см. Разверните окно проекции на весь экран. Сохраните созданную пустую сцену под именем Lozhka.max.
2. Нарисуйте в окне проекции Тор (Вид сверху) зеркальную половину опорного контура проекции будущей ложки, показанную на рис. 7.14. Этот контур не будет непосредственно использоваться при создании трехмерного тела, но в порядке тренировки создайте его в виде NURBS-кривой типа CV, выбрав для этого на командной панели Create (Создать) инструмент CV Curve (CV-кри-вая). Первую (крайнюю слева) опорную вершину поместите в точку (-15,5; 0; 0), последнюю — в точку (14; 0; 0). Остальные опорные вершины разместите так, чтобы по возможности воспроизвести контур, приведенный на рисунке.
Вилка нам также понадобится для сервировки столов «МАХ-кафе». Предмет этот, как и ложка, имеет довольно затейливую форму. Однако вы скоро сможете убедиться, что с использованием метода лофтинга и деформаций создание таких предметов не является проблемой. Итак, повторяйте за мной.
1. Запустите или перезагрузите max 7.5, выберите в качестве единиц измерения сантиметры и установите шаг сетки равным 1 см. Установите в окне проекции Тор (Вид сверху) масштаб, при котором вертикальный размер видимой части сетки в окне проекции составляет примерно 5 см. Сохраните созданную пустую сцену под именем Vilka.max.
2. Нарисуйте в окне проекции Тор (Вид сверху) стандартный сплайн Rectangle (Прямоугольник) с размерами Length (Длина) = 4 см, Width (Ширина) = 0,8 см, скруглив углы радиусом 0,3 см. Это будет сечение тела лофтинга. Затем активизируйте окно проекции Front (Вид спереди), разверните окно проекции во весь экран, установите такой масштаб, чтобы размер горизонтальной части сетки составлял примерно 40 см, и нарисуйте кривую-путь, как показано на рис. 7.32. Первую (крайнюю слева) вершину поместите в точку (-15,5; 0; 0), последнюю — в точку (15; 0; 0), а остальные разместите так, чтобы воспроизвести форму кривой, показанной на рисунке.
В этом упражнении мы построим тело лофтинга, используя трехмерную NURBS-кривую в форме финских саней, которую создавали в главе 6. Затем мы изменим форму тела лофтинга за счет деформации масштаба сечений. Цель упражнения — наглядно показать, что кривизна линии пути лофтинга не играет никакой роли при настройке кривых деформации масштаба.
Чтобы закрепить навыки настройки кривых деформации, полученные в предыдущем упражнении, выполните следующие действия:
1. Загрузите сохраненный в упражнении 2 главы 6 файл Finskie sani.max, содержащий трехмерную NURBS-кривую в форме финских саней. Если вы не сохранили такой файл, то можете найти его в папке Scenes\Glava_07 компакт-диска, прилагающегося к книге. Сохраните файл с инкрементированием имени.
2. Создайте в окне проекции Тор (Вид сверху) форму-сечение в виде стандартного сплайна-круга примерно такого размера по отношению к NURBS-кри-вой, как показано на рис. 7.37. Выделите NURBS-кривую, которая будет играть роль формы-пути.
Здание нашего «МАХ-кафе» до сих пор не имеет ни дверей, ни окон. Давайте подготовим дверной и оконный проемы в стене фасада. Выполните следующие действия:
1. Откройте ранее сохраненный файл MAX-kafe04.max. Если вы по каким-либо причинам не сохранили этот файл, то загрузите файл с именем MAX-kafe04.max из папки Scenes\Glava_07 компакт-диска, прилагающегося к книге. Сохраните файл с инкрементированием имени.
2. В окне проекции Front (Вид спереди) постройте два стандартных примитива типа Box (Параллелепипед) со следующими размерами: для оконного проема — Length (Длина) = 175 см, Width (Ширина) - 245 см, Height (Высота) = 30 см, для двери — Length (Длина) - 200 см, Width (Ширина) = 135 см, Height (Высота) = 30 см. Разместите центры объектов в точках с координатами: для окна — X = -150 см, Z = 160 см, для двери — X = 75, Z - 130 см. Затем переместите оба объекта в окне проекции Тор (Вид сверху) вперед, так чтобы они слегка выступали и с наружной, и с внутренней стороны стены фасада. При этом глобальная координата Y центров обоих объектов должна равняться -295 см.
3. Выделите переднюю стену здания — объект Fasad. Щелкните на кнопке Geometry (Геометрия) командной панели Create (Создать), выберите в раскрывающемся списке разновидностей объектов вариант Compound Objects (Составные объекты) и щелкните на кнопке Boolean (Булевские) в свитке Object Type (Тип объекта). В свитке Pick Boolean (Задать операнд) щелкните на кнопке Pick Operand В (Указать операнд В), а затем в любом из окон проекций щелкните на объекте-параллелепипеде, предназначенном для формирования оконного проема. Переключатель Operation (Операция) установите в положение Subtraction (А-В) (Исключение (А-В)). В стене фасада появится прямоугольное отверстие — оконный проем, сквозь который видна внутренняя часть здания. Щелкните правой кнопкой мыши, чтобы закончить операцию создания булевского объекта, в который превратился теперь объект Fasad.
4. Чтобы создать проем для двери, снова выделите стену фасада, щелкните на кнопке Boolean (Булевские) в свитке Object Type (Тип объекта), затем — на кнопке Pick Operand В (Указать операнд В) в свитке Pick Boolean (Задать операнд) и выделите объект, формирующий дверной проем. В стене фасада появится второе отверстие — проем для двери, как показано на рис. 7.45. Щелкните правой кнопкой мыши, чтобы закончить операцию создания булевского объекта. Как видите, в создании булевских объектов нет ничего хитрого. Сохраните файл под измененным в начале работы именем MAX-kafe05.max.
Закрепим навыки создания булевских объектов, «нарезав» зубья на заготовке вилки, созданной ранее при освоении метода лофтинга. Выполните следующие действия:
1. Откройте ранее сохраненный файл Vilka.max или загрузите файл с аналогичным именем из папки Scenes\Glava_07 компакт-диска, прилагающегося к книге. Сохраните файл с инкрементированием имени.
2. Активизируйте окно проекции Front (Вид спереди), увеличьте изображение, как показано на рис. 7.46, и создайте усовершенствованный примитив ChamferBox (Параллелепипед с фаской) со следующими размерами: Length (Длина) = 4,0 см, Width (Ширина) - 9,5 см, Height (Высота) = 0,7 см, Fillet (Фаска) = 0,2 см. Этот параллелепипед и два его образца мы вычтем из заготовки, образовав промежутки между зубьями вилки.
Так как время действия создаваемого нами проекта «МАХ-кафе» по сценарию приходится на зимний период, неплохо было бы дополнить сцену падающим с неба легким снежком, который будет попадать в поле зрения камеры, установленной снаружи перед фасадом кафе «МАХ». Пример изображения сцены с падающими снежинками вы могли видеть ранее в главе 1 (см. рис. 1.20).
Чтобы сымитировать падающий снег, выполните следующие действия:
1. Откройте ранее сохраненный файл MAX-kafe05.max, содержащий здание кафе с проемами для окна и двери, или загрузите файл MAX-kafe05.max из папки Scenes\Glava_07 компакт-диска, прилагающегося к книге. Сохраните файл с инкрементированием имени. Активизируйте окно проекции Тор (Вид сверху).
2. Щелкните на кнопке категории Geometry (Геометрия) командной панели Create (Создать) и выберите вариант Particle Systems (Системы частиц) в раскрывающемся списке разновидностей объектов. Щелкните на кнопке Snow (Снег) в свитке Object Type (Тип объекта).
3. Переместите курсор в окно проекции Тор (Вид сверху), щелкните кнопкой мыши примерно в точке (-500; -390) и растяните по диагонали прямоугольник значка источника частиц примерно до точки (500; -740). Частицы испускаются со всей поверхности источника, так что размеры его значка определяют размеры области пространства, в пределах которой будут наблюдаться снежинки. Хотя и нет необходимости задавать размеры значка источника частиц с высокой точностью, проделаем это в учебных целях. Прокрутите область свитков командной панели Create (Создать) вверх, чтобы стал виден раздел Emitter (Источник). Задайте следующие размеры значка источника частиц: Width (Ширина) = 1000 см, Length (Длина) = 350 см. Затем выберите инструмент Select and Move (Выделить и переместить) и при все еще выделенном значке источника введите в поля отсчета координат строки состояния требуемые значения координат положения центра источника частиц-снежинок: (0; -565; 620). Итоговый вид источника частиц типа Snow (Снег) в составе сцены «МАХ-кафе» показан на рис. 7.53.
Тихо падают снежинки на землю, горит неоновая вывеска кафе «МАХ», и в это время раздается громкий хлопок — над крышей здания разлетаются в разные стороны искры новогоднего фейерверка. Взлетая в небо, залп салюта взрывается сотнями светящихся огней. Ну как, впечатляет? Тогда попробуем создать такой салют.
Для его моделирования будем использовать источник частиц PF Source (Источник потока частиц).
1. Загрузите файл MAX-kafe05a.max из папки Scenes\Glava_07 компакт-диска, прилагающегося к книге. Он содержит здание кафе с проемами для окна и двери, а также дополнительный объект — направленную камеру, через которую можно наблюдать сцену. Активизируйте окно проекции Perspective (Перспектива). По умолчанию в max 7.5 длина анимации составляет 100 кадров, что равняется примерно трем секундам. Поскольку ни один салют не длится три секунды, необходимо увеличить продолжительность анимации. Для этого нажмите кнопку Time Configuration (Настройка временных интервалов) и установите параметр Length (Продолжительность) равным тремстам кадрам. Подробнее о настройках окна Time Configuration (Настройка временных интервалов) вы узнаете в главе 15.
2. Щелкните на кнопке категории Geometry (Геометрия) командной панели Create (Создать) и выберите вариант Particle Systems (Системы частиц) в раскрывающемся списке разновидностей объектов. Щелкните на кнопке PF Source (Источник потока частиц) в свитке Object Type (Тип объекта). После нажатия кнопки PF Source (Источник потока частиц) вы увидите на командной панели Create (Создать) параметры потока частиц. Перейдите ко второму свитку — Emission (Испускание) и выберите форму значка источника частиц. Для этого раскройте список Icon Type (Тип значка) и выберите вариант Circle (Круг). Щелкните в окне проекции и разместите источник частиц в окне проекции таким образом, чтобы он располагался позади здания кафе «МАХ» (рис. 7.65). Обратите внимание на то, что источник частиц сразу же будет создан в форме круга, так как мы выбрали сто форму заранее. Если же создать объект PF Source (Источник потока частиц) с настройками по умолчанию, он будет создан в виде прямоугольника (Rectangle). Чтобы изменить его форму после создания в окне проекции, перейдите на командную панель Modify (Изменить) и установите вариант Circle (Круг) в списке Icon Type (Тип значка). После выбора круглой формы источника частиц его настройки, расположенные в свитке Emission (Испускание), изменятся. Если при использовании формы Rectangle (Прямоугольник) можно задать длину объекта, то при выборе варианта Circle (Круг) нужно будет указать диаметр. Установите курсор в поле Diameter (Диаметр) и введите значение 152.
Наряду с простыми системами частиц в max 7.5 имеется также более сложный инструмент для создания эффектов, связанных с частицами, — Particle Flow (Поток частиц). Основное его отличие от других систем частиц mах 7.5 состоит в том, что он позволяет гибко управлять поведением частиц. Если при использовании обычных систем частиц все частицы ведут себя одинаково, по установленным для всех правилам, то с помощью Particle Flow (Поток частиц) ими можно управлять, основываясь на событиях (events). В составе каждого события присутствуют операторы (operators). Они определяют способ отображения частиц в окнах проекций, их форму, скорость, направление движения, наличие вращения и т. д. Обычно при настройке поведения частиц при помощи Particle Flow (Поток частиц) используется не одно, а несколько событий, которые объединяются в поток (flow). Для объединения событий служат специальные элементы — тесты (tests). Последние представляют собой критерии, по которым производится отбор частиц для перехода от одного события к другому. Тесты определяют условия перехода, например достижение определенной скорости, приближение на указанное расстояние к выбранному объекту и т. д. Если для частицы выполняется условие, которое задает тест, она переходит к следующему событию и ведет себя уже так, как определяют операторы этого события.
Таким образом, используя подобные гибкие элементы управления, можно создавать достаточно сложные сцены с частицами. Например, при достижении определенного возраста частицы могут изменять свою форму, а затем, набрав скорость, менять цвет.
Для того чтобы иметь возможность работать с потоками частиц, необходимо создать в окне проекции объект PF Source (Источник потока частиц) (рис. 7.56). Он создается точно так же, как и другие системы частиц, с которыми вы уже успели познакомиться. Для настройки потоков частиц используется окно Particle View (Просмотр частиц), которое можно вызвать щелчком по кнопке с таким же названием в свитке Setup (Настройка) объекта PF Source (Источник потока частиц), выбором команды меню Graph Editors > Particle View (Графические редакторы > Просмотр частиц) или нажатием клавиши 6.