Collision Modules в Unreal Engine 4

0
120
Collision Modules в Unreal Engine 4

Collision Modules

Эти модули управляют тем, как частицы будут иметь дело со столкновениями с Актером.

Коллизия

Параметры для наличия столкновений частиц эмиттера. Он содержит следующие компоненты:

СвойствоОписание
Collision
Damping FactorВекторное распределение указывает, на сколько «замедлить» частицу после столкновения. Значение извлекается на основе EmitterTime на пороге частицы и хранится в частице.
Damping Factor RotationВекторное распределение указывает, на сколько «замедлить» вращение частицы после столкновения. Значение извлекается на основе EmitterTime на пороге частицы и хранится в частице.
Max CollisionsРаспределение плавающего значения float, указывающее максимальное количество столкновений, которое может иметь частица. Значение извлекается на основе EmitterTime на пороге частицы.
Collision Completion OptionПеречисление, указывающее, что должно произойти с частицей после достижения MaxCollisions. Это может быть одно из следующего:

ОпцияОписание
EPCC_KillУбивает частицу при достижении MaxCollisions. (Это поведение по умолчанию.)
EPCC_FreezeЗамораживает частицу на месте.
EPCC_HaltCollisionsОстанавливает проверку конфликтов, но продолжает обновление. Это, вероятно, приведет к falling (падение) частиц через объекты.
EPCC_FreezeTranslationОстанавливает трансляцию частицы, но продолжает обновлять все остальное.
EPCC_FreezeRotationОстанавливает вращение частицы, но продолжает обновлять все остальное.
EPCC_FreezeMovement
Прекращает трансляцию/вращение частицы, но продолжает обновлять все остальное.
Apply PhysicsЛогическое значение указывает, следует ли применять физику между частицей и объектом, с которым она сталкивается.

В настоящее время это односторонне: частица – к объекту. У частицы нет физической применимости к ней – она ​​просто генерирует импульс, применяемый к объекту, с которым он сталкивается.
Particle MassРаспределение плавающего значения float с указанием массы частицы – для использования, когда значение для bApplyPhysics – true. Значение извлекается на основе EmitterTime на пороге частицы.
Dir ScalarЗначение плавающего float, которое используется для масштабирования границы частицы, чтобы «помочь» во избежании взаимопроникновения или больших разрывов.
Pawns Do Not Decrement CountЕсли значение – true, столкновения с Пешками все равно будут реагировать, но не учитываться в MaxCollisions. Это позволяет отскакивать частицам от Пешки, но не задерживать их в воздухе.
Only Vertical Normals Decrement CountЕсли значение – true, столкновения, которые не имеют нормального вертикального удара, будут реагировать, но не учитываться в MaxCollisions. Это позволяет частицам отскакивать от стен и лежать на полу.
Vertical Fudge FactorПлавающее значение float, используемое для определения того, что является вертикальным. TRUE vertical будет иметь значение Hit.Normal.Z == 1.0f. Это позволяет считать компоненты Z в диапазоне [1.0-VerticalFudgeFactor..1.0] вертикальным столкновением.
Delay AmountКак долго задерживаться перед проверкой частицы для столкновения. Значение извлекается с использованием EmitterTime. Во время обновления флажок IgnoreCollisions с флажком частиц будет установлен до тех пор, пока частица RelativeTime не превзойдет Delay Amount (сумму задержки).
Performance
Drop DetailЕсли указано значение – true, модуль будет проигнорирован, если свойство Drop Detail для WorldSettings также – true.
Collide Only if VisibleЕсли указано значение true, столкновение возникает только в случае обработки системы частиц.
Max Collision DistanceМаксимальное расстояние, на котором произойдет столкновение частиц.

Модуль Collision добавит два вектора (UsedDampingFactor и UsedDampingFactorRotation) и целое число (UsedMaxCollisions) к данным полезной нагрузки частиц. Эти значения используются для отслеживания информации о столкновениях на частицу.

Следующий псевдокод объясняет процесс обновления частиц столкновения.

Determine the location of the particle. This is required due to the fact
that the actual location isn't calculated until after the Update call.
Determine the appropriate extent to use during the line check.
if (SingleLineCheck indicates collision)
{
    if (UsedMaxCollisions-- > 0)  // Still collisions available
    {
        Adjust the velocity and rotation based on the collision
        if (Applying physics)
        {
            Add an appropriate impulse to the hit object.
            (The Mass is grabbed from the distribution relative to the
                particle time.)
        }
    }
    else
    {
        Out of collisions for this particle
        Perform the appropriate action to take based on the CollisionCompletionOption
    }
}

Столкновение частиц на мобильных устройствах iOS

При использовании модуля Collicle Collision с VFX, предназначенного для мобильных устройств iOS, вам нужно будет отрегулировать Min Desired Frame Rate (минимальную частоту кадров) менее, чем на 30 кадров или ваши столкновения частиц будут иметь высокую вероятность не столкнуться с объектами в мире. Это связано с тем, что когда частота кадров любого проекта Unreal Engine 4 (UE4) опускается ниже 30 FPS (кадров), UE4 отключит столкновения частиц, пытаясь сохранить частоту кадров выше 30 FPS. По умолчанию проекты iOS заблокированы до 30FPS, а это означает, что при столкновении с конструкцией частицы будут отключены с самого начала. Чтобы убедиться, что этого не происходит с вашим проектом UE4 iOS, вам нужно сначала перейти к Project Settings > General Settings > Framerate.

Collision Modules в Unreal Engine 4После того, как секция Framerate будет открыта, установите Min Wantired Frame Rate на значение менее 30 FPS (кадров), например 25 FPS. Затем в разделе Performacne в Collision module вашего эффекта частиц снимите флажок Drop Detail.флажок Drop Detail ue4

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

 

 

 

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите свой комментарий!
Пожалуйста, введите ваше имя: