3D Studio MAX: первые шаги. Урок 19. Динамика в сцене
Имитация динамики твердых и мягких тел
Натягиваем сетку
Применим модуль Reactor для моделирования сетки, крепящейся четырьмя веревками к двум вертикальным опорам. Смоделируйте сцену с двумя плоскостями (первая будет играть роль земли, а вторую мы позже превратим в сетку), четырьмя цилиндрами (два цилиндра большего диаметра сыграют роль опор, а два других цилиндра будут использованы в качестве ограничителей сетки) и четырьмя линейными сплайнами (их превратим в веревки) — рис. 62.
Рис. 62. Исходный вид сцены
Выделите все объекты, кроме сплайнов, и щелкните на кнопке CreateRigidBodyCollection, тем самым поместив выделенные объекты в коллекцию твердых тел. Создайте коллекции тканей и веревок (рис. 63). Выделите вторую плоскость, назначьте ей модификатор reactorCloth, в настройках модификатора установите флажок AvoidSelf-Intersections, а затем включите данную плоскость в коллекцию тканей. В окне SelectObjects выделите все четыре сплайна и нормализуйте их, применив команду Modifiers=>Patch/SplineEditing=>NormalizeSpline (Модификаторы=>Редактирование кусков/сплайнов=>Нормализовать сплайн) и указав для параметра SegLength (Длина сегментов) значение 3. Поочереди назначьте каждому из сплайнов модификатор reactorRope примерно с такими параметрами, как на рис. 64, а затем включите все сплайны в коллекцию веревок.
Рис. 63. Появление иконок коллекций
Рис. 64. Параметры настройки модификатора reactorRope
Теперь требуется закрепить ткань на созданных ранее ограничителях, а веревки привязать с одной стороны к вертикальным опорам, а с другой — к ограничителям. Выделите плоскость ткани, переключитесь на уровень редактирования вершин модификатора reactorCloth, выделите левый ряд вершин и щелкните на кнопке AttachToRigidBody (Присоединить к твердым телам). После чего щелкните на появившейся в списке строке AttachToRigidBody и укажите в качестве ограничивающего объекта левый цилиндр-ограничитель. Аналогичную операцию проведите в отношении правого ряда вершин, указав для него правый цилиндр-ограничитель (рис. 65). Выйдите из режима редактирования вершин.
Рис. 65. Привязка вершин плоскости-ткани к ограничителям
Выделите первый сплайн, переключитесь в режим редактирования вершин модификатора reactorRope и свяжите граничные вершины сплайна с левым цилиндром-опорой и левым цилиндром-ограничителем, указав их как твердые тела (кнопка AttachToRigidBody), — рис. 66. Аналогичную операцию проведите в отношении трех других сплайнов. После этого вновь вернитесь к первому сплайну и, учитывая, что веревки сетки должны не свисать свободно, а все же быть натянуты, зафиксируйте центральную вершину сплайна, выделив ее и щелкнув на кнопке FixVertices (Зафиксировать вершины). То же самое выполните для других сплайнов. Выйдите из режима редактирования вершин.
Рис. 66. Привязка граничных вершин первого сплайна
Щелкните на кнопке Utilities и раскройте список свитков модуля Reactor. Выделите плоскость-землю и объявите ее вогнутым объектом, раскрыв свиток Properties и установив переключатель в группе SimulatuionGeometry в положение UseMesh. Откройте свиток Preview&Animation и включите режим предварительного просмотра кадров анимации (кнопка PreviewinWindow). Нажмите клавишу p для начала просчета динамики и остановитесь на наиболее привлекательном кадре, а затем воспользуйтесь командой MAX=>UpdateMAX и закройте окно Reactor. Возможный результат представлен на рис. 67.
Рис. 67. Сетка на опорах
Имитация воды
Reactor также может применяться для динамики жидкостей и позволяет воспроизводить такие эффекты, как волны, рябь и круги на поверхности. Правда, реализована данная возможность несколько иначе, без помощи коллекций и модификаторов, и больше напоминает работу с пространственными деформациями. А это значит, что для получения соответствующего эффекта требуется создать значок деформации, настроить его параметры и связать с объектом, применив инструмент BindtoSpaceWarp.
Следует заметить, что на первый взгляд созданная в Reactor водная поверхность ничем особенно не отличается — подобную поверхность можно получить и другими способами, о которых уже шла речь. Однако отличие есть и весьма существенное — жесткие тела, погруженные в Reactor-воду, подвергаются воздействию вполне реалистичной выталкивающей силы, благодаря чему они могут тонуть, плавать на поверхности или находиться во взвешенном состоянии в толще воды, что реализуется автоматически в ходе просчета динамики.
Для примера создайте сцену с примитивами Plane (с большим числом разбиений по обеим осям) и TorusKnot (рис. 68). Щелкните на кнопке CreateWater панели Reactor и сформируйте деформацию, размеры которой совпадают с размерами плоскости. Выделите Water-деформацию и свяжите ее с плоскостью, воспользовавшись инструментом BindtoSpaceWarp, а затем выровняйте деформацию по плоскости по всем трем осям (рис. 69). Выделите плоскость и торус и щелкните на кнопке CreateRigidBodyCollection, тем самым поместив выделенные объекты в коллекцию твердых тел. Щелкните на кнопке Utilities и раскройте список свитков модуля Reactor. Выделите плоскость и объявите ее вогнутым объектом (флажок UseMesh).
Рис. 68. Исходный вид сцены
Рис. 69. Появление Water-деформации
Откройте свиток Preview&Animation, включите режим предварительного просмотра кадров анимации (кнопка PreviewinWindow) и нажмите клавишу p для начала просчета динамики. Поскольку по умолчанию торус имеет нулевую массу (параметр Mass), то он будет статичным и никаких водных эффектов при анимации наблюдаться не будет (рис. 70). Да и сама поверхность воды будет чрезмерно гладкой. Поэтому вначале выделите Water-деформацию и измените параметры воды примерно так, как показано на рис. 71. Затем выделите торус, раскройте в модуле Reactor свиток Properties и установите для параметра Mass, например, значение 20 — результат не замедлит сказаться: теперь торус будет плавать в воде, погружаясь в нее то одним, то другим боком, а на водной поверхности появятся круги (рис. 72). Хотя при рендеринге вид сцены не впечатлит, так как реальная водная поверхность дополнительно требует соответствующего обрамления и текстурирования.
Рис. 70. Вид сцены в окне PreviewinWindow
Рис. 71. Настройка параметров Water-деформации
Рис. 72. Вид водной поверхности с торусом в некоторых кадрах анимации
Отправим медузу в плавание
Воспользуемся созданной на прошлом уроке сценой с пейзажем и создадим на его основе анимацию перемещения медузы по водной глади. Смоделируйте медузу из обычной геосферы с такими параметрами, как на рис. 73. Для этого конвертируйте ее в редактируемый полигон, переключитесь в режим работы с вершинами и удалите указанную на рис. 74 вершину. Перейдите к работе с полигонами, выделите все нижние полигоны, выбирая их через два (принцип выделения показан на рис. 75), и переместите выделенные полигоны вниз, а затем примените к выбранным попарно нижним вершинам операцию Collapse, сформировав тем самым что-то наподобие щупалец медузы. Вернитесь к режиму работы на уровне объектов и назначьте геосфере модификатор MeshSmooth для сглаживания с параметрами по умолчанию, а затем уменьшите масштаб деформированной геосферы относительно оси Z — объект по форме станет напоминать медузу (рис. 76).
Рис. 73. Геосфера
Рис. 74. Выделение удаляемой вершины
Рис. 75. Выделение полигонов
Рис. 76. Медуза
Внедрите в данную сцену всю сцену с пейзажем, воспользовавшись командой File=>XRef Scene (Файл=>Экспорт). Создайте плоскость с большим числом разбиений по обеим осям, а затем щелкните на кнопке CreateWater панели Reactor и сформируйте деформацию, размеры которой совпадают с размерами плоскости. Выделите Water-деформацию, свяжите ее с плоскостью (инструмент BindtoSpaceWarp) и выровняйте деформацию по плоскости по всем трем осям. Выделите плоскость и Water-деформацию и расположите их так, чтобы они оказались выше плоскости воды во внедренной пейзажной сцене, настройте параметры деформации в соответствии с рис. 77. Выделите плоскость и геосферу и щелкните на кнопке CreateRigidBodyCollection, что приведет к их включению в коллекцию твердых тел. Щелкните на кнопке Utilities и раскройте список свитков модуля Reactor. Выделите плоскость и объявите ее вогнутым объектом (флажок UseMesh). Выделите геосферу, раскройте в модуле Reactor свиток Properties и установите для параметра Mass значение 3. Щелкните на кнопке CreateAnimation (Создание анимации) и анимация будет создана. Проиграйте ее, и вы увидите, что медуза начнет свое плавание, а на водной поверхности появятся волны и круги (рис. 78).
Рис. 77. Настройка параметров Water-деформации
Рис. 78. Вид сцены в некоторых кадрах анимации