오디오 이펙트는 나이아가라 시뮬레이션에서 일부 사운드를 재생할 때 사용합니다. 파티클 시뮬레이션이 다른 대상과 충돌하면 사운드를 재생하는 경우를 예로 들 수 있습니다. 나이아가라 시스템에는 이펙트를 재생하는 다양한 방법이 있습니다.
방법마다 장단점이 있습니다. 다음은 각 방법의 간단한 개요입니다.
이러한 방법의 예제는 에픽게임즈 런처(Epic Games Launcher) > 학습(Learn) > 엔진 피처 샘플(Engine Feature Samples) > 콘텐츠 예제(Content Examples) 에 있는 콘텐츠 예제 프로젝트(Content Examples project)에서 찾을 수 있습니다.
오디오 재생 모듈 사용하기
1회용 사운드 이펙트의 경우, 오디오 재생(Play Audio) 모듈이 나이아가라에서 사운드 이펙트를 재생하는 가장 간단한 방법입니다. 파티클 콜리전에 대한 반응처럼 이벤트 위주 이펙트에 유용합니다. 메모리 사용량이 가장 적은 솔루션이기도 합니다.
-
이미터에 오디오 재생(Play Audio) 모듈을 추가합니다. 파티클 업데이트 그룹(Particle Update Group)에 추가한 모듈은 파티클의 수명이 진행됨에 따라 계산됩니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
재생할 사운드(Sound to Play) 드롭다운 메뉴에서 사운드를 선택합니다. 콘텐츠 예제(Contents Example) 프로젝트를 열면 이미 여러 사운드가 프로젝트에 추가되어 있습니다.
-
오디오 재생(Play Audio) 조건을 설정합니다.
이 이펙트는 피치, 볼륨 등 설정된 값으로 한 번만 재생하는 이펙트입니다. 한 번 트리거된 이펙트는 변경하거나 멈출 수 없으며, 파티클 시뮬레이션이 멈춘 뒤에도 계속 재생됩니다.
오디오 재생 모듈 장점 단점 * 퍼포먼스가 가장 높은 솔루션(메모리 및 CPU 사용량) * 사운드 플레이 시작 후 볼륨, 피치 등의 사운드 프로퍼티 변경 불가 * 가장 쉬운 설정 * 파티클이 움직이는 동안 사운드의 위치 업데이트 불가
오디오 모듈 예제
-
콘텐츠 예제 프로젝트를 다운로드하고 실행합니다.
-
콘텐츠 드로어(Content Drawer)에서 Play audio 를 검색합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
오디오 재생 예제(Play Audio Example) 를 더블클릭해 나이아가라 시스템(Niagara System) 예제를 실행합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
이 프로젝트에는 다양한 타입의 오디오 예제가 있습니다. 오디오 재생 모듈을 사용하는 Play_Sound_On_Collision 이미터가 보일 것입니다. Mesh_Rotational_Velocity 이미터는 퍼시스턴트 오디오 재생(Play Persistent Audio) 모듈을 사용합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
퍼시스턴트 오디오 재생 모듈 사용하기
해당 모듈은 오디오 재생 모듈과 비슷하지만, 시간이 지나면서 업데이트할 수 있도록 스폰된 각 사운드 이펙트의 레퍼런스를 보관합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
해당 모듈을 사용하면 페이딩이나 사운드 큐 파라미터 세팅 같은 고급 기능을 이용할 수 있습니다. 다만, 작업에 퍼시스턴트 오디오 재생 , 퍼시스턴트 오디오 업데이트(Persistent Audio Update) 모듈이 필요하므로 첫 번째 방법보다는 약간 까다로울 수 있습니다.
두 모듈은 동일한 오디오 플레이어 레퍼런스를 사용합니다.
오디오 플레이어 데이터 인터페이스를 이미터 어트리뷰트로 생성하고 모듈에 연결할 수 있습니다. 위 스크린샷의 두 모듈에는 이미터 오디오 플레이어(Emitter.AudioPlayer) 레퍼런스가 포함되어 있습니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
이미터(EMITTER) 좌측의 사슬 기호는 이미터가 기존 어트리뷰트를 참조하고 있다는 뜻입니다.
기본적으로 모든 모듈은 다른 모듈에서는 사용할 수 없는 자체 오브젝트를 생성합니다. 여러 모듈에서 동일한 오브젝트를 사용하려면, 오브젝트를 이미터나 시스템 스폰 스크립트 내에 생성한 뒤 모듈에서 참조해야 합니다.
콘텐츠 샘플(Content Samples) 파일에서 퍼시스턴트 오디오 재생 모듈이 어떻게 작동하는지 확인하려면, 콘텐츠 드로어 에서 Play Audio 를 검색한 뒤 오디오 예제 재생(PlayAudio Example) 을 더블클릭하여 엽니다. Mesh_Rotational_Velocity 이미터를 찾습니다. 퍼시스턴트 오디오 재생(Play Persistent Audio) 모듈이 보일 것입니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
퍼시스턴트 오디오 재생 을 더블클릭해 노드 그래프(Node Graph) 를 엽니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
이 방법은 사운드를 파티클 위치와 함께 이동시키는 경우와 같이 시뮬레이션 도중에 사운드 프로퍼티를 변경해야 할 때 유용합니다.
퍼시스턴트 오디오 재생 모듈 | |
---|---|
장점 | 단점 |
* 런타임에 볼륨, 피치, 위치, 회전 변경 | * 설정이 더 복잡함 |
* 사운드 큐 파라미터 세팅 및 시뮬레이션이 정지 시 사운드 종료 | * 오디오 재생 모듈모다 낮은 퍼포먼스 |
* 카메라 거리에 따른 사운드 필터링 |
오디오 컴포넌트 렌더러 사용하기
오디오 컴포넌트 렌더러(Audio Component Renderer)는 실험단계입니다. 언리얼 엔진의 다른 실험단계 기능처럼 사용하세요.
오디오 컴포넌트 렌더러(Audio Component Renderer) 로 오디오 컴포넌트를 스폰할 수 있습니다. 오디오 컴포넌트 렌더러를 추가하려면 렌더(Render) 그룹에서 더하기 기호(+) 를 클릭합니다. 컴포넌트 렌더러(Component Renderer) 를 선택합니다.
컴포넌트 렌더러가 추가되면 선택(Selection) 패널에서 컴포넌트 타입(Component Type) 드롭다운 메뉴를 클릭한 다음 AudioComponent 를 선택합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
오디오 컴포넌트를 완전히 제어할 수 있어 유연성이 뛰어나지만, 파티클 시뮬레이션에서 오디오 재생 모듈의 모든 기능(페이딩, 거리 기반 필터링 등)을 다시 구현해야 한다는 단점이 있습니다. 또한, 커스텀 오디오 컴포넌트 서브클래스를 먼저 생성하지 않으면 사운드 큐 세팅을 지원하지 않습니다.
모듈의 컨트롤만으로는 부족한 특수한 경우 외에는 컴포넌트 렌더러를 사용하지 않는 것을 권장합니다.
오디오 컴포넌트 렌더러 | |
---|---|
장점 | 단점 |
* 유연성이 매우 뛰어남 | * 많은 기능이 빠져 있음 |
* 오디오에 대한 컨트롤 증가 | * 퍼포먼스가 낮음 |
* 사운드 큐 파라미터 설정 불가능 |
파티클 데이터를 블루프린트에 익스포트하기
필요에 맞게 활용할 방법이 따로 없는 경우, 파티클 데이터를 블루프린트 또는 C++로 익스포트해 오디오 로직을 구현할 수 있습니다.
파티클 데이터를 익스포트하려면 익스포트 파티클 데이터(Export Particle Data) 인터페이스를 사용합니다. 콘텐츠 예제 프로젝트에서 예제를 보려면 콘텐츠 드로어에서 파티클 익스포트(Export Particle) 로 검색합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
파티클 시뮬레이션에서 데이터를 익스포트하는 방법에 대해 더 자세히 알아보려면 ExportParticleDataExample 블루프린트를 더블클릭하세요.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
익스포트 데이터 인터페이스는 지연 시간이 약간 늘어나지만 GPU 이미터에서도 작동한다는 장점이 있습니다. 블루프린트에 필요한 데이터가 있다면, 오디오를 재생하고 포스트 프로세싱, 사용자 인터페이스(UI) 위젯 같은 여러 컴포넌트를 구동할 수도 있습니다.
오디오를 재생하는 가장 유연한 방법이지만, 속도가 가장 느리고 설정하기가 가장 복잡하다는 단점이 있습니다. 익스포트할 수 있는 데이터의 양에 따라 한계가 정해지므로, 오디오 컴포넌트 및 파티클 데이터 간 매핑도 직접 해야 합니다.
파티클 데이터를 블루프린트에 익스포트 | |
---|---|
장점 | 단점 |
* 가장 유연한 방식 | * 퍼포먼스가 가장 느림 |
* GPU에서 작동함 | * 모든 모듈 기능을 블루프린트 로직에서 다시 구현해야 함 |
* 설정이 복잡함 |