This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Контроль версий
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Player-ноды
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Материалы и шейдеры
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
Учебные материалы
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии SDK! Пожалуйста, переключитесь на самую актуальную документацию для последней версии SDK.
Внимание! Эта версия документации описывает устаревшую версию SDK, которая больше не поддерживается! Пожалуйста, обновитесь до последней версии SDK.

Fracture Body

Fracture body enables real-time persuasive destruction of objects. When collision with some body occurs, a destructible object is procedurally fractured into pieces, which in turn can also be fractured until the desired level of destruction is achieved. Fracture bodies are quite inexpensive type, and can be broken into a moderately large number of pieces.Тело Fracture обеспечивает убедительное разрушение объектов в реальном времени. Когда происходит столкновение с телом, разрушаемый объект процедурно разбивается на куски, которые, в свою очередь, также можно разбивать до тех пор, пока не будет достигнут желаемый уровень разрушения. Тело Fracture относится к недорогому типу и может быть разбито на умеренно большое количество частей.

Slice Pieces

Fracture bodies broken into piecesТела Fracture разбиты на куски
Примечание
Fracture body can be assigned only to Mesh Dynamic objects and can be used for convex meshes only.Тело Fracture можно назначать только объектам Mesh Dynamic и использовать только для выпуклых мешей.

See alsoДополнительная информация#

Physical ApproximationФизическая аппроксимация#

Fracture body (as well as all the pieces it fractures into) is, in fact, a Rigid body that moves according to rigid body dynamics. Therefore, it has the following properties:Тело Fracture (а также все части, на которые он распадается) на самом деле является телом Rigid, которое движется в соответствии с динамикой твердого тела. Следовательно, оно обладает следующими свойствами:

After the body was fractured, its mass is distributed among the pieces and they tumble down as rigid bodies would do.После того, как тело было разрушено, его масса распределяется между частями, и они падают вниз, как твердые тела.

Shape Approximation ErrorОшибка аппроксимации формы#

Fracture body is always approximated with a convex hull, which may contain too much detail for collision geometry. As a rule, it is unnecessary, because a highly detailed shape does not provide noticeable visual difference while significantly affecting performance. Approximation error makes it possible to control the number of vertices in the resulting collision shape:Тело Fracture всегда аппроксимируется выпуклым многогранником, который может содержать слишком много деталей для коллизионной геометрии. Как правило, в этом нет необходимости, потому что использование высокодетализированной формы не обеспечивает заметной визуальной разницы, но существенно влияет на производительность. Настройка Approximation Error (ошибка аппроксимации) позволяет контролировать количество вершин в результирующей коллизионной форме:

  • By the value of 0, the shape precisely duplicates the mesh; the whole volume of it is enclosed.При значении 0 форма точно дублирует меш, охватывая весь его объем.
  • The higher the value, the fewer vertices there are in the created shape, but the more details are skipped and the shape may not cover the whole mesh volume. The maximum value is 1.Чем выше значение, тем меньше вершин в созданной форме, но пропускается больше деталей, и форма может не охватить весь объем меша. Максимальное значение — 1.
Примечание
An autogenerated shape of a Fracture body is not displayed in the Shapes list on the Physics tab of the Parameters window. You can not remove it or assign any other shape to a Fracture body.Автоматически сгенерированная форма тела Fracture не отображается в списке Shapes на вкладке Physics окна Parameters. Вы не можете удалить ее или назначить любую другую форму для тела Fracture.

FracturingРазрушение#

There are three patterns of fracturing:Существует три модели разрушения:

These patterns determine fracture paths that are relevant to different mechanical properties of materials (e.g., its toughness and porosity). Fracture patterns are available for choosing on the script level.Эти модели определяют пути разрушения, которые имеют отношение к различным механическим свойствам материалов (например, их вязкости и пористости). Шаблоны разрушений доступны для выбора на уровне скрипта.

SlicingРазрез#

Slicing is a fracture pattern separating the mesh volume into two pieces by a plane. The plane passes through a specified point of the body. Slicing angle is determined by a specified normal.Разрез — это способ разрушения, разделяющий объем меша на две части плоскостью. Плоскость проходит через заданную точку тела. Угол разреза определяется заданной нормалью.

Slice Pieces

Fracturing body into two slice piecesРазрез тела на две части

To slice a Fracture body use the createSlicePieces() method.Чтобы разрезать тело Fracture, используйте метод createSlicePieces().

CrackingРастрескивание#

Cracking is a fracture pattern involving formation of radial cracks from the point of collision. All of the crack pieces slightly vary in size to ensure visual realism. Moreover, the mesh can be additionally fractured along concentric rings, simulating spread of the impulse. The thiner and more brittle the material is (e.g., glass), the more rings tend to be formed by fracturing. The specified distance between the rings is also randomly varied to provide convincing result.Растрескивание — это способ разрушения, при котором образуются радиальные трещины от точки столкновения. Все части трещин немного различаются по размеру для обеспечения визуального реализма. Кроме того, меш можно дополнительно разломать по концентрическим кольцам, имитируя распространение импульса. Чем тоньше и хрупче материал (например, стекло), тем больше колец образуется в результате разрушения. Указанное расстояние между кольцами также варьируется случайным образом, чтобы обеспечить убедительный результат.

Crack Pieces

Creating crack pieces with different number of radial cracks and concentric ringsРастрескивание с разным количеством радиальных трещин и концентрических колец

To crack a Fracture body use the createCrackPieces() method.Чтобы создать трещины на теле Fracture, используйте метод createCrackPieces().

ShatteringРазрушение на осколки#

Shattering is a fracture pattern randomly dividing the mesh volume into the specified number of convex chunks.Разрушение на осколки — это способ разрушения, при котором объем меша случайным образом распадается на заданное количество выпуклых частей.

Shatter Pieces

Creating different number of shatter piecesСоздание разного количества осколков

To shatter a Fracture body use the createShatterPieces() method.Чтобы разбить тело Fracture, используйте метод createShatterPieces().

Volume ThresholdПороговое значение объема#

As the body is fractured, especially for several times, small pieces may start to hit the performance. Volume threshold determines the minimum volume for fractured pieces and thus controls the level of fracturing. All chunks that are smaller than the specified value, will not be generated.После разрушения тела, особенно несколько раз, маленькие кусочки могут начать снижать производительность. Значение Volume Threshold (пороговое значение объема) определяет минимальный объем фрагментов и, таким образом, контролирует интенсивность раскалывания. Все фрагменты, которые меньше указанного значения, не будут генерироваться.

  • By the minimum value of 0, all the pieces up to the smallest one created by fracturing are simulated.При минимальном значении 0 моделируются все фрагменты, созданные в результате разрушения вплоть до самого маленького.
  • By higher values, only pieces big enough are generated. If no pieces have sufficient volume, the body stays unbroken.При более высоких значениях генерируются только достаточно большие фрагменты. Если ни одна из частей не имеет достаточного объема, тело остается целым.

Broken BodyСломанное тело#

After the body has been fractured, it acquires a Broken flag. Unsetting this flag puts the fractured mesh back into unbroken state. The broken body remains represented as one node in the UnigineEditor hierarchy. Generated fractured pieces are automatically represented as Fracture bodies and they inherit physical parameters of the fractured body (such as damping of linear and angular velocities, friction, restitution and masks).После того, как тело было сломано, для него включается флаг Broken. Снятие этого флага возвращает сломанный меш в неразрушенное состояние. Сломанное тело остается представленным в виде одной ноды в Иерархии UnigineEditor. Сгенерированные части с трещинами автоматически представляются как тела Fracture и наследуют физические параметры тела Fracture (например, демпфирование линейной и угловой скоростей, трение, восстановление и маски).

Примечание
Fractured pieces cannot be manipulated using the UnigineEditor!Расколотыми частями нельзя манипулировать с помощью UnigineEditor!

Fracture Surface MaterialМатериал поверхности разрушения#

When fracturing a mesh, it is necessary to set the material that will be applied to all newly created fracture surfaces. Those faces of fracture pieces that were external, keep the initial material.При разрушении меша необходимо указать материал, который будет применяться ко всем вновь созданным поверхностям расколотого тела. Те грани фрагментов, которые были внешними, сохраняют исходный материал.

Fracture Surface PropertyСвойство поверхности разрушения#

A new property for all fracture surfaces can also be assigned. They define game behavior and additional physical properties, however, body parameters override them.Также можно назначить новое свойство для всех поверхностей расколотого тела. Они определяют игровое поведение и дополнительные физические свойства, однако параметры тела переопределяют их.

Physics IntersectionsФизические пересечения#

Physics intersections can be used as a quick way to check if a destructible object was hit by a projectile. You can use the Physics Intersection Mask to enable selective intersection detection for a body (e.g., to make it hittable by certain projectiles). Physics intersections are detected only for matching bit masks.Физические пересечения можно использовать как быстрый способ проверить, попал ли в разрушаемый объект снаряд. Вы можете использовать Physics Intersection Mask, чтобы включить выборочное обнаружение пересечения для тела (например, чтобы сделать его уязвимым для определенных снарядов). Физические пересечения обнаруживаются только для сопоставления битовых масок.

Performance Optimization TipsСоветы по оптимизации производительности#

Although the Fracture body is a relatively inexpensive type, in case of large number of fracture pieces, the impact on performance may become significant. To avoid performance drops the following tips can be used:Хотя тело Fracture является относительно недорогим типом, в случае большого количества кусочков, на которые раскололся объект, влияние на производительность может стать значительным. Чтобы избежать падения производительности, воспользуйтесь следующими советами:

  • Use volume threshold parameter to reduce the number of fracture pieces.Используйте параметр Volume Threshold для уменьшения количества фрагментов.
  • Remove the pieces of a fractured body from the scene.Уберите осколки со сцены.

A code-based example, illustrating how to remove (fade with the time) the fracture pieces from the scene can be found in the Physics section of the UnigineScript samples.Пример на основе кода, иллюстрирующий, как удалить (заставить исчезнуть со временем) осколки со сцены, можно найти в разделе Physics примеров UnigineScript.

Assigning a Fracture BodyНазначение тела Fracture#

To assign a Fracture body to an object via UnigineEditor perform the following steps:Чтобы присвоить объекту тело Fracture через UnigineEditor, выполните следующие действия:

  1. Open the World Hierarchy window.Откройте окно World Hierarchy.
  2. Select Mesh Ddynamic object to assign a Fracture body to.Выберите объект Mesh Ddynamic, которому нужно присвоить тело Fracture.
  3. Go to the Physics tab in the Parameters window and assign a physical body to the selected object by selecting Body -> Fracture.Перейдите на вкладку Physics в окне Parameters и назначьте физическое тело выбранному объекту, выбрав Body -> Fracture.

    Adding a body

  4. Set body's name and change other parameters if necessary.Задайте название тела и при необходимости настройте другие параметры.
Последнее обновление: 23.06.2023
Build: ()