This page has been translated automatically.
Видеоуроки
Interface
Essentials
Advanced
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Landscape Tool
Sandworm
Использование инструментов редактора для конкретных задач
Extending Editor Functionality
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World Nodes
Звуковые объекты
Объекты поиска пути
Players
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
Унифицированный язык шейдеров UUSL
Плагины
File Formats
Rebuilding the Engine Tools
GUI
Двойная точность координат
API
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
Работа с контентом
Оптимизация контента
Материалы
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии SDK! Пожалуйста, переключитесь на самую актуальную документацию для последней версии SDK.
Внимание! Эта версия документации описывает устаревшую версию SDK, которая больше не поддерживается! Пожалуйста, обновитесь до последней версии SDK.

RagDoll Body

RagDoll body включает обратная кинематика и процедурная анимация сцены смерти для оживленный костью символы. Этот тип тела на самом деле представляет собой набор Твердые тела представляющие каждую кость персонажа, соединенную суставами. Эти суставы ограничивают движение костей относительно друг друга, обеспечивая реалистичный вид.

Примечание
RagDoll body можно присвоить только объектам Mesh Skinned.

RagDoll animation

RagDoll анимация

Смотрите также#

Назначение тела тряпичной куклы#

Чтобы присвоить объекту RagDoll body через UnigineEditor выполните следующие действия:

  1. Откройте окно World Hierarchy.
  2. Выберите Сетка со шкурой объект, которому нужно присвоить RagDoll body.
  3. Перейдите на вкладку Physics в окне Parameters и назначьте физический тело к выбранному объекту, выбрав Body -> RagDoll.

    Adding a body

  4. Задайте имя тела и обратитесь к следующему разделу, чтобы создать RagDoll.

Создание физической тряпичной куклы#

Есть два способа создать RagDoll:

После того, как тело будет присвоено Mesh Skinned, первым шагом будет создание Rigid body, который будет представлять каждую кость в физической симуляции.

На данный момент все кости свободны , то есть с ними не связан Rigid body. Чтобы автоматически генерировать RagDoll, т.е. твердые тела и аппроксимирующие формы вместе с соединениями для их соединения, необходимо нажать кнопку Create.

Примечание
Для правильной автоматической генерации RagDoll сетка должна находиться в эталонной позе (T-поза для персонажей, похожих на людей). Если анимация уже была применена к сетке, примените анимацию со статической опорной позой.

Автоматическая генерация выполняется по следующим параметрам:

Форма приближения#

Кости можно аппроксимировать с помощью Convex hull или Capsule, если установлен флажок Capsule shape:

  • Capsule обеспечивает очень быстрое физическое моделирование и постоянное обнаружение столкновений.
  • Convex hull обеспечивает более точное приближение.

Если требуется какая-либо другая форма, необходимо выполнить аппроксимацию. вручную .

Approximation with capsules and convex hulls

Аппроксимация капсулами и выпуклыми оболочками
Примечание
Помните, что физические формы не обязательно должны точно воспроизводить сетку. Грубое приближение обеспечивает реалистичное и достаточно убедительное физическое взаимодействие.

Общая масса#

Общее масса RagDoll будет автоматически распределен между всеми формами, приближающимися к костям. При распределении учитывается объем, который занимает фигура. Если впоследствии масса изменится, массы всех фигур пересчитываются. И наоборот, при изменении массы формы соответственно изменяется и общая масса.

Ошибка приближения#

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

  • Чем ниже значение, тем точнее и приближается форма к сетке.
  • Максимальное значение 1 обеспечивает довольно грубое приближение, которое может не покрывать весь объем сетки.

Если символ аппроксимируется капсулами , меньшее значение ошибки аппроксимации обеспечивает более точную ориентацию формы.

Порог громкости#

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

  • При минимальном значении 0 все кости без исключения представлены твердыми телами и, следовательно, формами.
  • При максимальном значении 1 формы аппроксимации большие и следуют только за основными костями. В этот том включены маленькие кости, но их индивидуальные преобразования не учитываются при физическом моделировании.
Minimum volume threshold     Maximum volume threshold
Порог объема определяет, должны ли все кости вплоть до самой маленькой, моделироваться отдельно или объединяться в более крупные формы.

 

Иерархия тела для костей#

После создания RagDoll все кости, представленные в твердых телах и формах и определяющие их движение, помечаются как связанные в иерархии. Все мелкие кости, не участвующие в движении физического тела, остаются свободными . Если автоматически сгенерированные формы слишком рыхлые, их можно настроить вручную до тех пор, пока приближение не станет достаточно удовлетворительным.

Иерархию тел и форм, которые приблизительно соответствуют костям, можно сохранить в .node и загрузить из него. Установленную иерархию также можно удалить из RagDoll body и создать заново.

Hierarchy of rigid bodies that represent bones

Ручное создание тряпичной куклы#

Также возможно создать RagDoll вручную. В этом случае можно использовать произвольные формы для аппроксимации костей RagDoll body. Чтобы создать RagDoll вручную, выполните следующие действия:

  1. Создайте Node Dummy, который будет родительским узлом для будущей иерархии RagDoll.
  2. Добавьте Dummy Object и сделайте его дочерним узлом. Присвойте ему Rigid body и назовите тело в честь кости, которую оно будет представлять. После этого аппроксимируйте кость любой необходимой формы.
  3. Создайте все тела и формы Rigid для костей RagDoll. Иерархия не имеет значения, важны только названия тел.
  4. Экспортируйте родительский узел в файл .node.
  5. Выберите символ и загрузите этот файл для его RagDoll body.
  6. Добавьте и настройте суставы, которые соединяют твердые тела в пределах RagDoll.

Включение анимации RagDoll#

Когда персонаж сталкивается с каким-либо препятствием или, например, в него стреляют и он умирает, необходимо отключить воспроизведение анимации на основе костей и имитировать реалистичное падение персонажа в соответствии с физическими законами. Когда флажок Frame-based снят, RagDoll body больше не управляется преобразованиями костей. Он рушится согласно Rigid body динамика ( массы всех твердых тел, которые представляют собой части RagDoll, демпфирование скорости и т. д.), совместные ограничения и Жесткость движения.

Примечание
Включение анимации RagDoll влияет только на те кости, которые были физически аппроксимированы. Например, мелкие кости, которые были выброшены из-за порог громкости , по-прежнему будет двигаться. Чтобы этого не произошло, анимация сетки должна быть остановился явно.

Жесткость движения#

Параметр Rigidity позволяет дополнительно ограничивать движение RagDoll. Он определяет, насколько равномерно движение частей RagDoll. Для этого как линейные, так и угловые скорости каждого отдельного твердого тела корректируются в соответствии с полными скоростями, интерполированными для всех тел.

  • При минимальном значении 0 все части RagDoll, представленные в твердых телах, перемещаются независимо и неограниченно (конечно, за исключением ограничений суставов). Это создает впечатление свободного и неустойчивого движения.
  • При максимальном значении 1 части RagDoll перемещаются равномерно и жестко, что может показаться чрезмерно ограниченным.

Комбинированная анимация и обратная кинематика#

Проблема с предварительно созданной анимацией заключается в том, что она не обеспечивает должного взаимодействия с окружающей средой. Например, при подъеме или спуске с холма ноги персонажа не приземляются твердо на местности. Или, когда он поднимается по лестнице, руки должны крепко держаться за ступеньки. Этот эффект достигается с помощью комбинированной анимации: анимация движения воспроизводится для основных костей, в то время как меньшие кости (например, ноги или руки) моделируются физически.

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

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

Inverse Kinematics

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