Зіткнення – Collision

Існують два різних типи зіткнення, які ви можете використовувати: зіткнення між різними об’єктами та внутрішнє зіткнення. Ми повинні задати одну річ прямо із самого початку – первинними цілями розрахунку зіткнення є вершини м’якого тіла. А тому, якщо ви маєте занадто мало вершин, то і занадто мало зіткнень відбудеться. По-друге, ви можете використовувати ребра та грані для поліпшення розрахунку зіткнення.

Зіткнення з Іншими Об’єктами – Collisions with Other Objects

Для зіткнення м’якого тіла з іншим об’єктом є кілька передумов:

  • Якщо задано Колекцію Зіткнення – Collision Collection, то об’єкт повинен належати цій колекції.

  • Об’єкт зіткнення має бути сітьовим об’єктом.

  • Ви маєте активувати «Зіткнення» – Collision у вкладці «Фізика» – Physics для об’єкта зіткнення. Об’єкт зіткнення може також бути м’яким тілом.

Приклади – Examples

Куб, що є м’яким тілом та зіштовхується з площиною (Ілюстрація Куб, що є м’яким тілом, зіштовхується з площиною.) працює досить добре, але площина, що є м’яким тілом, падає прямо крізь куб, хоча передбачається, що вона має з ним зіткнутися (Ілюстрація Площина, що є м’яким тілом, зіштовхується з кубом так, що немає жодної взаємодії взагалі.).

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

Куб, що є м’яким тілом, зіштовхується з площиною.

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

Площина, що є м’яким тілом, зіштовхується з кубом так, що немає жодної взаємодії взагалі.

Чому так? Тому що стандартний метод розрахунку перевіряє тільки, щоб бачити, чи чотири вершини площини, що є м’яким тілом, зіштовхуються з кубом при штовханні її вниз дією гравітації. Натомість, ви можете активувати Collision: Face (у панелі Soft Body Edges) для вмикання зіткнення між гранню площини та об’єктом, але цей тип розрахунку триває набагато більше.

Давайте ближче подивимося на розрахунок зіткнення, щоб ви могли мати уявлення, як ми можемо його оптимізувати.

Розрахування Зіткнень – Calculating Collisions

Симуляції м’якого тіла стандартно робляться на по-вершинній основі. Якщо вершини м’якого тіла не стикаються з об’єктом зіткнення, то не буде жодної взаємодії між цими двома об’єктами.

У відео нижче ви можете бачити вершини, що стикаються з площиною. Якщо вершина проникає у зону між Outer та Inner, то вона відштовхується силою у напрямку нормалі грані. Позиція, в якій у кінці опиняється вершина, залежить від сил, які діють на неї. У цьому прикладі (перша вершина зліва у відео нижче) гравітація та сила відштовхування грані збалансовані. Швидкість, з якою вершина виштовхується із зони зіткнення, знаходиться під впливом параметра Choke в уставах рішальника м’якого тіла – Soft Body Solver settings.

Дивись також

Завантажте цей blend-file.

Тепер, давайте подивімося, що трапиться, якщо ми зробимо вершини важчими та дозволимо їм проходити з більшою швидкістю. У відео вище ви можете бачити вершин, що проходять з різними швидкостями. Дві крайні справа (п’ята та шоста) рухаються так швидко, що вони проходять прямо крізь зону зіткнення (це через стандартну точність рішальника, яку ми можемо виправити пізніше). Ви помітите, що інші чотири вершини також проходять досить швидко і через те, що вони важче, вони прориваються до внутрішньої зони. Перші три вершини стикаються правильно.

Ви можете укласти зіткнення так, щоб ребра та навіть грані включалися у розрахунок зіткнення на панелі Soft Body Edges за допомогою опцій зіткнення Face та Edge. Зіткнення тоді розраховується по-іншому. Перевіряється чи ребро або грань м’якотілого об’єкта перетинається з об’єктом зіткнення, а зони зіткнення вже не використовується.

Добрі Зіткнення – Good Collisions

Якщо зіткнення, яке ви уклали, не поводиться належно, то ви можете спробувати наступне:

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

  • Перевірте напрямок нормалей граней.

  • Якщо об’єкт зіткнення має гострі піки у своїй формі, то вони можуть пронизувати м’яке тіло.

  • Роздільність рішальника повинна узгоджуватися зі швидкістю, з якою проходять вершини м’якого тіла. Понизьте параметр Error Limit та обережно підвищіть уставу Min Step.

  • Значення Outer та Inner для об’єкта зіткнення повинні бути достатньо великими, але зони протилежних граней не повинні перекриватися і ви не маєте мати сили у протилежних напрямках.

  • Якщо ви використовуєте потужні сили, то ви повинні використовувати великі зони.

  • Задайте для Choke достатньо високе значення (для усієї симуляції, якщо необхідно), якщо ви маєте труднощі з виштовханими вершинами.

  • Зіткненням граней важко керувати та воно потребує більше часу на розрахунок. Намагайтеся не використовувати грані для зіткнення.

Часто краще створити спрощену сіть для використання як об’єкта зіткнення, однак, це може бути важко, якщо ви вживаєте для цього анімовану сіть.

Само-Зіткнення – Self-Collisions

Детальніше про само-зіткнення дивіться устави ref:Self-Collision <physics-softbody-settings-self-collision>.