Текст книги "3ds Max 2008. Секреты мастерства"
Автор книги: Владимир Верстак
Жанр: Программы, Компьютеры
Возрастные ограничения: +12
сообщить о неприемлемом содержимом
Текущая страница: 24 (всего у книги 46 страниц)
Рис. 8.49. Дополнительные ключи анимации, созданные для объекта Dummy01
4. В строке треков (в нижней части окна 3ds Max) переместите вновь созданные ключи с 279 кадра на 390 и с 480 на 450 кадр. Таким образом мы уменьшим время на прохождение этого участка.
Теперь нужно синхронизировать отображение текста с измененным движением объекта Dummy01 и можно приступать к анимации ручки. Это можно сделать, снова воспользовавшись редактором кривых. На сей раз необходимо передвинуть ключи для третьего флага карты Gradient Ramp (Усовершенствованный градиент) в положение 390 и 450 кадров (рис. 8.50).
Рис. 8.50. Окно Track View – Curve Editor (Просмотр треков – редактирование кривых) после редактирования ключей анимации
ПРИМЕЧАНИЕ
При желании вы можете выполнить аналогичное создание и редактирование ключей анимации для всех участков сплайна, не относящихся к написанию текста (например, начальное положение ручки в чернильнице).
Для создания более реалистичных движений ручки понадобится еще один сплайн, который будет управлять перемещением в пространстве ее второго (верхнего) конца. Сделать такой сплайн совсем не сложно: достаточно зеркально отобразить сплайн, по которому проходит перо, увеличить сплайн в два раза по оси Y и разместить его немного выше ручки (рис. 8.51).
Рис. 8.51. Форма и положение сплайна, предназначенного для управления анимацией верхнего конца ручки
ВНИМАНИЕ
Я не только зеркально отобразил сплайн для придания более естественного движения ручке, но и откорректировал его форму в месте движения по направлению к чернильнице.
Создадим второй вспомогательный объект Dummy02 для верхнего сплайна. Его, как и Dummy01, необходимо анимировать по пути при помощи команды Animation ► Constraints ► Path Constraint (Анимация ► Ограничения ► Ограничение по пути), а в качестве пути выбрать верхний сплайн.
Если сейчас просмотреть анимацию, передвигая ползунок таймера анимации, то можно заметить, что движения по сплайнам первого и второго вспомогательных объектов не совпадают. Это вызвано тем, что для Dummy01 мы ранее устанавливали на пути следования ключи анимации и редактировали их положение. Сейчас то же самое необходимо сделать и для Dummy02 при помощи редактора кривых. Это легко выполнить, если в местах расположения ключей Dummy01 создать ключи для Dummy02 и переместить их в вертикальной плоскости, контролируя изменение положения вспомогательного объекта в окне проекции Top (Cверху).
Продолжим создание анимации. Создайте еще один вспомогательный объект Dummy03 размером в 2-3 раза больше первого (Dummy01) и разместите в пространстве так, чтобы опорные точки его и вспомогательного объекта Dummy01 совпадали (рис. 8.52), для чего можно воспользоваться инструментом Align (Выравнивание)
расположенным на главной панели инструментов.
Рис. 8.52. Взаимное расположение вспомогательных объектов Dummy01 и Dummy03 в окне проекции Pespective (Перспектива)
Привяжите вспомогательный объект Dummy03 к первому вспомогательному объекту Dummy01. Для этого выделите Dummy03, нажмите кнопку Select and Link (Выделить и связать) и укажите в окне проекции на Dummy01. Сразу же после привязки проверьте анимацию, передвинув ползунок таймера. Если все было выполнено правильно, оба вспомогательных объекта будут передвигаться по пути синхронно.
Третий вспомогательный объект мы создали из-за необходимости позиционирования верхней части ручки на объект Dummy02, расположенный на верхнем сплайне. В этом должен помочь контроллер LookAt Constraint (Ограничение по линии взгляда). Для этого выполните следующие действия.
1. Расположите ручку в первом кадре анимации так, чтобы перо ручки находилось в середине вспомогательного объекта Dummy03 (иначе говоря, в начале текста).
2. При помощи Select and Link (Выделить и связать) привяжите ручку к объекту Dummy03.
3. Проверьте анимацию. Ручка должна двигаться по сплайну, находясь в вертикальном положении.
4. Выделите вспомогательный объект Dummy03.
Рис. 8.53. Свиток LookAt Constraint (Ограничение по линии взгляда) вспомогательного объекта Dummy03
5. Выполните команду меню Animation ► Constraints ► LookAt Constraint (Анимация ► Ограничения ► Ограничение по линии взгляда) и укажите в окне проекции объект Dummy02, на который будет направлен взгляд.
6. В свитке LookAt Constraint (Ограничение по линии взгляда) на командной панели установите ось направления взгляда Z (рис. 8.53), в результате чего ручка повернется в направлении верхнего вспомогательного объекта Dummy02.
На этом процесс создания анимации можно считать законченным. Осталось только выполнить визуализацию и сохранить результат в файл.
Использование модификатора Cloth (Ткань) для симуляции поведения тканейПРИМЕЧАНИЕ
Файл урока с настройками ключей анимации и отредактированными сплайнами animated_text_end.max можно найти на прилагаемом DVD в папке ExamplesГлава 08Text. В папке VideoГлава 08 находится готовая анимация animated_text.avi.
Рассмотрим работу с модификатором Cloth (Ткань). В отличие от одноименного оператора модуля reactor, этот модификатор в первую очередь призван облегчить создание и анимацию одежды моделируемых персонажей. Данный модификатор имеет достаточно широкие возможности, которые можно довольно долго описывать, я же хочу показать, как при помощи модификатора Cloth (Ткань) можно легко и просто создавать объекты, имитирующие поведение ткани. Мы опишем, как создать два объекта: скатерть и развевающийся флаг.
Для создания модели скатерти нам понадобится простая сцена, состоящая из двух объектов: столешницы и скатерти. Для построения первого объекта воспользуйтесь параметрическим объектом Box (Параллелепипед). В качестве второго будет использован объект формы Rectangle (Прямоугольник). Создайте оба объекта в окне проекции Top (Сверху). Расположите прямоугольник относительно объекта столешницы сверху и центрируйте по осям X и Y (рис. 8.54).
ПРИМЕЧАНИЕ
Для создания ткани можно также воспользоваться параметрическим объектом Plane (Плоскость) с достаточным количеством сегментов по длине и ширине (допустим, 50), однако применение сплайнов позволяет получить дополнительные возможности: создание объектов произвольной формы (например, скатерть с фигурными краями), внутренних швов и разрезов. Особенно это актуально при создании одежды.
Рис. 8.54. Взаимное расположение объектов в сцене
На основе объекта Rectangle (Прямоугольник) необходимо создать поверхность. Самый легкий способ – преобразовать прямоугольник в полигональную поверхность. Однако при этом мы потеряем дополнительные возможности объекта формы. Лучшим выбором в данном случае будет использование модификатора Garment Maker (Моделирование одежды). Чтобы присвоить этот модификатор, выделите в одном из окон проекций прямоугольник и выполните команду главного меню Modifiers ► Cloth ► Garment Maker (Модификаторы ► Ткань ► Моделирование одежды). Обратите внимание, что два из четырех углов стали закругленными. Избавиться от этого можно, выполнив разбиение вершин этих углов, что приведет к созданию самостоятельных сплайнов на уровне подобъектов формы. Для этого перейдите в стеке модификаторов на нижний уровень (то есть выделите в стеке строку Rectangle (Прямоугольник)), щелкните на раскрывающемся списке Modifier List (Список модификаторов) и выберите из списка модификатор Edit Spline (Редактирование сплайна) (рис. 8.55).
Рис. 8.55. Положение модификатора Edit Spline (Редактирование сплайна) в стеке
Для редактирования прямоугольника перейдите на уровень подобъектов Vertex (Вершина), для чего щелкните в настройках модификатора Edit Spline (Редактирование сплайна) на кнопке Vertex (Вершина) в свитке Selection (Выделение) или нажмите горячую клавишу 1. Выделите все четыре вершины прямоугольника, перейдите к свитку Geometry (Геометрия) и щелкните на кнопке Break (Разбить). После этого выйдите из режима редактирования вершин, повторно щелкнув на кнопке Vertex (Вершина), и вернитесь к модификатору Garment Maker (Моделирование одежды).
Для продолжения работы необходимо обновить созданную модификатором поверхность и увеличить ее топологию. Для этого в свитке Main Parameters (Основные параметры) настроек модификатора Garment Maker (Моделирование одежды) щелкните на кнопке Mesh It! (Рассчитать сетку) и увеличьте значение параметра Density (Плотность) до 2.
ВНИМАНИЕ
Увеличение количества треугольников, образующих поверхность объекта, позволит создать более естественное поведение ткани. Однако на компьютерах с низкой производительностью это может вызвать длительные расчеты динамики ткани и даже зависания. По данной причине на таких компьютерах лучше не задавать параметру Density (Плотность) значение больше 1.
В результате все углы станут ровными, а плотность сетки повысится, что позволит получить сглаженные складки поверхности ткани. На рис. 8.56, слева показан фрагмент прямоугольника с примененным модификатором Garment Maker (Моделирование одежды) до редактирования, а на рис. 8.56, справа – после.
Рис. 8.56. Фрагмент прямоугольника до редактирования (слева) и после него (справа)
Применим к прямоугольнику модификатор Cloth (Ткань), выполнив команду главного меню Modifiers ► Cloth ► Cloth (Модификаторы ► Ткань ► Ткань). Для настройки поведения ткани выполните следующие действия.
1. В свитке Object (Объект) настроек модификатора Cloth (Ткань) щелкните на кнопке Object Properties (Свойства объекта).
2. В появившемся окне Object Properties (Свойства объекта) выберите из списка доступных объектов прямоугольник (объект с именем Rectangle01) и установите переключатель в положение Cloth (Ткань).
3. В области Cloth Properties (Свойства ткани) из раскрывающегося списка Presets (Предустановки) выберите строку Default (Исходный) (рис. 8.57).
Рис. 8.57. Настройка свойств объекта Rectangle01
4. Чтобы использовать в расчетах поведения ткани поверхности стола (в нашем случае это построенный ранее параллелепипед), в окне Object Properties (Свойства объекта) щелкните на кнопке Add Objects (Добавить объекты), в появившемся окне Add Objects to Cloth Simulation (Добавить объекты к расчетам динамики ткани) выберите объект Box01 и нажмите кнопку Add (Добавить).
5. Для объекта Box01 установите переключатель в положение Collision Object (Объект столкновения) и оставьте значения, принятые по умолчанию (рис. 8.58).
Рис. 8.58. Настройка свойств объекта Box01
6. Щелкните на кнопке OK для закрытия окна Object Properties (Свойства объекта).
Все готово к расчетам динамики ткани. Чтобы запустить эти расчеты, необходимо в области Simulation (Моделирование) свитка Object (Объект) щелкнуть на кнопке Simulate (Моделирование) или на кнопке Simulate Local (Локальное моделирование) (если не планируете создавать анимацию поведения ткани во времени).
ПРИМЕЧАНИЕ
После запуска расчета динамики вы можете в любое время остановить его и выполнить дополнительную настройку свойств объектов, например изменить плотность сетки модификатора Garment Maker (Моделирование одежды). В этом случае необходимо вернуть ползунок таймера анимации на первый кадр (если вы не использовали локальные расчеты динамики) и щелкнуть на кнопке Erase Simulation (Очистить моделирование) в свитке Object (Объект).
На рис. 8.59 показан результат расчета динамики ткани.
Рис. 8.59. Результат расчетов модификатора Cloth (Ткань)
ПРИМЕЧАНИЕ
В папке ExamplesГлава 08Cloth прилагаемого к книге DVD находится файл tablecloth.max, который можно загрузить для просмотра и анализа выполненной анимации.
Рассмотрим еще один вариант использования модификатора Cloth (Ткань): создадим модель развевающегося флага. В этом нам поможет замечательная особенность данного модификатора, позволяющая взаимодействовать со стандартными объектами категории Force (Сила).
Как всегда, начнем с построения объектов. Для имитации флага нам понадобятся два объекта: Plane (Плоскость), имитирующий полотно флага, и Wind (Ветер), который будет удерживать флаг в горизонтальном положении (по умолчанию на объекты, к которым применен модификатор Cloth (Ткань), действует сила тяжести).
Для построения плоскости переключитесь в окно проекции Front (Спереди) и выполните команду главного меню Create ► Standard Primitives ► Plane (Создание ► Простые примитивы ► Плоскость). В свитке Parameters (Параметры) построенного объекта установите желаемые размеры флага и увеличьте значения параметров Length Segs (Количество сегментов по длине) и Width Segs (Количество сегментов по ширине) до 20-25. Это позволит получить более естественную деформацию ткани.
Для построения объекта, имитирующего ветер, необходимо выполнить команду главного меню Create ► SpaceWarps ► Forces ► Wind (Создание ► Пространственные деформации ► Силы ► Ветер) и в окне проекции Top (Сверху) построить значок ветра, развернув его по направлению к флагу (рис. 8.60).
Рис. 8.60. Взаимное расположение плоскости и значка ветра
Назначьте плоскости модификатор ткани. Для этого в одном из окон проекций выделите плоскость и выполните команду главного меню Modifiers ► Cloth ► Cloth (Модификаторы ► Ткань ► Ткань). Настройте модификатор следующим образом.
1. Перейдите на уровень редактирования подобъектов модификатора Cloth (Ткань), для чего щелкните на плюсике, расположенном слева от имени модификатора в стеке, и выделите строку Group (Группа).
2. Выделите слева верхнюю и нижнюю боковые вершины и щелкните на кнопке Make Group (Создать группу) в свитке Group (Группа). В результате откроется окно Make Group (Создать группу), в котором необходимо указать имя группы. Таким образом мы создадим группу из двух точек, которые будут крепиться к древку флага и не будут участвовать в расчетах динамики.
3. После создания группы щелкните на кнопке Drag (Помеха) в свитке Group (Группа). При этом созданная группа должна быть активной (рис. 8.61).
4. Выйдите из режима редактирования подобъектов, для чего щелкните в стеке модификаторов на строке Cloth (Ткань).
5. В свитке Object (Объект) щелкните на кнопке Cloth Forces (Силы, воздействующие на ткань).
6. В левой части открывшегося окна Forces (Силы) щелкните на строке Wind01 и нажмите кнопку >, в результате чего Wind01 переместится в список Forces in Simulation (Симуляция сил).
7. Вернитесь к свитку Object (Объект) настроек модификатора Cloth (Ткань) и щелкните на кнопке Object Properties (Свойства объекта).
8. В открывшемся окне Object Properties (Свойства объекта) выделите строку Plane01 и установите переключатель в положение Cloth (Ткань).
9. Из раскрывающегося списка в области Cloth Properties (Свойства ткани) выберите строку Silk (Шелк). Таким образом, объекту Plane (Плоскость) будут присвоены свойства шелковой ткани (рис. 8.62).
Рис. 8.61. Свиток Group (Группа) с созданной группой из двух точек
Рис. 8.62. Свойства ткани, настроенные для объекта Plane01
10. Подтвердите выполненные изменения щелчком на кнопке OK.
Все предварительные настройки произведены, осталось только увеличить силу ветра и запустить выполнение расчетов динамики ткани. Для этого выделите в одном из окон проекций значок ветра и в свитке Parameters (Параметры) настроек данного объекта увеличьте значение параметра Strength (Мощность) до 5. Чтобы запустить расчет динамики, вернитесь к модификатору Cloth (Ткань) и в свитке Object (Объект) щелкните на кнопке Simulate (Моделирование).
На рис. 8.63 представлен флаг, полученный при помощи модификатора Cloth (Ткань).
Рис. 8.63. Флаг, полученный при помощи модификатора Cloth (Ткань)
Мы рассмотрели только малую часть того, что можно сделать при помощи модификатора Cloth (Ткань). Симуляция реального поведения ткани требует более детальных настроек с большим количеством экспериментов. В качестве самостоятельного задания вы можете попробовать выполнить расчеты с другими видами ткани и даже составить и сохранить свои собственные настройки для их последующего применения.
Анимация движения танковой гусеницыПРИМЕЧАНИЕ
В папке ExamplesГлава 08Cloth прилагаемого DVD находится файл flag.max, который можно загрузить для просмотра и анализа выполненной анимации.
Если вы занимаетесь моделированием и анимацией в программе 3ds Max, вы, скорее всего, уже хотя бы раз создавали колесную и гусеничную технику. Выполняя модели такого уровня сложности, всегда хочется добавить в них какую-нибудь «изюминку». Таким дополнением может послужить анимация движения. В данном разделе рассмотрим один из способов создания и анимации танковой гусеницы.
Для выполнения данного упражнения необходимо загрузить начальную сцену trackstart.max с объектами, которые нам понадобятся в работе (рис. 8.64). Она находится на прилагаемом к книге DVD в папке ExamplesГлава 08Track.
Рис. 8.64. Окно проекции Perspective (Перспектива) после загрузки стартовой сцены
Сначала необходимо построить последовательность гусеничных звеньев. Это можно сделать двумя способами:
■ создать длинную цепочку из повторяющихся элементов, а затем деформировать ее по сплайну;
■ используя сплайн, анимировать одно звено, а затем создать копии этого звена со смещением: один кадр анимации – одно звено.
Воспользуемся вторым способом для создания статической геометрии, а затем создадим и анимируем звенья танковой гусеницы с помощью сценария. Сначала необходимо вычислить количество копий звена, которые нам понадобятся, а затем анимировать звено гусеницы по сплайну пути. Для этого выполните следующее.
1. В окне проекции Top (Сверху) увеличьте масштаб звена гусеницы так, чтобы оно заняло максимально возможную площадь (так будет проще выполнять измерения, и они будут точнее).
2. Измерьте поперечную ширину звена, исключая размер выступающих шипов (реальный размер, который будут иметь звенья, составленные в цепочку). Для этого воспользуйтесь командой главного меню Tools ► Measure Distance (Инструменты ► Измерить расстояние). После выполнения команды щелкните на начальной и конечной точках замеряемого участка и на строке состояния.
В результате в поле ввода макрокоманды появится необходимая цифра. В моем случае это 3,805 (рис. 8.65).
Рис. 8.65. Строка состояния с результатами замера
3. Узнайте длину сплайна, который является формой пути для гусеницы. Для этого достаточно выделить сам сплайн и воспользоваться утилитой Measure (Линейка), находящейся на вкладке Utilities (Утилиты) командной панели. В области Shapes (Формы) будет указана длина сплайна (рис. 8.66).
4. Разделите длину сплайна на ширину звена, и вы получите необходимое количество копий, а также кадров анимации. Я округлил значение, и в результате у меня получилось 90.
5. Измените количество кадров анимации до 90. Для этого нажмите кнопку Time Configuration (Настройка временных интервалов)
в правом нижнем углу окна 3ds Max. В открывшемся окне задайте параметру End Time (Время окончания) области Animation (Анимация) значение 90 (рис. 8.67).
Рис. 8.66. Настройки утилиты Measure (Линейка)
Рис. 8.67. Окно Time Configuration (Настройка временных интервалов) с измененным количеством кадров анимации
Для создания анимации сделайте следующее.
1. В одном из окон проекций выделите звено.
2. Выполните команду Animation ► Constraints ► Path Constraint (Анимация ► Ограничения ► Ограничение по пути) и укажите на сплайн trackpath. В результате он будет использован в качестве формы пути.
3. В свитке Path Parameters (Параметры пути) настроек контроллера на командной панели установите флажок Follow (Следовать), чтобы объект поворачивался вместе с поворотом кривой. Установите также флажок Allow Upside Down (Разрешить переворачиваться) (по умолчанию контроллер придерживается одной локальной оси, а у нас замкнутая кривая), выберите ось Y и установите флажок Flip (Обратить) (рис. 8.68).
4. Выделите звено и создайте его копию. Для этого воспользуйтесь командой главного меню Tools ► Snapshot (Инструменты ► Снимок). В открывшемся одноименном окне установите переключатель в положение Range (Диапазон) и задайте следующие значения параметрам: From (От) – 0, To (До) – 89 и Copies (Копии) – 90. В качестве метода клонирования выберите Instance (Образец) (рис. 8.69).
Рис. 8.68. Свиток Path Parameters (Параметры пути) настроек контроллера
Рис. 8.69. Настройки создаваемых копий в окне Snapshot (Снимок)
ПРИМЕЧАНИЕ
Значение параметра To (До) равно 89, потому что, выполнив полный круг по замкнутой форме, объект вернется в начальное положение.
Результат клонирования одного звена представлен на рис. 8.70. Таким же образом строятся и другие статические последовательности объектов, например элементы ограждения, столбы, кнопки и даже ресницы.
Рис. 8.70. Копии звеньев, созданные с помощью инструмента Snapshot (Снимок)
Итак, приступим к анимации. Выполнить вручную анимацию такого количества объектов достаточно сложно, даже если речь идет о простом повторении нескольких операций. Все было бы просто, если бы нам пришлось настроить анимацию двух или даже десяти звеньев, но у нас их девяносто. Придется обратиться к макросценарию, который позволит автоматизировать этот процесс. Звучит пугающе, но попробуем все сложности свести к минимуму.
Сохраните и закройте выполненную сцену. Затем загрузите с прилагаемого DVD начальный файл данного упражнения trackstart.max из папки ExamplesГлава 08Track.
Программа 3ds Max обладает возможностью отслеживать и записывать почти все команды и действия, выполняемые в процессе работы. Делается это при помощи модуля MAXScript Listener (Интерпретатор MAXScript). Его окно можно открыть, выполнив команду главного меню MAXScript ► MAXScript Listener (MAXScript ► Интерпретатор MAXScript) или нажав клавишу F11. Мы используем его в качестве основного источника списка будущих макрокоманд. Но сначала рассмотрим кратко, что нам надо будет сделать для создания анимированной гусеницы.
В первую очередь нам понадобится анимировать имеющееся звено при помощи контроллера Path Constraint (Ограничение по пути). Затем, используя единственный анимированный параметр этого контроллера (процент пути, пройденный звеном гусеницы в пределах анимированного участка), привяжем к нему созданные копии этого объекта, выполнив их относительное смещение. Таким образом, мы получим один родительский объект, который позволит управлять скоростью движения всей гусеницы путем изменения времени прохождения этим объектом полного цикла. Иными словами, изменяя время, за которое одно звено гусеницы пройдет полный круг.
Начнем с настройки записи макрокоманд. Откройте окно MAXScript Listener (Интерпретатор MAXScript), для чего используйте либо одноименную команду главного меню MAXScript, либо клавишу F11. В появившемся окне выполните команду меню MacroRecoder ► Enable (Запись макроса ► Включить) для включения записи всех производимых команд (рис. 8.71).
Рис. 8.71. Настройки меню MacroRecoder (Запись макроса)
В результате окно интерпретатора разделится на две части: в верхней будут выводиться макрокоманды, соответствующие выполняемым действиям, а в нижней – отладочная информация. Одновременно нижнее окно является и полем для ввода макрокоманд. Посмотрим, как это все работает. Выделите в окне проекции Top (Сверху) сцены звено гусеницы и копируйте его через буфер обмена (или любым доступным способом) с помощью сочетаний клавиш копирования Ctrl+Ñ и вставки Ctrl+V. В результате в верхней части окна появится запись, состоящая из четырех строк. Для исполнения этого кода откройте окно редактора макрокоманд, выполнив команду главного меню MAXScript ► New Script (MAXScript ► Создать макрос). В окне отладчика выделите строки, созданные программой автоматически, и перетащите их в окно редактора. Закомментируйте вторую строку, поставив перед ней два минуса, так как она вызывает окно диалога клонирования объекта и нам не нужна (рис. 8.72). Выполните макрос, воспользовавшись командой меню данного окна Tools ► Evaluate All (Инструменты ► Оценить все) и предварительно удалив построенную ранее копию звена. Проверьте список объектов, вызвав его кнопкой Select by Name (Выделить по имени)
и убедитесь в том, что макрос создал копию объекта track.
Рис. 8.72. Окно редактора макрокоманд
Итак, вы написали свой первый макрос (если, конечно, не делали этого ранее) и проверили его исполнение. Дополним его необходимыми командами и напишем полный цикл создания и редактирования новых звеньев.
В первую очередь нужно анимировать движение звена по пути и получить эту часть макрокоманды для записи в код. Для этого выполните следующее.
1. В одном из окон проекций выделите звено (объект track).
2. Перейдите на вкладку Motion (Движение) командной панели и в свитке Assign Controller (Назначить контроллер) выберите строку Position: Position XYZ (Положение: положение по XYZ) (рис. 8.73).
3. В этом же свитке щелкните на кнопке Assign Controller (Назначить контроллер)
и в появившемся окне Assign Position Controller (Назначить контроллер положения) выберите строку Path Constraint (Ограничение по пути) (рис. 8.74).
4. В свитке Path Parameters (Параметры пути) щелкните на кнопке Add Path (Добавить путь) и в одном из окон проекций укажите на сплайн пути track_path.
5. В этом же свитке в области Path Options (Параметры пути) установите флажки Follow (Следовать) и Allow Upside Down (Разрешить переворачиваться). В области Axis (Оси) выберите ось Y и установите флажок Flip (Обратить). Как вы видите, настройки такие же, как и для построения статических копий звена (см. рис. 8.68).
После выполнения описанных операций откройте окно MAXScript Listener (Интерпретатор MAXScript). Выделите и переместите в окно редактора макрокоманд пять последних строк, относящихся к выбору и настройке контроллера Path Constraint (Ограничение по пути) (рис. 8.75).
Если бы мы сейчас запустили на выполнение этот код, то у нас было бы создано еще одно звено, а копии звена с именем track01 был бы присвоен контроллер Path Constraint (Ограничение по пути). Но обратите внимание на то, что, когда мы выбирали сплайн пути, интерпретатор не внес соответствующую строку в список выполненных операций. В связи с этим в конец кода необходимо дописать в окно редактора следующую строку: $.pos.controller.path=$track path.
Рис. 8.73. Свиток Assign Controller (Назначить контроллер) настроек объекта track
Рис. 8.74. Окно Assign Position Controller (Назначить контроллер положения)
Рис. 8.75. Окно редактора макрокоманд после добавления кода
У контроллера Path Constraint (Ограничение по пути) существует один анимируемый параметр – Percent (Проценты), который определяет проценты пройденного объектом пути. Этому параметру автоматически было задано значение нулевого и последнего кадра анимации. Но нам не нужна анимация, устанавливаемая по умолчанию, мы собираемся привязывать все копируемые объекты к одному звену – track. В связи с этим нам необходимо удалить сгенерированные автоматически ключи анимации. Это можно сделать, добавив в код еще одну строку – deleteKeys $.pos.controller.percent.keys.
ПРИМЕЧАНИЕ
Знак $ указывает на то, что следом за ним должно идти имя объекта, но так как его нет, то подразумевается выделенный объект сцены.
Если сейчас запустить код на исполнение, то мы получим копию объекта track, к которому будет применен контроллер движения вдоль пути track_path, и все ключи анимации будут удалены из контроллера. Далее нужно построить зависимость, при которой созданная копия объекта будет следовать за основным объектом. Для этого необходимо выполнить следующее.
1. Выделите в одном из окон проекций или выберите из списка скопированный объект track01.
2. Перейдите к свитку Assign Controller (Назначить контроллер), щелкните на плюсике, расположенном рядом со строкой Position: Path Constraint (Положение: ограничение по пути), и выберите в открывшемся списке строку Percent: Linear Float (Проценты: линейное значение с плавающей точкой) (рис. 8.76).
3. Щелкните на кнопке Assign Controller (Назначить контроллер)
и в появившемся окне Assign Float Controller (Назначить контроллер с плавающей точкой) выберите строку Float Script (Сценарий, использующий значения с плавающей точкой).
4. Щелкните на кнопке OK – откроется окно для ввода сценария. Закройте это окно.
5. Обратитесь к окну MAXScript Listener (Интерпретатор MAXScript), выделите и переместите в окно редактора макрокоманд последнюю строку кода.
То, что мы сейчас сделали, позволило нам записать в окно редактора макрокоманд строку кода, меняющую контроллер, созданный по умолчанию, на свой, который можно редактировать с использованием сценария. На рис. 8.77 представлен вид редактора со всеми полученными до настоящего момента командами.
Теперь нужно добавить в окно редактора несколько строк, написанных самостоятельно, без помощи окна MAXScript Listener (Интерпретатор MAXScript).
1. Добавьте первой строкой for i = 1 to 90 do(. Таким образом мы создаем цикл, выполняющий выражение, которое находится внутри круглых скобок, начиная от 1 до 90. Число 90 – это количество копий звена танковой гусеницы (если помните, мы рассчитали их ранее).
2. Удалите закомментированную вторую строку.
3. В конце кода допишите: $.pos.controller.percent.controller.script ="at time (currenttime) $track.pos.controller.percent*0.01+ 0.011*"+i as string.
В первой части этого выражения мы обращаемся к контроллеру управления по коду, созданному в предыдущей строке, и присваиваем ему строковое выражение, находящееся в правой части. Это означает следующее. В текущий момент времени (at time (currenttime) ) контроллеру выделенного объекта, управляющему процентами ($.pos.controller.percent.controller.script), присваиваем значение процентов контроллера объекта track ($track.pos. controller.percent), деленное на 100 (так как на самом деле значение процентов считается не от 0 до 100, а от 0 до 1, то есть используем выражение *0.01), и задаем смещение на одно звено (общие проценты пути, деленные на количество звеньев: 1/90=0.011). Затем это выражение умножаем на порядковый номер (он же номер кадра), который в первой строке присваивается переменной i. Но так как код записывается в виде строковой переменной, числовое значение необходимо вынести за кавычки и обозначить как строковую переменную (i as string), оставив в кавычках знак умножения. Умножение на число i позволит каждому новому звену смещаться на соответствующую величину.
Рис. 8.76. Свиток Assign Controller (Назначить контроллер) настроек объекта track01
Рис. 8.77. Окно редактора макрокоманд на данном этапе
4. И наконец, две последние строки кода будут указывать на то, что вся анимация до первого ключевого кадра и после последнего будет повторяться, то есть станет непрерывной, вне зависимости от положения ключевых кадров на шкале анимации. Добавьте эти строки:
Правообладателям!
Это произведение, предположительно, находится в статусе 'public domain'. Если это не так и размещение материала нарушает чьи-либо права, то сообщите нам об этом.