Choose your operating system:
Windows
macOS
Linux
Collision 모듈
파티클과 액터의 충돌 처리를 담당하는 모듈입니다.
Collision
이미터가 파티클의 충돌을 처리할 수 있도록 하는 파라미터입니다. 속한 멤버는 다음과 같습니다:
프로퍼티 |
설명 |
||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Collision |
|||||||||||||||
Damping Factor |
감쇠 인수 - 충돌 이후의 파티클을 얼마나 '느리게' 할 지를 나타내는 벡터 분포입니다. 파티클 스폰시의 EmitterTime(이미터 시간)에 따라 값을 구하며, 파티클 내에 저장합니다. |
||||||||||||||
Damping Factor Rotation |
쇠 인수 회전 - 충돌 이후의 파티클 회전을 얼마나 '느리게' 할 지를 나타내는 벡터 분포입니다. 파티클 스폰시의 이미터 시간에 따라 값을 구하며, 파티클 내에 저장합니다. |
||||||||||||||
Max Collisions |
최대 콜리전 - 파티클이 가질 수 있는 콜리전의 최대 갯수를 나타내는 실수 분포입니다. 파티클 스폰시의 이미터 시간에 따라 값을 구합니다. |
||||||||||||||
Collision Completion Option |
콜리전 완료 옵션 - MaxCollision(최대 콜리전)에 도달했을 때 파티클을 어찌할까를 나타내는 Enum 입니다. 다음 중 하나입니다:
|
||||||||||||||
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 (디테일 드롭) 옵션 체크를 해제합니다.
최소 선호 프레임 속도를 변경하고 디테일 드롭 박스 체크를 해제하고나면, 다시 쿠킹하고 iOS 모바일 디바이스에 프로젝트를 다시 디플로이하여 파티클 콜리전이 정상 작동하는지 확인합니다.