Fracture Body
Fracture body обеспечивает убедительное разрушение объектов в реальном времени. Когда происходит столкновение с телом, разрушаемый объект процедурно сломанный на куски, которые, в свою очередь, также можно разбить до тех пор, пока не будет достигнут желаемый уровень разрушения. Тела трещин относятся к недорогому типу и могут быть разбиты на умеренно большое количество частей.
Смотрите также#
- BodyFracture класс
- Фрагмент видеоурока по физике, демонстрирующий процедурное разрушение тел излома
Физическое приближение#
Fracture body (а также все части, на которые он распадается) на самом деле является Rigid body, который движется в соответствии с динамика твердого тела . Следовательно, он имеет следующие свойства:
- Mass
- Density
- Linear Damping and Angular Damping
- Maximum Linear Velocity and Maximum Angular Velocity
- Friction
- Restitution
- Frozen velocities
После того, как тело было сломано, его масса распределяется между частями, и они падают вниз, как твердые тела.
Ошибка аппроксимации формы#
Fracture body всегда приближается к выпуклый корпус , который может содержать слишком много деталей для геометрии столкновения. Как правило, в этом нет необходимости, потому что высокодетализированная форма не обеспечивает заметной визуальной разницы, но существенно влияет на производительность. Ошибка аппроксимации позволяет контролировать количество вершин в результирующей форме столкновения:
- По значению 0 форма точно дублирует сетку; весь его объем прилагается.
- Чем выше значение, тем меньше вершин в созданной форме, но больше деталей пропускается, и форма может не покрывать весь объем сетки. Максимальное значение - 1.
ГРП#
Существует три модели трещинообразования:
Эти модели определяют пути разрушения, которые имеют отношение к различным механическим свойствам материалов (например, их вязкости и пористости). Шаблоны трещин доступны для выбора на уровне скрипта.
Нарезка#
Нарезка - это узор излома, разделяющий объем сетки на две части плоскостью. Самолет проходит через заданную точку тела. Угол нарезки определяется заданной нормалью.
Чтобы нарезать Fracture body, используйте метод createSlicePieces().
Растрескивание#
Растрескивание - это структура разрушения, при которой образуются радиальные трещины от точки столкновения. Все части трещин немного различаются по размеру для обеспечения визуального реализма. Кроме того, сетку можно дополнительно разломать по концентрическим кольцам, имитируя распространение импульса. Чем тоньше и хрупче материал (например, стекло), тем больше колец образуется в результате разрушения. Указанное расстояние между кольцами также варьируется случайным образом, чтобы обеспечить убедительный результат.
Чтобы взломать Fracture body, используйте метод createCrackPieces().
Сокрушительный#
Разрушение - это структура трещин, случайным образом разделяющая объем сетки на заданное количество выпуклых частей.
Чтобы разбить Fracture body, используйте метод createShatterPieces().
Порог громкости#
Поскольку тело ломается, особенно несколько раз, маленькие кусочки могут начать сказываться на производительности. Пороговое значение объема определяет минимальный объем для сломанных частей и, таким образом, контролирует уровень трещиноватости. Все фрагменты, которые меньше указанного значения, не будут созданы.
- При минимальном значении 0 моделируются все куски вплоть до самого маленького, созданные в результате гидроразрыва.
- При более высоких значениях генерируются только достаточно большие куски. Если ни одна из частей не имеет достаточного объема, тело остается целым.
Сломанное тело#
После того, как тело было сломано, оно получает флаг Broken. Снятие этого флажка возвращает сломанную сетку в неразрывное состояние. Сломанное тело остается представленным в виде одного узла в Иерархия UnigineEditor . Сгенерированные части с трещинами автоматически представляются как тела Fracture и наследуют физические параметры тела с трещинами (например, демпфирование линейных и угловых скоростей, трение , реституция и маски).
Материал поверхности разрушения#
При разрыве сетки необходимо указать материал, который будет применяться ко всем вновь созданным поверхностям излома. Те грани фрагментов излома, которые были внешними, сохраняют исходный материал.
Свойство поверхности разрушения#
Также можно назначить новое свойство для всех поверхностей излома. Они определяют игровое поведение и дополнительные физические свойства, однако параметры тела их отменяют.
Физика Перекрестки#
Физические пересечения можно использовать как быстрый способ проверить, не попал ли в разрушаемый объект снаряд. Вы можете использовать Physics Intersection Mask, чтобы включить выборочное обнаружение пересечения для тела (например, чтобы сделать его уязвимым для определенных снарядов). Пересечения физики обнаруживаются только для сопоставления битовые маски .
Советы по оптимизации производительности#
Хотя Fracture body является относительно недорогим типом, в случае большого количества частей трещины влияние на производительность может стать значительным. Чтобы избежать падения производительности, можно воспользоваться следующими советами:
- Использовать порог громкости параметр для уменьшения количества фрагментов излома.
- Уберите части сломанного тела со сцены.
Пример на основе кода, иллюстрирующий, как удалить (исчезнуть со временем) фрагменты трещины со сцены, можно найти в разделе Physics файла Примеры UnigineScript .
Назначение тела перелома#
Чтобы присвоить объекту Fracture body через UnigineEditor выполните следующие действия:
- Откройте окно World Hierarchy.
- Выберите объект Mesh Ddynamic, которому нужно присвоить Fracture body.
-
Перейдите на вкладку Physics в окне Parameters и назначьте физический тело к выбранному объекту, выбрав Body -> Fracture.
- Задайте название тела и при необходимости измените другие параметры.