3D Studio MAX: первые шаги. Урок 19. Динамика в сцене
Имитация динамики твердых и мягких тел
Разбиваем бильярдную пирамиду
Немного усложним задачу — попробуем получить анимацию разбивания бильярдной пирамиды. Смоделируйте сцену с шаром и профилем бильярдного стола с бортиками — в целях экономии времени мы ограничимся лишь имитацией стола, в качестве которой послужит объект AwningWindow из группы геометрических объектов Windows, а лузы создавать не будем (рис. 18). Теперь нужно сделать пирамиду из шаров — можно вручную, но мы прибегнем к команде Array, применить которую придется несколько раз. При первом применении настройте параметры команды в соответствии с рис. 19 — будет сформирован первый ряд шаров (рис. 20). Выделите второй с краю шар (рис. 21), продублируйте его и сместите копию относительно оси Y (рис. 22), а затем примените к нему команду Array, уменьшив число шаров в ряду до четырех (рис. 23). Дальше действуйте по тому же принципу, и в конечном счете вы получите пирамиду из шаров, которую нужно будет откорректировать и развернуть так, чтобы она представляла собой равносторонний треугольник, одна из вершин которого находилась бы на равном расстоянии от бортов (рис. 24). Создайте копию одного из шаров пирамиды и расположите его в противоположной от пирамиды стороне стола — это будет ударный шар-биток (рис. 25).
Рис. 18. Исходный вид сцены
Рис. 19. Настройка параметров команды Array для первого применения
Рис. 20. Появление первого ряда шаров
Рис. 21. Выделение шара
Рис. 22. Перемещение дубликата шара
Рис. 23. Настройка параметров команды Array для второго применения
Рис. 24. Окончательный вид пирамиды
Рис. 25. Вид сцены с пирамидой и ударным шаром
Создайте коллекцию твердых тел, щелкнув на кнопке CreateRigidBodyCollection (Создать коллекцию твердых тел) панели инструментов Reactor, а затем внесите в коллекцию все объекты сцены, щелкнув на кнопке Add и выбрав все объекты из списка (рис. 26). Проверьте, чтобы ползунок таймера анимации стоял на 1-м кадре, щелкните на кнопке ToggleAutoKeyMode (Переключить в режим автоматического создания ключей). Перетащите ползунок слайдера времени вправо на 5-й кадр и переместите биток к вершине пирамиды (рис. 27). Отключите режим автоматического создания ключей, проиграйте анимацию, и вы увидите, что ударный шар действительно движется в нужном направлении. Щелкните на кнопке Utilities (Сервис) командной панели и далее на кнопке Reactor (Реактор), раскройте свиток Preview&Animation и в поле StartFrame (Начальный кадр) введите число 6 — это необходимо, чтобы первые пять кадров (то есть когда ударный шар движется по определенному нами закону) не учитывались при просчете динамики (рис. 28). Обратите внимание, что теоретически добиться сходного результата мы могли бы и иначе: не изменяя значение в поле StartFrame, а включив в свитке Properties для ударного шара флажок Unyielding (это укажет программе, что данный объект должен анимироваться вручную, а не автоматически модулем Reactor).
Рис. 26. Включение объектов сцены в коллекцию RBCollection
Рис. 27. Положение шара в первом (слева) и последнем кадрах
Рис. 28. Настройка параметров свитка Preview &Animation
Выделите плоскость, раскройте свиток Properties и установите переключатель в группе SimulatuionGeometry в положение UseMesh. В окне SelectObjects выделите все шары и определите для них значения параметров Mass, Elasticity и Friction равными 2; 0,3 и 0,3 соответственно (рис. 29). Щелкните на кнопке CreateAnimation (Создание анимации) — и анимация будет создана. Проиграйте ее и вы увидите, как биток разбивает пирамиду, шары из которой раскатываются в разные стороны (рис. 30).
Рис. 29. Настройка физических параметров шаров
Рис. 30. Вид сцены в некоторых кадрах анимации
Имитация ткани
Ткани имитируются в Reactor посредством Cloth-тел, обладающих свойствами эластичности, веса и растяжения, и могут быть созданы на базе самых разных типов объектов: примитивов, Mesh-объектов и т.д. Для того чтобы объекты сцены стали восприниматься как ткани, необходимо вначале назначить им модификатор reactorCloth, а затем создать коллекцию Cloth-тел — ClothCollection (сокращенно CLCollection), в которую и включить данные объекты.
Для примера создайте простую сцену из шара и лежащей на нем обычной плоскости с большим числом сегментов по обеим осям (рис. 31) — попробуем добиться того, чтобы плоскость превратилась в ткань, реалистично облегающую шар. Создайте две коллекции: коллекцию твердых тел (RBCollection) и коллекцию тканей (ClCollection) — рис. 32. Добавьте шар в RBCollection, выделив иконку коллекции, щелкнув на кнопке Add панели Modify и указав в открывшемся списке объектов шар. Выделите плоскость и назначьте ей модификатор reactorCloth (рис. 33). Активируйте иконку ClCollection и через панель Modify включите плоскость в коллекцию тканей — обратите внимание, что без назначения объекту Plane01 указанного модификатора его имя при щелчке на кнопке Add не появилось бы в списке возможных для включения в коллекцию объектов.
Рис. 31. Исходный вид сцены
Рис. 32. Появление иконок коллекций
Рис. 33. Назначение плоскости модификатора reactorCloth
Согласно поставленной задаче анимация нам не нужна — требуется лишь добиться превращения плоскости в ткань. Поэтому можно ограничиться предварительным просмотром начальных кадров анимации и выбрать из них тот, в котором ткань будет свисать с шара наиболее привлекательно. Только перед этим назначьте плоскости произвольный двусторонний материал, иначе обратная сторона плоскости (а в дальнейшем и ткани) не будет видна. После этого последовательно щелкните на кнопках Utilities и Reactor, раскройте свиток Preview&Animation, затем нажмите на кнопку PreviewinWindow (Предварительный просмотр в окне) — откроется окно модуля Reactor, в котором в начальный момент будет отображаться плоскость в своем исходном виде и шар. Нажмите клавишу p, и начнется последовательное формирование кадров анимации, в которой плоскость будет постепенно опадать на шар, превращаясь в кусок ткани (рис. 34). На понравившемся кадре остановите процесс дальнейшей генерации кадров нажатием клавиши p, из внутреннего меню окна Reactor выберите команду MAX=>UpdateMAX и закройте окно данного модуля. В итоге в окнах проекций плоскость окажется в уже преобразованном виде (рис. 35).
Рис. 34. Предварительный просмотр кадров анимации в окне Reactor
Рис. 35. Ткань на шаре