언어:
페이지 정보
태그:
엔진 버전:
언리얼 엔진

Collision 모듈

언리얼 엔진

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 모바일 디바이스에 프로젝트를 다시 디플로이하여 파티클 콜리전이 정상 작동하는지 확인합니다.

태그