Динамика в modo. Введение.

Главные вкладки

14

Основные правила работы с Динамикой в modo. Какие элементы используются и как взаимодейсвуют друг с другом. Как сделать флаг на флагштоке. 

Что такое Динамика?

 В modo динамика, по существу, это расчет столкновений между объектами, которые называются Симуляциями. Симуляции оценивают все настройки динамики, после чего производят автоматические вычесления для конечного результата. Симуляции могут обеспечивать весьма реалистичные движения объекта, и для многих ситуаций это будет происходить в реальном времени. Пользователям необходимо только назначить атрибуты, которые определяют, как элементы будут реагировать в процессе симуляции, а затем нажать кнопку Simulate. Пользователи могут увидеть результаты настроек движения непосредственно в 3D окне. Затем можно изменить настройки, добавить объекты, силы воздейсвия и увидеть внесенные изменения фактически в реальном времени. Однако, такие изменения требуют больше времени для расчетов взаимодейсвия между объектами, чем просто назначить элементу динамику, так как нужно произвести расчет силы воздействия на объекты. К примеру, вы можете выпустить из рук мяч и он начнет падать на землю, после чего ударится и отскочит от поверхности. Тот же мяч, выпустив из рук на Международной Космической Станции, останеться в том же положении в котором вы его отпустили. Так же, как в реальном мире, Гравитация будет автоматически применяется и расчитываться, что бы направить объекты к земле. При этом можно применять дополнительные Силы, или наоборот, удалять. Но для многих случаев, Гравитация - это все что нужно. 

Как предметы будут двигаться и реагировать на любые столкновения во время Симуляции, будут определять настройки во вкладке Dynamic в Item List.  В зависимости от того, что вы выбераете и применяете к элементу, будут происходить изменения с геометрией. Вы можете назначить слою Item Мягкое Тело/Soft Body, что будет позволять сгибать, складывать геометрию, как материю. При выборе Твердого Тела/Rigid Body, геометрия будет вести себя как кирпич, не деформироватся при падении или столкновении. Настройки для Динамики являются очень гибкими и позволяют имитировать различные материалы. Есть даже предварительные настройки Preset, которые автоматически регулируют Плотность/Density, Отскоки/Bounce и коэффициент Трения/Friction. Для более сложных моделей могут быть применены Ограничения/Constraints  и Силы/Forces, для взаимодействия динамики относительно других объектов Симуляции. Любые результаты Симуляции после корректировки и совершенствования, могут быть кэшированы и сохраненные для дальнейшего использования в сцене, или быть запеченными для сетевой визуализации, или просто заморожены для статичного кадра. 

Работа с Динамикой. Dynamics

Система динамики в modo исползует тот же движек расчетов что и для расчета Частиц/Particles, поэтому многие процессы могут применяться как к Частицам так и к Динамике. Частицы могут работать вместе с Динамикой и будут влиять на нее. Так же как и Динамика может влиять на Частицы.

Безусловно, для Динамики требуется геометрия, что бы воздействовать на нее, поэтому любая Симуляция требует в первую очередь модель. Инстурменты работы с Динамикой находятся во вкладке Setup или в основном меню Dynamics. Как и для всех анимационных элементов, необходимо работать в режиме выбора Item. Простейшая симуляция Динамики может быть сделана при помощи Плоскости и Куба.

Выбираем слой геометрии Куб, и применяем команду Active Rigid Body во вкладке Dynamics

В панели Properties, добавилась вкладка Dynamic, это означает, что наш Куб будет расчитываться при Симуляции динамики. Любой элемент в сцене, не имеющий подобной вкладки будет просто игнорироваться при симуляции.

При добавлении динамики для  слоя геометрии, в сцену также добавляется элемент Solver. Solver - реально оценивает все динамические элементы, поэтому он необходим для любой симуляции. Он так же обеспечивает силу тяжести Gravity, что позволяет геометрии двигаться, а также сохраняет значения в кэше для последующей визуализации.

Сравнить настройки с вашей задумкой, вам поможет включение Симуляции. Для этого есть три кнопки на шкале времени Time Line, с различными режимами просчета. 

Первые две кнопки слева будут непрерывно выполнять симуляции в интерактивном режиме, но делают они это по-разному, первая кнопка будет проигрывать симуляцию вперед от текущего состояния и до бесконечности, пока вы не остановите ее. Это не очень хорошо для динамики, но очень подходит когда нужно правильно настроить поведение Частиц. Вторая кнопка, будет циклично просчитывать диапазон кадров указанный в Time Line, очень хорошо подходит для настройки динамики. Главное достоинство этих режимов заключается в том, что вы можете настроить в интерактивном режиме динамические значения и увидеть результаты непосредственно в окне просмора. После всех необходимых корректрировок, по вашему вкусу, третья кнопка будет кэшировать симуляцию, после чего она станет частью сцены и ее можно будет использовать в дальнейшем.

Вернемся к настройкам динамики нашего Куба. Нажмем на первую кнопку симуляции. Мы видим, что Куб начал падать и падает, падает, падает... Это происходит потому, что настройки силы притяжения Gravity продолжают тянуть его вниз, и нет ничего, чтобы могло его остановить. Но как!? Мы разместили Плоскость под Кубом, что бы куб упал на нее. Это произошло потому, что в нашей Симуляции есть только один объект с Динамикой, это Куб. Наша плоскость неподвижна, но она должна взаимодейсвовать с другими объектами в сцене, с Кубом.

Выбираем слой Плоскость в Item List и применим команду Passive Rigid Body/Пассивное Твердое Тело, это придаст слою геометрии статус динамического, но неподвижного, пассивного объекта. Повторим симуляции. Нажмем на первую кнопку. Куб упал на плоскость и после некоторых "подергиваний" успокоился.  Намного лучше! Но это настройки по умолчанию. Если вы нажмете на вторую кнопку Симуляции, вы увидите что Куб будет падать снова и снова. В этом режиме переключитесь в панель Dynamic в свойствай слоя Куб и настраивайте значения Bounce. Попробуйте в интерактивном режиме менять другие настройки и значения, вы будете видеть как меняется поведение вашего Куба. Когда вы остановите процесс Симуляции, 

Если вы остановите процесс Симуляции и будете перемещать кадры в шкале  Time Line, то вы не увидите никакой Симуляции в окне проекции. Для этого вам необходимо использовать кнопку Compute Simulation, третью кнопку. При ее нажатии, в диалоговом окне, вам будет предложено ввести диапазон для начала симуляции и окончания. Введите необходимые вам кардры и нажмите ОК. Это позволит вам сохранить симуляцию и при дальнейшей прокрутке кадров в шкале Time Line наблюдать как будет падать Куб.

Это является базовым рабочим процессом при работе с Динамикой в modo. Настройки геометрии как Активной/Active Rigid Body или Пассивной/Passive Rigid Body с расчетом Симуляции и регулирование значений и параметров до тех пор, пока вы не достигните необходимого вида, после чего вам необходимо произвести кэширование при помощи кнопки Compute Simulation. Одинаковый подход к Динамике будет в любом случае, как вы делали Симуляцию для Куба или для большой кирпичной стены. Конечно, есть и более сложные сценарии Симуляции, которые могут быть созданы, настройки которых будут занимать дополнительные шаги. Основной рабочий процесс останется темже. Дальнейшая информация должна помочь в понимании Динамики и ее использования.

Активный или Пасивный

Слой Mesh, любые объекты, которые не деформируюется при симуляции, как кирпич или камень, должны быть определены как Активный/Active Rigid Body или Пассивный/Passive Rigid Body для Динамики. Разница между Активным и Пассивным объектом, является то, что для Активного объекта каналы Положения/Position и Вращения/Rotation будут контролироваться исключительно динамикой во время симуляции. Кроме начального кадра, исходного положения объекта в 3D пространстве, пользователи не имеют никакого контроля над Активным объектом. Пассивные объекты рассматриваются динамикой только для обнаружения столкновений, любое движение самого объекта контролируется пользователем с использованием ключевых кадров. Пассивные объекты не расчитываются для Гравитации, Сил воздействия или Спадов/Falloffs, позволяя пользователям полный контроль над объектом, в ходе симуляции. Для простоты понимания, вы можете рассмотреть Активные объекты, которые самостоятельно передвигаются во время симуляции и Пассивные объекты, которые служат для столкновений, такие как земля или стена.

Мягкие Тела/Soft Bodies

Так же как и для Твердого объекта, для гибких, деформирующихся элементов должны быть назначены свойства Soft Body для симуляции динамики.  Это позволит симулировать такие поверхности как ткань. Так же как и для Твердых объектов, так и для Мягких требуется какой либо тип столкновения или Якорь/Anchor, для того, что бы не просто улететь в бесконечность. Для знамя необходим флагшток, за который оно будет крепится, а для скатерти необходим стол. Якоря, это крепления для Мягких объектов, такие же как и в реальном мире. С Мягкими объектами дополнительно взаимодействуют Силы, поэтому можно добавить Ветер, Турбулентность для некоторого реализма в результаты симуляции.

Соединения Твердых Тел

Соединения Твердых Тел позволяет пользователям подключать дополнительно множество слоев геометрии Mesh после чего они будут рассматриваться в качестве одного Активного Твердого Тела/Active Rigid Body. Можно установить значения Сила Склеивания/Glue Strength, при превышении которых связь между объектами разорвется. Опция Сила Склеивания/Glue Strength находится в свойствах динамического элемента во вкладке  Dynamic>Forces. Для соединения нескольких слоев геометрии, выберите несколько элементов Mesh и нажмите кнопку Соединения Твердого Тела/Compound Rigid Body, эта опция назначит тэг динамики для всей выбранной геометрии и присоединит ее к элементу динамики Solver. Для всех связанных слоев геометрии, Динамика будет рассчитываться исходя из настроек родительского элемента с значениями Массы, которые будут распределенны в равной степени между всеми связанными слоями. При установке негативных значений Сила Склеивания/Glue Strength, симуляция будет расчитываться для каждого элемента по отдельности, как для отдельного динамического объекта, и не будет иметь связи как одно целое.

Обнаружение Столкновений

Столкновения в Динамике - это расчеты, которые ограничивают пересечение поверхностей. Это позволяет симулировать то, как мяч будет прыгать вниз по лестнице. Без этих расчетов, геометрия просто бы проходила одна сквозь другую. В свойствах геометрии в закладке Dynamic, настраиваются параметры, которые контролируют объект и указывают ему как он должен себя вести при симуляции.

Наиболее важные настройки в этой вкладке относятся к столкновениям и к тому как Динамика расчитывает объект при симуляции.  По умолчанию modo использует при расчете симуляции  фактическую геометрию из Item List, но часто лучше и быстрее могут быть получены результаты при использовании дополнительных опций, доступных во вкладке Collision Shape, которые соответствуют форме геометрии. Например, для расчета столкновений высокополигональной геометрии колеса, можно выбрать цилиндр, что бы получить результаты гораздо быстрее.  Столкновения, относящиеся к Мягким Телам/Soft Bodies требуются только тогда, когда есть проблемы с пересечением поверхности самой с собой, к примеру, тряпки. Это может быть исправлено путем включения опции Self Collision. В modo 701 опции Self Collision нет, расчет производится только для параметров Friction и Margin.

Ограничения/Constraints

Если бы Динамика ограничивалась только расчетами столкновений между объектами, она бы стала быстро очень сложной, чтобы сделать расчет даже небольшой комплексной симуляции. Расчитать столкновения для генерации вращения автомобильного вала, безусловно приведет к ошибкам и будет занимать много времени. Ограничения/Constraints, по существу, суставы, соединяющие динамические объекты вместе, производя гораздо более точные и быстрые резултаты. Ограничения бывают различных типов, которые необходимы пользователю для объединения объектов. Пользователи могут добавлять больше одного ограничения для производства более сложных эффектов. К примеру Point Constraint и Slide Constraint. Возьмем трос, который крепится за два конца и раскачивается из стороны в сторону, по которому будет скользить шар. 

Силы/Forces

В реальном мире объекты подвержены воздействию различных сил, которые влияют с различной степенью на их движение; верет, гравитация, трение. Динамика предлагает широкий выбор Сил/Forces, чтобы производить более точные физические симуляции. Гравитация является главной силой, параметры которой будут влиять на всю сцену целиком, настоить которую можно в элементе Solver. Значение по умолчанию предназначены для притяжения и тянут объекты вниз, как гравитация воздействует в реальном мире. Сила воздействия установлена в масштабе 1:1.  Если при симуляции не происходить ожидаемого результата, можно предположить, что сцена и объекты смоделированны не в натуральную величину, так как для крупных предметов и мелких симуляция будет выглядеть по разному. Пользователь может изменить масштаб объектов или изменить масштаб гравитации, что бы получить максимально ожидаемый результат.

modo предлагает семь дополнительных типов Сил/Forces, для дополнительного контроля над симуляцией. Wind, Drag, Curve, Linear, Radial, Turbulence, Vortex. Они добавляются как локатор в Item List и по умолчанию, влияют на все динамические элементы в сцене, так же, как и гравитация. Каждая из сил, имеет свои собственные настройки. Силы применяются в глобальном масштабе ко всей сцене, но их можно маскировать используя Falloffs (читайте ниже), а также настраивать непосредственно в свойствах геометрии к которым применена динамика во вкладке Dynamic.

Спад/Falloffs

Falloffs может быть невероятно полезным для обеспечения дополнительного контроля над Силами. Представьте себе коробку, наполовину наполненную землей в которой растет цветок, цветок достаточно высокий поэтому его лепистки выходят выше коробки. Вокруг коробки дует ветер и лепистки цветка будут шевелится на ветру анимированные как элемент Soft Body. Внутри коробки ветер не должен воздействовать на цветок, поэтому можно использовать Falloffs для болшего реализма симуляции. Динамика использует такие же Falloffs, которые используются для других деформаторов в modo. Falloffs предназначены для увеличения или уменьшения влияния Сил на динамических объектах в зоне самих себя. Не надо путать Falloffs применяемыми для моделирования, которые применяются для геометрии. Концептуально они очень схожи, но вместо того, чтобы быть использованы в качестве функции для моделирования, динамические Falloffs добавляются как локатор в Item List, который можно выбрать и менять им параметры, а так же быть анимированными в пределах сцены. В свойствах Falloffs можно редактировать диапазон воздействия на Силы.

В отличие от Сил, воздействующих на элементы глобально, Falloffs необходимо сначала добавить к Силе которую необходимо отредактировать, что бы получить результат. Это можно сделать несколькими способами. Когда Falloff применяется для элемента Soft Body, с использованием деформаторов Influence, необходимо нажать RMB, чтобы открыть контекстное меню, выбрать опцию Add Override и добавить один из Falloffs, он автоматически присвоется к Soft Body. Кроме того, пользователи могут использовать редактор Schematic, переместив два элемента из Item List в окно редактора с помощью Drag and Drop и подключить выход из элемента Falloffs ко входу элемента Force.

Сделать Якоря/Make Anchors

Опция Сделать Якоря/Make Anchors используется для подключения элемента Soft Body к элементу Rigid Body. Для симуляции элемент Rigid Body должен быть Пассивным. Опция Make Anchors будет полезна при креплении флага на флагшток. Для того чтобы Make Anchors правильно работал, необходимо следовать конкретному рабочему процессу:  в режиме выбора "Item" необходимо сначала выбрать элемент Soft Body, затем выбрать элемент Passive Rigid Body. С выбранными элементами Soft Body и Passive Rigid Body, необходимо перейти в компонентный режим выбора Вершин (Клавиша 1), затем выбрать по крайней мере одну Вершину на элементе Soft Body и минимум одну Вершину элемента Passive Rigid Body. Когда Вершины выбраны, нажмите кнопку Make Anchors. Теперь два элемента жестко соединены вместе, и добавился элемент Anchor в Item List. Чтобы разорвать соединение, просто удалите элемент Anchor.

 Якорь - это весовая карта, причем используемая только для Вершин. По этому, для Soft Body использовать Якоря для крепления не всегда корректно, так как мягкое тело будет держаться за Вершины. Рекомендую применять другой способ крепления мягких тел к чему-либо. Для этого можно применять инструмент Weight для Ребра мягкого тела. Для этого надо использовать весовую карту, которую затем установить в Динамическом Элементе в настройке Goal Map. Goal Map: это Карта Вершин/Vertex Map которая назначена для элемента Soft Body и контролирует сколько Soft  Body сохраняет свою первоначальную форму и не будет изменяться при расчете симуляции Динамики. Все зависит от веса карты.

Кэширование Симуляции/Caching Simulations

С помощью команды Dynamics > Cache Simulation... или используя кнопку Compute Simulation вызываем диалоговое окно

Здесь вы можете задать кадры для симуляции, после нажатия OK, симуляция будет кэшироваться в сцену, делая динамику частью сцены. Это единственный путь для просмотра симуляции в шкале Time Line. Кроме того, это единственный путь для визуализации результатов симуляции. Имейте в виду, что в сложных расчетах, размер файла при кэшировании динамики может сушественно увеличится. 

Дополнительная Информация о Динамике

Элементы и Компоненты/Items vs. Components

Анимация в modo относится только к элементам Item. Ключевые кадры устанавливаются в режиме Item, в то время как моделирование объектов происходит на уровне компонентов в режиме Вершины/Vertices, Ребра/Edges, Полигоны/Polygons. Это полезно для понимания различий между этими режимами. Слои Mesh в Item List  должны рассматриваться как контейнеры. В режиме Items, редактируется весь конетейнер, в то время как компонентный режим, редактирует содержимое контейнера. Динамика действует только на уровне элементов Items , где каждый слой Mesh в Item List имеет свою собственную динамику, Динамику объекта. Поэтому, если необходимо разрушить стену из кирпича, необходимо создать свой слой Mesh для каждого кирпича.  Для начала необходимо создать один кирпич и применить к нему опцию Active Dynamic Body, что бы сделать кирпич динамическим. Затем исползовать функцию дублирования Array в режиме Item, что бы создать копии кирпича с его функциями. Стена создана, все что остается, это сделать шар, который мы бросим в нашу стену для разрушения. После столкновения, кирпичи будут падать на землю.

Центры и Массы/Centers and Mass

Вес объектов Rigid Body зависит от положения Центра/Center. Центр объекта служит не только для вращения, но также представляет центр массы объекта при использовании динамики. Динамика распределяет вес объекта равномерно вокруг Центра, исходя из этого происходит симуляция. Если центр находится слишком далеко от фактического центра объекта, или, того хуже, за пределами объекта, обязательно будет происходить нечто странное. Что бы Центр объекта можно было видеть в окне проекции необходимо нажать клавишу О и сделать видимыми ценры для выбранных элементов.

Есть несколько способов установить Центр в середину объекта, если он был перемещен. В режиме редактирования Items выбераем нужный элемент и используем команду из меню Edit > Center to Bounding Box > Center, это автоматически переместит Центр в середину объекта.  Bounding Box - это габаритные границы объекта.

Динамические объекты нельзя анимировать вручную при помощи ключевых кадров, однако, объекты которые не двигаются Пассивные могут быть анимированы и передавать Динамику после того, как были перемещены. Если необходимо анимировать объект для вращения, относительно не его центра, нужно использовать позицию Pivot для анимации вращения, оставив Center на месте для надлежащего поддержания ценра масс.

Точность/Accuracy

Вопрос номер один для пользователей при расчете симуляции объектов, почему объекты проходят друг через друга. Как могут проходить звенья одной цепи друг через друга, когда должны быть одной цельной цепью? Это может быть вызвано множеством причин, одной из которой и наиболее частой является скорость, с которой движется объект. В одном кадре звенья цепи были на расстоянии друг от друга, в следующем кадре они прошли сквозь друг друга. Это означает, что по умолчанию расчеты в промежутках между кадрами не имеют достаточно времени для симуляции столкновений объектов. Мы видим результат только конечных кадров, но многое может произойти между кадрами.  Пользователи могут увеличить этот промежуток между кадрами увеличив значения Steps в настройках Solver. Это позволяет сделать более точные симуляции Динамики, однако, дополнительные расчеты будут занимать больше времени для вычислений, более точные  = более медленнее. Необходимо эксперементировать с различными значениями, чтобы найти одно, которое дает приемлемый результат с необходимым количеством шагов.

Движек Bullet Physics

Динамика базируется на движке Bullet Physics, с открытым исходным кодом обнаружения столкновений и библиотеки твердых тел. Является бесплатным для коммерческого использования, в соответствии с лицензией ZLib. Спасибо Erwin Coumans и разработчикам Bullet за их усилия и щедрость.

14 Комментариев

#

Ого! Супер, спасибо. А может кто-нибудь уже делал симуляцию одежды? Только не падение тряпки на сферу или шторы, а нормальную человеческую одежду на персонажах?

#

Спасибо. Хорошее видео. Динамика очень интересный предмет. Про Ограничения в ближайшее время будет перевод хелпа, с удовольствием добавил бы видео с эксперементами модонафтов в этом деле.

#

Я попытался найти инфу по симуляции ткани, но так ничего и ненашел, зато нашел в инете вот такой урок по MODO 701, где подробно и наглядно (на испанском) объясняется динамика ткани. А очень хотелось бы разобраться с этим на русском или на английском. Может кто подскажет где найти ?

http://

#

20 um это расстояние на которое будет происходить отскок. Посмотри количество

Bounce: это ответ на столкновение с другим динамическим объектом, отскок. Значение 0.0 означет, что объект не будет отскакивать или распространять энергию на объекты в которые попадает. Значение 1.0 будет сохранять всю энергию объекта.

Автор

ammbass

с mymodo 2771 день
5850 44

Всем есть MODO