Unreal engine 4 - симуляція фізики

Компоненти Physics Constraint працюють так само, як Physics Constraints Actors. за винятком того, що вони використовуються в блупрінтах або можуть бути створені в C ++.






Беручи до уваги гнучкість блупрінтов і міць C ++, ви можете використовувати фізичні зв'язку для будь-якого об'єкта в вашому проекті з Physics Constraint Components.

Цей документ буде охоплювати базове створення і настойку компонента Physics Constraint в блупрінтах.

Використання

  1. Створення компонентів, які будуть використовуватися для взаємодії. Для цієї демонстрації, буде використовуватися два статики заважав у формі куба.
    Unreal engine 4 - симуляція фізики
  2. Add Component => Physics Constraint.
    Unreal engine 4 - симуляція фізики
  3. Встановіть Physics Constraint Component. в місці де повинен бути стик.
    Unreal engine 4 - симуляція фізики
  4. Ви повинні вручну ввести ім'я компонентів для взаємодій. Введіть ім'я першого компонента: Component Name 1 => Component Name.
    Unreal engine 4 - симуляція фізики
  5. Потім введіть ім'я другого компонента: Component Name 2 => Component Name.
    Unreal engine 4 - симуляція фізики
  6. Встановіть Physics Constraint властивості:
    • Angular Swing 1Motion і Angular Swing 2Motion в Limited.
    • Swing 1Limit Angle і Swing 2Limit Angle в 45 градусів.
    • Вимкніть Swing Limit Soft.
Unreal engine 4 - симуляція фізики
  • Поверніть Physics Constraint Component в разі потреби для обліку лінійних і кутових меж.
    Unreal engine 4 - симуляція фізики
  • Помістіть блупрінт об'єкт на рівень і розташувати його там, де вам це потрібно.
    Unreal engine 4 - симуляція фізики
  • Протестуйте.
    Unreal engine 4 - симуляція фізики
  • Physics Constraint - спеціальний об'єкт, який дозволяє прив'язати фізичний об'єкт до іншого (будь то фізичний чи ні). При цьому прив'язка буде не сувора, що означає, що предмет буде прив'язаний ніби на мотузці або шарнірі, дозволяючи фізичного об'єкту вільно або обмежено переміщатися щодо точки зв'язку.

    Physics Constraint добре підходить для створення дверей, які відкриваються поштовхом іншого об'єкта або хитається люстри на стелі.

    Unreal engine 4 - симуляція фізики

    Прив'язка об'єктів через Constraint

    Unreal engine 4 - симуляція фізики

    Physics Constraint компонент

    Unreal engine 4 - симуляція фізики

    Параметри Physics Constraint

    Якщо вам потрібно створити хитку люстру, водяне колесо, або просто хочете зберегти фізику тіла в загальній області, Physics Constraint те, що вам потрібно. Цей документ буде охоплювати використання Physics Constraint.

    Physics Constraint дозволяє з'єднувати два актори разом (імовірно один є фізичним), а також застосовувати до них різні обмеження або сили.
    Unreal Engine 4 має дуже гнучку систему обмежень, яка дозволяє розробникам зробити багато різних типів з'єднань просто шляхом зміни деяких параметрів.
    Движок має вбудовані типи декількох базових сполук (кульове, призматичне, петлі), але вони відрізняються тільки їх настройками.

    Physics Constraint Actor

    Unreal engine 4 - симуляція фізики
  • Протестуйте отримані з'єднання. Використовуйте наприклад RadialForceActor він знаходиться в розділі All Classes на панелі Modes.
    Unreal engine 4 - симуляція фізики






  • З'єднання з скелетал мешамі

    Якщо ви використовуєте скелетал меш, вам потрібно буде вказати ім'я Constraint Bone. Меш в даному випадку буде прикріплений за зазначену кістка.

    Unreal engine 4 - симуляція фізики

    компоненти об'єкта

    Якщо ви хочете, використовувати подібний зв'язок для конкретних компонентів всередині об'єкта, ви можете використовувати ім'я цього компонента у відповідному полі.
    Якщо це поле залишити порожнім, то буде обраний кореневої компонент. Проте, якщо ви використовуєте справжні імена компонентів в Constrained Actor 1 і / або Constrained Actor 2,
    то компонент стане частиною цієї зв'язку. Якщо цей компонент є скелетал Мешем, необхідно також вказати ім'я кістки у відповідному полі.

    Unreal engine 4 - симуляція фізики

    Після того, як ви вказали ім'я компонента Constrained Actor. обмежує обсяг з'явиться навколо цього компонента. Якщо обмежує обсяг не відображається,
    перевірте ім'я вашого компонента і переконайтеся, що він насправді може бути використаний тут.

    Вказує, чи дозволено лінійне рух уздовж осі X, заблоковано або обмежена. Якщо рух обмежено, властивість LinearLimit визначатиме діапазон кордонів.

    Вказує, чи дозволено лінійне рух уздовж осі Y, заблоковано або обмежена. Якщо рух обмежено, властивість LinearLimit визначатиме діапазон кордонів.

    Вказує, чи дозволено лінійне рух уздовж осі Z, заблоковано або обмежена. Якщо рух обмежено, властивість LinearLimit визначатиме діапазон кордонів.

    Linear Limit Size

    Гранична ступінь, в світових одиницях, лінійного руху для обмежених осей руху.

    Вказує, чи дозволено обертання навколо осі Z, заблоковано або обмежена. Якщо обмежена, властивість AngularLimit буде використовуватися для визначення діапазону руху.

    Angular Twist Motion

    Вказує, чи дозволено обертання навколо осі X, заблоковано або обмежена. Якщо обмежена, властивість AngularLimit буде використовуватися для визначення діапазону руху.

    Angular Swing 2Motion

    Вказує, чи дозволено обертання навколо осі Y, заблоковано або обмежена. Якщо обмежена, властивість AngularLimit буде використовуватися для визначення діапазону руху.

    Swing 1Limit Angle

    Використовується, якщо поворотний рух уздовж осі Y обмежена. Граничний кут задається в градусах і повинен знаходитися в діапазоні від 0 до 180.

    Twist Limit Angle

    Використовується, якщо поворотний рух уздовж осі X обмежена. Граничний кут задається в градусах і повинен знаходитися в діапазоні від 0 до 180.

    Swing 2Limit Angle

    Використовується, якщо поворотний рух уздовж осі Z обмежена. Граничний кут задається в градусах і повинен знаходитися в діапазоні від 0 до 180.

    Angular Rotation Offset

    Задає кутовий зсув між двома системами відліку. За замовчуванням межа йде від (-кут, + кут). Це дозволяє зміщувати межа для swing1. swing2 і twist.

    Unreal engine 4 - симуляція фізики

    Unreal engine 4 - симуляція фізики

    Collision Responses і Trace Responses формують основу того, як Unreal Engine 4 обробляє зіткнення і рей кастинг (ray casting) запити час виконання.
    Кожен об'єкт, який може зіткнутися отримує Object Type і ряд параметрів, які визначають, як він буде взаємодіяти з іншими типами об'єктів.
    При зіткненні або перекритті об'єктів можуть генеруватися події, кожному з об'єктів можна налаштувати параметри впливу на інші типи об'єктів, чи будуть вони мати справу або ігнорувати один одного.

    Trace Responses працюють в основному так само. Трейс сам по собі може бути визначений як один з типів об'єктів, дозволяючи іншим об'єктам на основі своїх налаштувань або блокувати або ігнорувати його.

    взаємодії

    Є кілька речей, які потрібно мати на увазі, що б розуміти, як обробляються зіткнення:

    • Блокування (Blocking) буде відбуватися природним чином між двома (або більше) об'єктами з заданими параметрами блокування.
      Проте, для виконання Event Hit подій потрібно включити Hit Event. який використовується в блупрінтах, руйнуються об'єктах, триггерах і т.д ...
    • Об'єкти з параметром Overlap часто виглядають як об'єкти з параметром Ignore. і без Event Hit. вони по суті однакові.
    • Для двох (або більше) об'єктів блокуючих один одного, в обох повинні бути виставлені відповідне налаштування.
    • Для двох або більше об'єктів: якщо параметри одного встановлені в Blocking. а другого в Overlap. то буде відбуватися тільки Overlap (перекриття) але не блокування об'єктами один одного.
    • Overlap події можуть бути згенеровані навіть якщо об'єкт блокує інший, особливо при русі на високих швидкостях.
      • Не рекомендується використовувати одночасно як Blocking так і Overlap параметри. Хоча звичайно це можливо, може знадобитися ручна настройка.
    • Якщо один об'єкт встановлений в Ignore. а інший в Overlap. об'єкти будуть ігнорувати один одного а так само не будуть генеруватися Overlap евенти.

    Для цілей тестування рівнів:

    приклади взаємодій

    Ці приклади припускають, що всі об'єкти мають включеним пункт Collision Enabled. Якщо зіткнення відключено, це як якби Ignore був встановлений для всіх Collision запитів.

    Пояснимо що відбувається, щоб ви без праці зрозуміли що відбувається в наступному розділі:

    Unreal engine 4 - симуляція фізики

    Сфера є PhysicsBody а стіна World Dynamic. шляхом зміни їх параметрів зіткнень ми будемо отримувати різну поведінку.

    зіткнення

    Встановіть обидва об'єкти в режим Blocking. щоб вони блокували один одного, ви отримаєте зіткнення, ось так об'єкти взаємодіють один з одним:

    Unreal engine 4 - симуляція фізики

    Unreal engine 4 - симуляція фізики

    Unreal engine 4 - симуляція фізики

    Як і в наведеному вище прикладі, сфера є PhysicsBody і вона налаштована, щоб блокувати World Dynamic (яким є стіна).
    Однак сфера також може формувати Event Hit події, так що будемо ініціювати евент щоразу, коли вона стикається з чимось.

    Стіна є World Dynamic і налаштовується на блокування PhysicsBody об'єктів (той же тип що і у сфери).
    Оскільки у стіни не встановлено прапорець Simulation Generates Hit Events. вона не буде генерувати ніяких подій при зіткненні з собою.

    Оскільки у сфери включений параметр Simulation Generates Hit Events. вона буде генерувати події кожен раз при зіткненні з собою.
    Крім того, об'єкт, який повідомляє про жорсткі зіткненнях буде повідомляти про них так само, коли він просто лежить на чомусь, так що краще бути обережним, потрібно відокремлювати корисні повідомлення від "спаму".

    Overlap і Ignore

    У всіх інших випадках коли включені прапори Overlap або Ignore. але вимкнений прапор Simulation Generates Hit Events. сфера просто ігноруватиме стіну:

    Unreal engine 4 - симуляція фізики