Набрасываем скатерть на стол
В главе 10 мы уже создавали скатерть, используя технику NURBS-моделирова-ния. Главный недостаток скатерти, созданной таким методом — ее очень трудно анимировать. При взаимодействии ткани с каким-либо объектом ее поверхность деформируется по всей площади. Использовать привычные способы создания анимации в данном случае очень сложно. Нам пришлось бы устанавливать ключи анимации для огромного количества точек объекта, что заняло бы много времени и сил. С помощью модуля reactor (Реактор) эта задача решается очень просто. Программа автоматически высчитывает воздействие, производимое на ткань внешними силами, и соответственно задает деформацию объекта. Более того, за поведением ткани можно наблюдать в режиме реального времени с помощью специальной функции предварительного просмотра. Анимация ткани, просчитанная с помощью модуля reactor (Реактор), выглядит очень реалистично, а сам процесс просчета занимает немного времени, особенно при правильно выбранных настройках.
Итак, для создания скатерти, падающей на стол, выполните следующие действия: 1. Откройте сцену с любым из созданных нами в рамках нашего проекта столов. Вы можете использовать сцену Stol.max, находящуюся в папке Scenes\Glava_05, я работал именно с ней. Сохраните ее под именем Stoljeactor.max. Перейдите в окно проекции Тор (Вид сверху). Создайте примитив Plane (Плоскость), расположив его таким образом, чтобы созданная вами плоскость была по площади немного больше стола. Подобрав необходимые настройки модуля reactor (Реактор), мы добьемся того, что эта плоскость будет обладать свойствами ткани. Переключитесь в окно проекции Perspective (Перспектива) и передвиньте объект Plane (Плоскость) вдоль оси Z вверх, чтобы она располагалась над столом, как показано на рис. 17.13. Если бы в реальной жизни мы могли каким-то образом зафиксировать ткань в таком положении и отпустить, то, поскольку на нее воздействует только сила гравитации, она начала бы падать вниз. После столкновения с поверхностью стола ткань начнет деформироваться, обхватывая краями объект столкновения. Поскольку наша плоскость должна изменять форму аналогичным образом, необходимо позаботиться о том, чтобы модель ткани, содержала достаточное количество сегментов по длине и ширине. Если объект, имитирующий ткань будет содержать малое количество полигонов, участки на изгибах выдадут трехмерную подделку, а просчитанная анимация будет выглядеть нереалистично. Увеличьте сегментацию плоскости, установив 24 сегмента по каждой из координат.
Рис. 17.13. Исходный вид трехмерной сцены с тканью, подготовленной для анимации модулем reactor
2. Создайте коллекцию жестких тел и включите в нее все объекты, составляющие стол — Stoleshnica, Nozhka stola01, Nozhka stola02, Nozhka stola03 и Nozhka stola04. Затем создайте коллекцию тканей. Для этого можно щелкнуть на кнопке Create Cloth Collection (Создать коллекцию тканей) панели инструментов reactor (Реактор), а затем щелкнуть в нужной точке окна проекции.
3. Выделите плоскость и примените к ней модификатор reactor Cloth (Реактор: Ткань), щелкнув, к примеру, на кнопке Apply Cloth Modifier (Применить модификатор Ткань) панели инструментов reactor (Реактор). На панели Modify (Изменить) появятся свитки параметров модификатора Properties (Свойства) (рис. 17.14) и Constraints (Ограничители). Оставьте в исходном состоянии настройки всех параметров модификатора reactor Cloth (Реактор: Ткань). Убедитесь в том, чтобы был установлен флажок Avoid Self-Intersections (Избегать самопересечений).
Рис. 17.14. Свиток Properties модификатора reactor Cloth
4. Добавьте плоскость в коллекцию тканей. Для этого щелкните на значке коллекции CLCollection (Коллекция тканей), после чего щелкните на кнопке Pick (Указать) под списком Cloth Entities (Образцы тканей) в свитке Properties (Свойства) на панели Modify (Изменить) и в заключение щелкните на плоскости в любом из окон проекций. Имя объекта Plane01 (Плоскость01) появится в списке.
5. Переключитесь на панель Utilities (Утилиты). Просмотрите анимацию в окне предварительного просмотра. Вы увидите, как плоскость подобно скатерти накроет стол, и ее края еще будут продолжать движение, создавая иллюзию настоящей ткани (рис. 17.15).
Рис. 17.15. Вид сцены с тканью в окне предварительного просмотра соответственно: перед началом анимации, на промежуточной стадии и перед завершением действия
6. Создайте ключи анимации ткани, щелкнув на кнопке Create Animation (Создать анимацию) в свитке Preview & Animation (Просмотр и анимация) утилиты reactor (Реактор), и просмотрите анимацию в окнах проекций. После того как программа завершит просчет сцены, анимированным объектам будут присвоены ключи анимации для каждого кадра анимации. Иногда такое обилие ключей анимации затрудняет работу над сценой. Кроме этого, некоторые ключи анимации и вовсе лишние. Так, например, если в сцене трехмерный объект совершает прямолинейное движение с постоянной скоростью, для описания его движения достаточно двух ключей анимации — в начале движения и в конце. Если требуется уменьшить количество ключей анимации, просчитанных в reactor (Реактор), вы можете произвести отбор главных ключей, удалив ненужные с помощью инструмента Reduce Keys (Уменьшить число ключей).
ВНИМАНИЕ Прежде чем начинать просчет трехмерной анимации в модуле reactor (Реактор), следует проверить правильность выбранных настроек, а еще лучше сохранить копию сцены и с инкрементированием имени. После завершения вычислений возврат на этап, предшествующий просчету динамики, будет невозможен. Если полученная анимация вас не удовлетворила, вы можете сравнить свою сцену с моей. Она находится в папке Scenes\Glava_17 под названием Stol_reactor.max. Это — сцена с настроенными параметрами, но не доведенная до конечного просчета модулем reactor (Реактор). Там же вы найдете файл Stol_reactor01.max с уже просчитанной анимацией reactor (Реактор). |