Столкновение (collision)#

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

Столкновения с другими объектами#

Для столкновения мягкого тела с другим объектом существует несколько предпосылок:

  • Если установлена коллекция столкновений, объект должен принадлежать этой коллекции.

  • Объект столкновения должен быть меш-объектом.

  • Вам необходимо активировать столкновение на вкладке физика для объекта столкновения. Объектом столкновения также может быть мягкое тело.

Примеры#

Столкновение куба, как мягкого тела, с плоскостью (рис. Столкновение куба, как мягкого тела, с плоскостью.), работает довольно хорошо, но плоскость, как мягкое тело, падает прямо сквозь куб, с которым она должна столкнуться (рис. Столкновение плоскости, как мягкого тела, с кубом: без какого-либо взаимодействия.).

../../_images/physics_soft-body_collision_cube-plane-1.png

Столкновение куба, как мягкого тела, с плоскостью.#

../../_images/physics_soft-body_collision_cube-plane-2.png

Столкновение плоскости, как мягкого тела, с кубом: без какого-либо взаимодействия.#

Почему так происходит? Потому что стандартный метод расчёта проверяет только, сталкиваются ли четыре вершины плоскости мягкого тела с кубом, когда плоскость падает под действием силы тяжести. Вы можете активировать столкновение: грань (на панели рёбра мягкого тела), чтобы вместо этого включить столкновение между гранью плоскости и объектом, но этот тип расчёта занимает гораздо больше времени.

Давайте подробнее рассмотрим расчёт столкновений, чтобы вы могли понять, как мы можем его оптимизировать.

Расчёт столкновений#

Симуляция мягких тел по умолчанию выполняется для каждой вершины. Если вершины мягкого тела не сталкиваются с объектом столкновения, взаимодействия между двумя объектами не будет.

На видео ниже вы можете увидеть, как вершины сталкиваются с плоскостью. Если вершина проникает в зону между внешним и внутренним, она отталкивается силой в направлении нормали грани. Положение, в котором в конечном итоге окажется вершина, зависит от сил, действующих на неё. В примере (первая вершина слева на видео ниже) гравитация и сила отталкивания грани уравновешиваются. На скорость, с которой вершина выталкивается из зоны столкновения, влияет параметр заполнение (choke) в настройках решателя мягкого тела.

См.также

Загрузить blend-файл.

Теперь давайте посмотрим, что произойдет, если мы утяжелим вершины и позволим им двигаться с большей скоростью. На видео выше вы можете увидеть вершины, движущиеся с разной скоростью. Две крайние правые (пятая и шестая) движутся так быстро, что проходят прямо сквозь зону столкновения (это из-за точности решателя «по умолчанию», которую мы сможем исправить позже). Вы заметите, что четвёртая вершина также движется довольно быстро и, поскольку она тяжелее, она нарушает внутреннюю зону. Первые три вершины сталкиваются правильно.

Вы можете настроить столкновение так, чтобы края и даже грани включались в расчёт столкновения на панели рёбер мягкого тела с параметрами столкновения грани и ребра. Тогда столкновение рассчитывается по-другому. Проверяется, пересекается ли ребро или грань с объектом столкновения, зоны столкновения не используются.

Хорошие столкновения#

Если настроенное вами столкновение работает неправильно, вы можете попробовать следующее:

  • Объект мягкого тела должен иметь больше подразделений, чем объект столкновения. Добавьте петлевые разрезы (loop cuts) к объекту мягкого тела в стратегических областях, которые, по вашему мнению, с наибольшей вероятностью будут вовлечены в столкновение.

  • Проверьте направление нормалей грани.

  • Если объект столкновения имеет острые шипы, они могут проникнуть в мягкое тело.

  • Разрешение решателя должно соответствовать скорости движения вершин мягкого тела. Уменьшите параметр предельной погрешности и осторожно увеличьте размер минимального шага.

  • Внешние и внутренние должны быть достаточно большими, но зоны противоположных граней не должны перекрываться, иначе у вас будут силы в противоположных направлениях.

  • Если вы используете мощные силы, вам следует использовать большие зоны.

  • Установите заполнение на достаточно высокое значение (при необходимости полностью вверх), если у вас возникли трудности с отталкиванием вершин.

  • Столкновения граней трудно контролировать, и расчёты требуют длительного времени. Постарайтесь их не использовать.

Часто лучше создать упрощённый меш для использования в качестве объекта столкновения, однако это может быть осложнено, если вы используете анимированный меш.

Само-столкновения (self-collisions)#

Информацию о само-столкновении см. в настройках Само-столкновение (Self Collision).