Collision 모듈

파티클과 액터의 충돌 처리를 담당하는 모듈입니다.

Windows
MacOS
Linux

Collision 모듈

파티클과 액터의 충돌 처리를 담당하는 모듈입니다.

Collision

이미터가 파티클의 충돌을 처리할 수 있도록 하는 파라미터입니다. 속한 멤버는 다음과 같습니다:

프로퍼티

설명

Collision

Damping Factor

감쇠 인수 - 충돌 이후의 파티클을 얼마나 '느리게' 할 지를 나타내는 벡터 분포입니다. 파티클 스폰시의 EmitterTime(이미터 시간)에 따라 값을 구하며, 파티클 내에 저장합니다.

Damping Factor Rotation

쇠 인수 회전 - 충돌 이후의 파티클 회전을 얼마나 '느리게' 할 지를 나타내는 벡터 분포입니다. 파티클 스폰시의 이미터 시간에 따라 값을 구하며, 파티클 내에 저장합니다.

Max Collisions

최대 콜리전 - 파티클이 가질 수 있는 콜리전의 최대 갯수를 나타내는 실수 분포입니다. 파티클 스폰시의 이미터 시간에 따라 값을 구합니다.

Collision Completion Option

콜리전 완료 옵션 - MaxCollision(최대 콜리전)에 도달했을 때 파티클을 어찌할까를 나타내는 Enum 입니다. 다음 중 하나입니다:

옵션

설명

EPCC_Kill

킬 - MaxCollision(최대 콜리전)에 도달했을 때 파티클을 죽입니다. (기본 작동법입니다.)

EPCC_Freeze

얼림 - 자리에 있는 파티클을 얼립니다.

EPCC_HaltCollisions

충돌 중지 - 콜리전 검사를 멈추되 업데이트는 유지합니다. 파티클이 오브젝트를 '뚫고 떨어질' 수가 있습니다.

EPCC_FreezeTranslation

트랜슬레이션 얼림 - 파티클의 트랜슬레이션은 멈추되 나머지는 계속 업데이트합니다.

EPCC_FreezeRotation

로테이션 얼림 - 파티클의 로테이션은 멈추되 나머지는 계속 업데이트합니다.

EPCC_FreezeMovement

무브먼트 얼림 - 파티클의 트랜슬레이션/로테이션은 멈추되 나머지는 계속 업데이트합니다.

Apply Physics

피직스 적용 - 파티클과 충돌하는 오브젝트에 물리를 적용할 지 여부를 나타내는 부울입니다.

현재 이 기능은 파티클 에서 오브젝트 로 일방향입니다. 파티클에 피직스가 적용되지는 않고, 단지 충돌하는 오브젝트에 충격을 가할 뿐입니다.

Particle Mass

파티클 질량 - bApplyPhysics(피직스 적용)이 True 일때 사용할 파티클의 질량을 나타내는 실수 분포입니다. 파티클의 스폰시 이미터 시간에 따라 값을 구합니다.

Dir Scalar

방향 스칼라 - 상호관통이나 큰 틈을 피하기 위해 '지원할' 파티클의 경계를 스케일하는 데 사용되는 플로트 값입니다.

Pawns Do Not Decrement Count

폰 갯수 제외 - True 면 폰과 충돌 반응은 합니다만 최대 충돌 갯수에 포함시키지 않습니다. 파티클이 폰에 튕긴 다음 허공에서 얼어버리지 않게 할 수 있습니다.

Only Vertical Normals Decrement Count

세로 노멀 갯수만 치기 - True 면 세로 힛 노멀을 갖지 않은 콜리전은 반응이야 합니다만 최대 콜리전 갯수로 치지 않습니다. 파티클이 벽에 튕긴 다음 바닥에 놓이게 할 수 있습니다.

Vertical Fudge Factor

세로 조작 인수 - 뭐가 세로인지 정하는 데 사용되는 플로트 값입니다. 실제 세로는 Hit.Normal.Z == 1.0f 값을 갖습니다만, [1.0-VerticalFudgeFactor..1.0] 범위의 Z 성분을 세로 콜리전으로 칠 수 있습니다.

Delay Amount

지연 기간 - 파티클의 콜리전 검사 전 대기할 기간입니다. 이미터 시간을 사용하여 값을 구합니다. 업데이트 도중에는 파티클 RelativeTime(상대 시간)이 Delay Amount (지연 기간)만큼 지나기 전까지는 IgnoreCollision(콜리전 무시) 파티클 플래그가 설정됩니다.

Performance

Drop Detail

디테일 버림 - 이것도 참이고 WorldSettings 의 Drop Detail 속성도 True 면 모듈은 무시됩니다.

Collide Only if Visible

보일 때만 충돌 - True 면 파티클 시스템이 렌더링되어 있을 때만 콜리전이 일어납니다.

Max Collision Distance

최대 충돌 거리 - 파티클 콜리전이 일어날 수 있는 최대 거리입니다.

Collision (콜리전) 모듈은 파티클 페이로드 데이터에다 벡터 둘(UsedDampingFactor(사용된 감쇠 인수) 및 UsedDampingFactorRotation(사용된 감쇠 인수 회전))과 정수 하나(UsedMaxCollisions(사용된 최대 콜리전))를 추가시키는 모듈입니다. 이 값들은 파티클별 콜리전 정보를 추적하는 데 사용됩니다.

다음은 콜리전 파티클에 대한 업데이트 절차를 설명한 의사 코드입니다.

파티클의 위치를 정합니다. 이게 필요한 이유는 
Update 호출 전까지는 실제 위치가 계산되지 않기 때문입니다.
선 검사시 사용하기 적합한 규모를 정합니다.
if (SingleLineCheck 결과 충돌을 나타내면)
{
    if (UsedMaxCollisions-- > 0)  // 아직 충돌 가능한 것이니
    {
        충돌에 따라 속도와 회전을 조절하고
        if (물리 적용중이면)
        {
            적중 오브젝트에 자극을 적절히 더해줍니다.
            (질량은 파티클 시간에 상대적으로 분포를 통해서 
                구해 옵니다.)
        }
    }
    else
    {
        이 파티클엔 충돌되지 않은 것이니
        CollisionCompletionOption 에 따라 적절한 조치를 취합니다.
    }
}

iOS 모바일 디바이스에서의 파티클 콜리전

Particle Collision (파티클 콜리전) 모듈을 iOS 모바일 디바이스용 VFX 와 함께 사용할 때는, Min Desired Frame Rate (최소 선호 프레임 속도)를 30 FPS 미만으로 낮추지 않으면 파티클 콜리전이 월드의 오브젝트와 충돌하지 않을 확률이 높습니다. 왜냐하면 언리얼 엔진 4 (UE4) 프로젝트의 프레임 속도가 30FPS 미만으로 떨어지면, UE4 는 30FPS 이상으로 유지시키기 위해 파티클 콜리전을 끕니다. 기본적으로 iOS 프로젝트는 30FPS 로 고정되어 있는데, 디자인상 파티클 콜리전이 처음부터 꺼진 상태라는 뜻입니다. 이런 일이 발생하지 않도록 하기 위해 UE4 iOS 프로젝트는 먼저 프로젝트 세팅 > 일반 세팅 > Framerate (프레임 속도)로 먼저 가야 합니다.

프레임 속도 섹션이 열렸으면, Min Desired Frame Rate (최소 선호 프레임 속도) 를 30 FPS 미만, 예를 들면 25 FPS 정도로 설정합니다. 그런 다음 파티클 이펙트 Collision 모듈의 Performance (퍼포먼스) 섹션 아래 Drop Detail (디테일 드롭) 옵션 체크를 해제합니다.

Drop_Detail_CM_Box.png

최소 선호 프레임 속도를 변경하고 디테일 드롭 박스 체크를 해제하고나면, 다시 쿠킹하고 iOS 모바일 디바이스에 프로젝트를 다시 디플로이하여 파티클 콜리전이 정상 작동하는지 확인합니다.

태그
Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼