이 튜토리얼은 Unreal Wwise 통합에서 제공하는 Spatial Audio 기능을 설명합니다. 이 튜툐리얼에서는 게임에 공간 음향을 통합하는 작업 과정을 설명하며 Wwise 저작 도구에서 공간 음향 기능 (예: 3D 버스, 3D로 공간화된 Sound SFX, Reflect Effect 플러그인) 초기화하기에 대한 기술적인 정보를 제공합니다.
이 튜토리얼은 여러 섹션으로 구분되어 있습니다. A - Spatial Audio 튜토리얼 준비 'A'에서는 프로젝트 준비하기를 도와주며 그 후의 각 섹션에서는 각 Spatial Audio 기능을 다룹니다. 이 섹션은 각각 따로 실행해볼 수 있습니다.
|
참고: |
섹션에서 Reflect 플러그인을 사용하는 사운드뱅크를 생성하려면 알맞은 라이선스가 필요합니다. |
A - Spatial Audio 튜토리얼 준비
|
참고: |
모든 튜토리얼의 매개 변수가 있는 맵은 Wwise 런처에서 제공하는 Unreal Demo Game의 일부로 제공됩니다. 해당 맵을 따라해보시려면 이 섹션을 스킵하셔도 됩니다. 이 맵의 이름은 SpatialAudioTutorialMap입니다. |
A.1. 새로운 프로젝트 만들기
작업 환경을 빌드하려면 아래 단계를 실행해주세요 (Wwise 2019.2와 Unreal 4.24 사용에 따라).
- Epic 런처에서 Unreal을 시작하세요.
- 새로운 Unreal Project C++ Blank 프로젝트를 생성하세요 (스타터 콘텐츠 없이).
- Unreal을 닫으세요.
- Wwise 런처를 시작하세요.
- Wwise를 설치하세요.
- Unreal Engine 탭을 선택하세요.
-
Integrate Wwise into Project... 버튼을 클릭하세요.
-
Open in Wwise 버튼을 사용하여 Wwise를 시작하세요.
-
Open in Unreal 버튼을 사용하여 Unreal을 시작하세요.
A.2. Wwise 프로젝트 준비
튜토리얼에서는 재생할 Sound SFX와 이 사운드를 재생할 Event가 필요합니다.
- Wwise 프로젝트에서 Actor-Mixer Hierarchy의 Default Work Unit 안에 새로운 Sound SFX를 만들고 사운드를 가져오세요.
- General Settings 탭에서 Use game-defined auxiliary sends를 반드시 활성화해주세요.
Sound SFX 만들기
- Positioning 탭에서 Listener Relative Routing을 활성화하고 3D Spatialization을 Position + Orientation으로 설정한 후 Max 거리가 5000인 Attenuation을 추가하세요.
3D Spatialization을 Position + Orientation으로 설정
- Actor-Mixer Hierarchy 안에 있는 Sound SFX를 우클릭한 후 New Event > Play를 선택하세요.
사운드 Event 만들기
- 프로젝트를 저장하세요.
A.3. Unreal 프로젝트 준비하기
- 원하는 방식으로 바닥을 만든 후 두 개의 공간이 있는 건물을 세우고 바깥에 장애물을 배치하세요. SpatialAudioTutorialMap에는 이 빌딩에 사용할 커스텀 메쉬와 밖에 있는 장애물에 사용할 기본 정육면체 고정 메쉬 컴포넌트가 제작되어 있습니다.
- 씬에 이미터를 배치하세요.
- 이전 하위 섹션에서 만든 Event를 Waapi 피커에서 Content Browser로 드래그하세요.
Wwise Picker에서 Content Browser로 드래그하기
- Content Browser에서 Event를 더블 클릭하고 SoundBank 목록에서 새로운 SoundBank를 직접 만드세요.
SoundBank 만들기
SoundBank 선택하기
- 해당 Event를 씬으로 드래그하여 새로운
AkAmbientSound
액터를 만드세요.
- 한 액터는 바깥에 배치하고 다른 액터는 각 공간 안에 배치하세요.
SpatialAudioTutorialMap
- Blueprints 메뉴에서 Level Blueprint를 열고 'Event BeginPlay'와 'Event Tick'을 제거하세요.
- 사용자 입력을 통해 이벤트를 트리거하세요.
- 새로 만든 AkAmbientSound를 World Outliner에서 블루프린트로 드래그하세요.
- AkAmbientSound 노드에서 'Post Associated Ak Event"' 함수를 찾으세요.
- 블루프린트 배경을 우클릭하고 'Left Mouse Button'을 검색하세요.
- Pressed 배출구를 'Post Associated Ak Event' Exec와 연결하세요.
- 모든 AkAmbientSound 요소에 동일한 단계를 반복하세요.
환경음을 트리거할 사용자 입력 추가하기
- Level Blueprint를 저장하고 닫으세요.
A.4. 셋업 검토하기
- 상위 메뉴에서 Build > Generate SoundBanks....를 선택하여 Windows용 SoundBank를 생성하세요.
- Output Log에서 뱅크가 성공적으로 생성되었는지 확인하세요.
빌드 메뉴에서 SoundBank 생성 확인하기
- 씬을 시작하세요. 버튼을 반복적으로 누르면 3D로 공간화된 사운드가 들립니다.
- Wwise Authoring에 연결하고 Profiler 레이아웃 (단축키 F6)을 여세요.
- 씬에서 사운드를 재생하면 아래와 비슷한 그래프가 보입니다.
Outside 버튼 Voices Graph
B - 반사
이 섹션에서는 Spatial Audio Geometry를 사용하여 Reflect 플러그인으로 반사적 표면을 전송해봅시다. 그렇게 하면 음향 환경에서 소리의 전달을 통해 초기 반사를 시뮬레이션할 수 있습니다.
B.1. Wwise 프로젝트
- 기본 Acoustic Texture와 초기 반사 Auxiliary Bus의 프리셋에 접근하려면 Reflect Factory Asset을 가져와야 합니다.
- Project > Import Factory Assets...로 이동하세요
- Reflect를 선택하고 OK를 누르세요.
- 기본 프리셋을 사용하여 초기 반사 Auxiliary Bus를 만드세요.
- Master-Mixer Hierarchy에서 Master Audio Bus를 우클릭하세요
- New Child > Presets로 가서 Early Reflection Auxiliary Bus를 선택하세요
- Effects 탭에서 효과를 더블 클릭하세요
- Max Distance를 최소 5,000으로 설정하세요. 이 값은 A.2. Wwise 프로젝트 준비 에서 설정한 사운드의 최대 거리 감쇠값입니다.
- Sound의 Speed를 34,500으로 설정하세요
Reflect Speed of Sound와 Max Distance 설정하기
-
A.2. Wwise 프로젝트 준비 에서 만든 사운드의 Sound SFX Sound Property Editor로 이동하세요.
- General Settings 탭에서 Reflect Effect under Early Reflections를 사용하는 새로운 Auxiliary Bus를 만드세요.
Wwise의 사운드에서 Reflect 활성화하기
- 프로젝트를 저장하세요.
B.2. Unreal 프로젝트
이 프로젝트에서 건물, 바닥, 장애물이 소리를 반사시키도록 만들어야 합니다. 이렇게 소리를 반사시키는 방법에는 AkSpatialAudioVolume이나 AkGeometryComponent를 사용하는 두 가지 방법이 있습니다.
AkGeometryComponent는 고정 메쉬 액터에 추가할 수 있습니다. 이 컴포넌트는 고정 메쉬 지오메트리를 공간 음향으로 자동 전송합니다. 또한 간단한 충돌 메쉬를 전송하도록 설정할 수도 있습니다. 이 컴포넌트는 단순한 모양에 사용하는 것이 적합합니다. 너무 많은 삼각형을 공간 음향으로 전송할 경우 계산이 복잡해지기 때문에 삼각형의 개수를 제한하는 것이 좋습니다.
AkSpatialAudioVolume은 브러쉬 볼륨입니다. 이 볼륨은 오브젝트 주위에 직접 추가하고 변형해야 합니다. 고정 메쉬가 복잡할 경우 이 볼륨을 사용하여 메쉬 주변으로 간단한 모양을 만들 수 있습니다.
- SpatialAudioTutorialMap에서 이 장애물은 기본 고정 메쉬입니다. 이 메쉬에 AkGeometryComponent 를 손쉽게 추가할 수 있습니다.
- 액터를 클릭하고 Add Component를 클릭하세요. Ak Geometry를 선택하세요.
- Geometry 섹션에서 Simple Collision을 선택하세요
AkGeometryComponent
- 바닥에도 동일한 단계를 반복하세요.
- SpatialAudioTutorialMap에서 이 건물은 커스텀 메쉬로 제작되었습니다. 건물의 모양이 AkGeometryComponent를 사용할 정도로 충분히 기본적이지만 이 튜토리얼에서는 AkSpatialAudioVolume 을 사용해봅시다. AkSpatialAudioVolume을 사용할 경우 유일한 단점은 건물의 문이 있는 위치에 열린 부분을 만드는 것이 꽤나 지루한 작업이라는 것입니다.
- 세 개의
AkSpatialAudioVolume
을 씬 안으로 드래그하세요
- 한 볼륨은 건물의 외벽 주변에 두세요.
- 나머지 두 개는 각 공간의 내벽 주변에 두세요.
- 세 개의
AkSpatialAudioVolume
에서 'Enable Surface Reflectors'가 모두 활성화되었는지 확인하세요.
- 'Enable Room'과 'Enable Late Reverb'는 선택하지 않은 채로 두세요. 이 부분에 대해서는 C - 공간과 포털 에서 더 다루도록 하겠습니다.
Enable Surface Reflector가 활성화된 Spatial Audio Volume
B.3. 셋업 검토하기
- SoundBank를 생성하세요.
- 씬을 시작하고 Wwise Authoring에 연결하세요.
- Advanced Profiler의 Voices Graph 뷰에서 Reflect Effect를 사용하는 새로운 보조 센드가 보입니다.
- 플레이어의 시작 위치에서 바깥에 배치된 사운드를 재생하세요.
Reflect를 사용하는 Outside 버튼 Voices Graph
|
참고: |
플레이어가 바깥에 있을 때 공간 안에 있는 사운드 중 하나를 재생하면 아무 소리도 들리지 않으며 반사 전송도 보이지 않습니다. 그 이유는 건물과 각 공간 주변에 닫힌 AkSpatialAudioVolume을 만들어두었기 때문입니다. 이 볼륨의 브러쉬 오브젝트를 변경하거나 Spatial Audio Portal (C - 공간과 포털 참고)을 사용하면 공간에서 열린 부분을 만들 수 있습니다. |
- 다음 단계로 넘어가기 전에 Profiler Settings 뷰를 열어서 Spatial Audio가 활성화되었는지 확인하세요.
- Game Object Profiler 레이아웃 (단축키 F12)으로 이동하세요.
- 플레이어 카메라와 세 이미터를 주시하세요.
- Game Object 3D Viewer에서 서로 다른 반사적 표면이 보입니다.
- 사운드를 재생하면 초기 반사가 레이가 표시되어 사운드가 들려오는 위치를 보여줍니다.
초기 반사를 보여주는 Game Object 3D Viewer
- 레이가 보이지 않을 경우 Game Object 3D Viewer Settings에서 Reflection Paths가 활성화되었는지 확인하세요.
초기 반사를 보여주는 Game Object 3D Viewer
|
참고: |
Game Object 3D 뷰어에서 지오메트리가 보이지 않을 경우 Monitor Queue Pool Size를 늘여야 할 수 있습니다. 이 설정은 초기화 설정 에 있습니다. |
C - 공간과 포털
실제 음향 환경에서는 닫힌 공간에 있는 사운드가 문이나 창문과 같은 열린 부분을 통해 전달됩니다. Spatial Audio Room과 Portal은 공간 안에서 포털만을 통해 소리를 방사하여 이 효과를 시뮬레이션합니다.
C.1. Wwise 프로젝트
- Wwise 프로젝트에서 각 공간에 새로운 Auxiliary Bus를 만드세요.
- 하위 Auxiliary Bus를 추가하려는 곳을 우클릭하세요
- New Child > Presets로 가서 Room Auxiliary Bus를 선택하세요
- Effects 탭에서는 RoomVerb Effect를 변경할 수 있습니다.
Auxiliary Bus에 잔향 효과를 추가하세요
-
A.2. Wwise 프로젝트 준비 에서의 Sound SFX로 이동하세요.
- Positioning 탭에서 'Enable Diffraction' 체크 상자가 선택되었는지 확인하세요.
Wwise에 있는 사운드에 회절 활성화하기
- 프로젝트를 저장하세요.
C.2. Unreal 프로젝트
- Unreal에서 새로운 Auxiliary Bus를 Waapi Picker에서 Content Browser로 드래그하세요.
- 이 Auxiliary Bus를 더블 클릭하여 뱅크를 지정하세요.
-
B.2. Unreal 프로젝트 에서 만들었던 각 공간에 배치된 AkSpatialAudioVolume을 선택하세요.
- 'Enable Late Reverb'와 'Enable Room'이 모두 활성화되었는지 확인하세요.
- Late Reverb Section에서 새로 가져온 Auxiliary Bus를 Content Browser에서 Aux Bus 매개 변수로 드래그하세요.
- 두 개의
AkAcousticPortal
을 추가하세요.
- 건물의 열린 부분 주변에 배치하세요.
- 포털을 선택하고 'Ak Acoustic Portal' 섹션에서 포털의 초기 상태를 Open 으로 설정하세요.
음향 포털을 씬 안으로 드래그하기
|
참고: |
AkAcousticPortal 은 반드시 이 포털이 서로 연결할 공간이 지역적 Y 축에 배치될 수 있는 방향으로 향해야 합니다. 포털을 선택하면 노란색 리본이 포털 주변에 표시되어 확인하기 쉽도록 해줍니다. 노란색 선은 앞뒤 구역 간의 구분을 표시합니다. 공간이 서로 겹칠 경우 우선 순위가 가장 높은 공간이 선택됩니다. |
C.3. 셋업 검토하기
- Windows용 SoundBank를 생성하세요.
- 씬을 시작하고 시작 위치에 머무르세요. 이제 두 공간 안의 사운드를 트리거하면 사운드가 들립니다.
- Wwise Authoring에 연결하고 Game Object Profiler 레이아웃 (단축키 F12)으로 이동하세요. Game Object 3D Viewer에서 다음을 확인하세요.
- 새로운 포털이 보입니다.
- 각 이미터 아래 이미터가 배치된 공간이 보입니다.
- 공간에서 리스너가 이동하면 공간도 변경됩니다.
Room과 Portal의 사용을 보여주는 Game Object 3D Viewer
- 리스너와 다른 공간에서 사운드를 재생할 경우 (직접 보이지 않을 경우):
- 포털이 반사적 표면을 뚫기 때문에 사운드가 들립니다.
- 초기 반사 경로가 포털을 통과하는 것이 보입니다.
- 포털의 모서리에서 소리 전달 경로가 회절하는 것이 보입니다.
Spatial Audio 경로가 Game Object 3D Viewer에 표시됨
|
참고: |
세계 안에 한 개 이상의 공간 음향 공간이 있을 경우 공간 음향 공간이 제공하는 추가 정보를 사용할 수 있도록 차단/방해 알고리즘의 작동 방식이 변경됩니다. 이미터와 리스너 간의 시선 차단 시험이 실패할 경우 다음 중 하나가 실행됩니다.
- 리스너와 이미터가 동일한 공간에 있을 경우 Wwise 차단 필터 (원본 경로만)가 설정됩니다.
- 이미터와 리스너가 서로 다른 공간에 있을 경우 Wwise 방해 필터 (변조와 원본 경로 모두)가 설정됩니다.
- 공간 음향 공간이 없을 경우 이 알고리즘은 리스너가 직접 볼 수 없는 모든 사운드가 차단되었다고 가정하며 Wwise 차ㄴ단 필터 (변조와 원본 경로 모두)가 설정됩니다.
|
Wwise에서는 Project Settings의 Obstruction/Occlusion 탭에서 포털 그림자 구역의 필터 반응을 정밀하게 조정할 수 있습니다.
방해 볼륨 곡선
방해 LPF 곡선
C.4. 포털과 잔향
Portal을 통해 방사되는 사운드는 현재 리스너가 있는 공간 안으로 울릴 수 있습니다. 아래 단계는 이 잔향이 Spatial Audio Tutorial 맵에서 구성되는 방식을 보여줍니다.
- Wwise 프로젝트에서,
- 해당 Room Verb에 사용되는 Auxiliary Bus를 찾으세요. 다른 공간 잔향으로 제공하고자 하는 소리가 방사되는 공간에 사용되는 Room Verb를 말합니다.
- Auxiliary Bus Property Editor의 General Settings에서 'use game-defined auxiliary sends'가 활성화되었는지 확인하세요.
공간 Auxiliary Bus의 'Use game-defined auxiliary sends'를 활성화하세요.
- Soundbank를 생성하고 씬을 시작한 후 Wwise Authoring에 연결하세요.
- 보조 센드가 활성화된 공간 안에서 사운드를 재생하고 이 보조 센드와 통신하도록 설정된 공간으로 이동하세요.
- 방사되는 사운드의 변조된 부분이 리스너가 있는 공간의 잔향도 제공하는 것을 볼 수 있습니다.
SmallRoom 잔향이 LargeRoom 잔향으로 제공됨.
C.5. 공간음
경우에 따라 공간 안에 웅웅거리는 소리나 에어컨 소리와 같은 특정한 환경음이 있을 수 있습니다. 이 공간음을 재현하려면 Spatial Audio Room 게임 오브젝트에 이벤트를 게시할 수 있습니다. 리스너가 공간 안에 있을 경우 이 사운드는 리스너의 위치에 지정됩니다. 리스너가 다른 공간에 있을 경우 리스너는 해당 공간과 리스너의 위치를 연결해주는 포털을 통해 이 공간음을 들을 수 있습니다.
- Wwise 프로젝트에서,
- 공간음에 사용할 새로운 Sound SFX를 만드세요.
- 사운드를 잔향으로 전송하려면 'Use game-defined aux sends'를 활성화하세요.
- 원할 경우 거리 감쇠 곡선에 감쇠를 추가하세요.
- Sound SFX를 우클릭하고 New Event > Play를 선택해서 공간음을 재생하는 재생 이벤트를 만드세요.
- Unreal에서,
- 이전 하위 섹션에서 만든 Event를 Waapi 피커에서 Content Browser로 드래그하세요.
- 이 이벤트를 공간 중 하나의 Ak Event 섹션 아래 있는 Ak Audio Event 매개 변수에 추가하세요.
- Aux Send Level을 조정하여 사운드의 일부가 공간의 잔향으로 제공되도록 하세요.
- Auto Post 상자를 선택하면 BeginPlay에서 공간음 이벤트가 게시되도록 할 수 있습니다. 혹은 보통 게임 오브젝트에서 이벤트를 게시하는 데에 사용되는 동일한 블루프린트 함수를 호출할 수도 있습니다.
Room이 활성화된 Spatial Audio Volume의 AkEvent 섹션.
- Spatial Audio Tutorial 맵에서는 Level Blueprint에 블루프린트 함수를 사용하여 공간음을 활성화하고 비활성화했습니다.
- 공간음이 있는 AkSpatialAudioVolume을 World Outliner에서 선택한 후 Level Blueprint를 우클릭하여 레퍼런스를 생성하세요.
- 레퍼런스에서 연결을 드래그하고 'Post Associated Ak Event'를 검색하세요.
- 동일한 방식으로 Stop 함수도 검색하세요.
- 키 누름을 입력 노드로 추가하세요.
Level Blueprint에서 공간음 재생/중단
- SoundBank를 생성하세요.
- 씬을 시작하고 Wwise Authoring에 연결하세요.
- 공간음이 있는 공간으로 이동한 후 키를 눌러서 공간음을 시작하세요. 소리가 들리는지 확인해보세요.
- Advanced Profiler 뷰에서 해당 이벤트가 재생되는 것이 보입니다.
공간음이 재생될 경우를 나타내는 Advanced Profiler 뷰
- 3D Game Object Viewer에서 리스너가 움직임에 따라 공간 게임 오브젝트를 확인할 수 있습니다.
- 리스너가 공간 안에 있으면 리스너의 위치에서 공간음이 재생됩니다. 공간 게임 오브젝트가 리스너 게임 오브젝트를 따르는 것이 보입니다.
- 리스너가 다른 공간에 있을 경우 공간 게임 오브젝트가 포털에 배치되며 공간 게임 오브젝트와 리스너 게임 오브젝트 간에 경로가 그려집니다.
Game Object 3D Viewer에서 공간 게임 오브젝트를 보세요
D - 회절
이미터와 리스너 간의 시선이 오브젝트에 의해 방해될 경우 Spatial Audio는 오브젝트를 피해가는 회절 경로를 생성하여 현실적인 작동 방식을 시뮬레이션합니다. 모서리 사이 경로의 각도에 따라 해당 사운드는 방해에 의해 감쇠됩니다.
|
참고: |
Spatial Audio 회절을 사용할 경우 언리얼 엔진에서의 방해/차단을 비활성화해야 합니다. 이미터의 Occlusion Refresh Interval을 (AkComponent) 0으로 설정하세요. |
SpatialAudioTutorialMap에서 밖에 있는 장애물과 건물의 외벽에 Spatial Audio 회절을 추가할 수 있습니다.
- Wwise 프로젝트에서 회절을 사용하려는 이미터에 의해 방사되는 Sound SFX에 회절이 활성화되어 있는지 확인하세요.
- Sound Property Editor의 Positioning 탭에서 Diffraction을 활성화하세요.
- Unreal에서,
- 회절이 활성화된 사운드를 방사할 각 AkAmbientSound 액터를 클릭하세요.
-
Occlusion Refresh Interval을 0으로 설정하세요.
- 건물의 외벽에 있는 AkSpatialAudioVolume을 클릭하세요.
- Acoustic Surface Properties 섹션에서 체크 상자를 선택하여 Diffraction을 활성화하세요.
- 밖에 있는 장애물의 고정 메쉬를 클릭하세요.
- Geometry 섹션에서 Diffraction아래 있는 체크 상자를 선택하여 Diffraction을 활성화하세요.
- SoundBank를 생성하세요.
- 게임 재생을 시작하고 Wwise에 연결하세요.
- 회절이 활성화된 사운드가 리스너로부터 방해될 경우 회절이 활성화된 지오메트리와 회ㄹ절 경로에서 회절 모서리를 확인할 수 있습니다.
Game Object 3D Viewer에서 회절 경로가 표시되어 있음
E - 전달
오브젝트가 이미터와 리스너 간에 나타날 경우 사운드가 오브젝트를 통과할 수 있습니다. Spatial Audio는 사운드의 직접 경로에 차단 필터를 적용하여 이 현상을 모방합니다. 0~1 범위의 값을 가지는 차단값은 AkSpatialAudioVolume이나 AkGeometry 컴포넌트에 적용할 수 있습니다. 그런 다음 이 차단값이 프로젝트의 차단 곡선에 따라 연관된 필터가 적용되는 Wwise로 전송됩니다. 보통 값이 1.0일 경우 완전히 차단되며 값이 0.0일 경우 사운드가 지오메트리를 통과하여 전달될 수 있습니다.
- Spatial Audio Init Settings에서 Transmission을 활성화하세요
Spatial Audio Init Settings
- 사운드의 전달값은 사운드가 이미터로부터 리스너로 직접 경로를 통해 이동하는 공간 음향 지오메트리나 공간의 최대 차단값입니다.
- AkSpatialAudioVolume 컴포넌트에서는
- 컴포넌트가 표면 반사기를 활성화할 경우 차단값을 각 음향 표면에 연결할 수 있습니다.
각 음향 표면의 차단값
- 컴포넌트가 공간을 활성화할 경우 차단값을 Wall Occlusion 안에 있는 공간의 벽에 연결할 수 있습니다.
공간의 Wall Occlusion
- AkGeometry 컴포넌트에서는
- Acoustic Properties Override 매개 변수에서 차단값을 덮어쓸 수 있습니다.
- 충돌 메쉬의 경우
AkGeometry 컴포넌트에서 간단한 충돌 메쉬의 차단값을 덮어쓰세요
- 혹은 고정적 메쉬의 각 표면의 경우
AkGeometry 컴포넌트에서 고정적 메쉬의 차단값을 덮어 쓰세요
- 또한 차단값을 initialsetup_gamesettings의 AkGeometry Surface Properties Map에서 Physical Material마다 설정할 수 있습니다.
차단값을 Physical Material와 연결하세요
- Wwise Authoring에서 Project Settings의 Obstruction/Occlusion 탭으로 가서 차단 곡선을 조정하세요.
Occlusion 볼륨 곡선
Occlusion LPF 곡선