동적 액터와의 기본 상호작용
이전 절에서는 나이아가라 파티클이 정적인 환경 오브젝트(스태틱 메시)와 충돌하는 기본적인 방법을 배웠습니다. 이제는 파티클이 게임 월드 내에서 움직이는 오브젝트, 즉 동적 액터(Dynamic Actor) 나 특히 스켈레탈 메시(Skeletal Mesh) 와 어떻게 상호작용하고 충돌하는지에 대해 알아보겠습니다. 이는 캐릭터의 피격 효과, 움직이는 차량에서 뿜어져 나오는 연기, 몬스터의 특정 부위에서 발생하는 마법 효과 등 더욱 복잡하고 상호작용적인 비주얼을 구현하는 데 필수적인 기술입니다.
동적 액터와의 상호작용은 단순히 충돌을 감지하는 것을 넘어, 액터의 움직임에 파티클이 반응하거나, 액터의 특정 위치에 파티클을 부착하는 등의 다양한 형태를 포함합니다.
동적 액터와의 콜리전
정적 메시와 달리, 동적 액터, 특히 애니메이션되는 스켈레탈 메시와의 콜리전은 Distance Field
만으로는 충분히 정확하거나 효율적이지 않을 수 있습니다. 이때 주로 사용되는 방법은 다음과 같습니다.
Trace
콜리전 모드 활용
Collision
모듈의Collision Mode
:Trace
로 설정합니다.Trace
모드는 파티클의 움직임 경로를 따라 광선(Ray)을 발사하여 충돌을 감지합니다. 이는 움직이는 오브젝트에 대해 비교적 정확한 충돌 감지를 제공합니다.
- 콜리전 채널 설정
Trace
모드를 사용할 때는 파티클이 어떤 콜리전 채널을 가진 액터와 충돌할지 설정해야 합니다.Collision
모듈의Trace Channel
속성에서 적절한 채널(예:Visibility
,WorldDynamic
,PhysicsBody
)을 선택합니다.- 충돌하고자 하는 동적 액터의 메시 컴포넌트(Static Mesh Component 또는 Skeletal Mesh Component)의
Collision Presets
에서 해당 채널에 대한Block
응답이 설정되어 있는지 확인해야 합니다.
- 단점: 많은 수의 파티클이 동시에 트레이스 콜리전을 수행할 경우 성능 비용이 높아질 수 있습니다.
스켈레탈 메시 전용
스켈레탈 메시와의 상호작용에는 Niagara Data Interface Skeletal Mesh
를 활용하는 것이 가장 강력하고 유연한 방법입니다. 이 데이터 인터페이스는 스켈레탈 메시의 본(Bone), 소켓(Socket), 메시 표면 등 애니메이션되는 기하학적 정보를 나이아가라 시스템에 직접 노출시킵니다.
- 주요 활용
- 스켈레탈 메시의 소켓에 파티클 부착: 캐릭터의 손, 발, 머리 등 특정 소켓에 파티클을 스폰하거나 부착하여 캐릭터와 함께 움직이게 합니다.
- 스켈레탈 메시 표면에 파티클 스폰: 캐릭터의 몸에서 먼지, 물방울, 피격 이펙트 등이 뿜어져 나오게 합니다.
- 스켈레탈 메시의 본을 따라 파티클 이동: 몬스터의 꼬리나 촉수 등 움직이는 본을 파티클이 따라가게 합니다.
- 스켈레탈 메시의 콜리전 데이터 활용: 스켈레탈 메시의 물리 에셋(Physics Asset)이나 콜리전 바디를 참조하여 파티클 콜리전을 수행합니다.
동적 액터에 파티클 시스템 부착하기
가장 기본적인 동적 상호작용은 나이아가라 시스템 자체를 동적 액터에 부착(Attach) 하는 것입니다.
- 블루프린트에서 부착
캐릭터나 차량과 같은 동적 액터의 블루프린트 클래스를 엽니다.
Components
패널에서Add
버튼을 클릭하고Niagara Particle System
컴포넌트를 추가합니다.추가된
Niagara Particle System
컴포넌트를 선택하고,Details
패널에서Niagara System
속성에 여러분의 나이아가라 시스템 에셋(예:NS_BasicSpawn
)을 할당합니다.컴포넌트 트리의 부모를 드래그하여 특정 스켈레탈 메시의 소켓(Socket) 아래에 배치하면, 파티클 시스템이 해당 소켓에 부착되어 캐릭터와 함께 움직입니다.
- 활용 예시
- 캐릭터가 발걸음을 뗄 때 발밑에서 발생하는 먼지 효과.
- 총구에서 발생하는 총구 화염 효과.
- 엔진에서 뿜어져 나오는 차량 배기 가스.
사용자 정의 데이터 인터페이스를 전달
더욱 복잡한 상호작용을 위해서는 사용자 정의 데이터 인터페이스를 통해 액터의 특정 데이터를 나이아가라 시스템에 직접 전달할 수 있습니다.
Niagara Data Interface Actor
: 특정 액터를 참조하여 그 액터의 위치, 회전, 스케일 등 기본 정보를 가져올 수 있습니다. 이를 파티클의 스폰 위치나 기타 속성 제어에 활용합니다.Niagara Data Interface Skeletal Mesh
(다시 강조): 이미 설명했듯이, 스켈레탈 메시의 본/소켓/표면 정보를 나이아가라에 전달하는 가장 강력한 방법입니다.
직접 해보기: 캐릭터 발 밑에 먼지 효과 부착
이 기능은 블루프린트 연동이 필수적이므로 실제 실습보다는 개념적인 설명을 통해 이해도를 높이겠습니다.
나이아가라 시스템 생성: 바닥에서 솟아오르는 먼지나 연기 같은 작은 효과 (NS_FootDust
)를 만듭니다. Spawn Rate
는 낮게, Lifetime
은 짧게, Sprite Size
는 작게, Add Velocity
는 Z축으로 살짝 위로 설정합니다.
캐릭터 블루프린트 열기: 언리얼 엔진의 기본 캐릭터 블루프린트 (BP_ThirdPersonCharacter
또는 유사한 것)를 엽니다.
Niagara Particle System
컴포넌트 추가
Components
탭에서Add
버튼을 클릭하고Niagara Particle System
컴포넌트를 추가합니다.- 새로 추가된 컴포넌트를 선택하고
Niagara System
속성에NS_FootDust
시스템을 할당합니다.
컴포넌트 부착
Niagara Particle System
컴포넌트를 드래그하여 스켈레탈 메시 컴포넌트 (Mesh
) 아래로 이동시킵니다.Details
패널에서Parent Socket
속성을 찾습니다. 이 속성을 클릭하고 캐릭터의 발에 해당하는 본(예:foot_l
,foot_r
)을 선택합니다.Location
,Rotation
,Scale
오프셋을 조절하여 파티클 시스템이 발밑에 정확히 위치하도록 합니다.
컴포넌트 활성화/비활성화 제어 (선택 사항)
- 캐릭터 블루프린트의
Event Graph
에서Event Tick
이나 특정Movement
이벤트에 따라Niagara Particle System
컴포넌트의Activate
또는Deactivate
노드를 사용하여 파티클 효과를 켜고 끌 수 있습니다. (예: 캐릭터가 움직일 때만 먼지 효과 활성화)
성능 고려 사항
Trace
콜리전: 복잡한 환경에서 많은 파티클이Trace
콜리션을 수행하면 CPU 비용이 높아질 수 있습니다.Max Collisions
를 제한하고, 필요한 경우에만 사용합니다.- 스켈레탈 메시 데이터 인터페이스: 스켈레탈 메시의 본이나 표면 데이터를 나이아가라로 스트리밍하는 데는 비용이 발생합니다. 특히 복잡한 스켈레탈 메시의 모든 본을 추적하거나, 많은 수의 파티클이 메시 표면을 참조할 경우 성능에 영향을 줄 수 있습니다.
- 컴포넌트 부착: 파티클 시스템을 액터에 부착하는 것은 비교적 효율적이지만, 부착된 시스템의 파티클 수가 너무 많거나 복잡한 연산을 수행하면 액터 자체의 업데이트 비용을 증가시킬 수 있습니다.
- LOD 및 최적화: 동적 액터와의 상호작용 효과도 LOD(Level of Detail) 및 스케일러빌리티 설정을 통해 최적화해야 합니다. 멀리 있는 액터의 파티클 효과는 단순화하거나 비활성화합니다.
동적 액터와의 상호작용은 나이아가라 파티클 시스템의 강력한 기능 중 하나입니다. 이를 통해 여러분의 시각 효과가 게임 월드의 움직이는 요소들과 유기적으로 연결되어, 훨씬 더 생동감 있고 몰입감 있는 경험을 제공할 수 있게 됩니다. 스켈레탈 메시와의 콜리전 및 데이터 연동은 특히 캐릭터나 몬스터의 애니메이션과 밀접하게 연관된 효과를 만드는 데 필수적인 기술입니다.