Wwise는 오디오 채널의 개수와 스피커 배열이 기존의 소비자 채널 구성을 따르는 콘솔과 PC 게임 개발에 사용하는 것으로 잘 알려져 있습니다. 하지만 Wwise가 빛을 발하는 분야는 이 뿐만이 아닙니다. 위치 기반 엔터테인먼트(Location-Based Entertainment, LBE), 테마 파크 경험, 몰입형 사운드 설치 및 라이브 공연 개발 또한 Wwise를 사용하여 개선할 수 있습니다.
LBE 경험은 엄청나게 많은 수의 오디오 채널이 있는 불규칙적 스피커 구성에 맞게 거의 독점적으로 맞춤 설계 및 개발되어 있습니다. 대부분의 경우 이러한 경험은 Unity나 Unreal과 같은 인기 있는 게임 엔진을 사용하여 개발되죠. 기본적으로 이러한 게임 엔진은 대부분 기존의 스피커 구성만 지원하기 때문에 대안적인 해결책이 필요합니다.
다음 내용을 통해 기존의 방식을 벗어난 스피커 구성을 사용할 때 필요한 Wwise 구성과 LBE 경험으로 쉽게 통합할 수 있는 Wwise 구현의 세 가지 예시를 살펴보겠습니다.
Wwise 구성
ASIO Output
수많은 LBE 경험에서는 비표준적 스피커 구성을 사용하기 때문에, Wwise를 사용할 경우 보통 개발자들이 ASIO 호환 출력 장치와 인터페이스할 수 있도록 Wwise ASIO Output 플러그인 이 필요합니다. 이 플러그인을 구성하려면 'ASIO Output' 장치 생성을 선택하고 이 장치를 'Master Audio Bus'로 지정해야 합니다. 그러면 오디오 채널의 올바른 개수가 자동으로 감지되며 플러그인에 연관된 XML 파일에서 명시적으로 지정됩니다.
Channel Router
Wwise Channel Router 플러그인 은 사운드 디자이너와 개발자들이 서로 다른 채널 구성을 가진 여러 개의 버스를 단일 출력 장치로 라우팅 및 믹스할 수 있도록 해주는 Wwise 믹서 플러그인입니다. 이 플러그인은 특히 한 출력 장치로 여러 스피커 세트를 구동하는 LBE에서 특히 유용합니다. 이 플러그인은 하위 버스의 채널을 상쇄하여 해당 신호가 올바른 출력 채널로 믹스될 수 있도록 해줍니다. 이 상쇄값은 Wwise에서 고정적으로 설정하거나 RTPC를 통해 동적으로 설정할 수 있습니다.
예시 1 - 출력이 추가된 기존의 서라운드 스피커 채널 구성
기존의 싱글 플레이어 서라운드 사운드 구성의 경우 Wwise 오디오 구현에서 플레이어의 사운드를 특수 처리할 필요가 없습니다. 환경음, NPC, 플레이어가 만들어내는 모든 소리가 서라운드 스피커로부터 방사되죠.
그렇다면 플레이어가 9명인 LBE 경험을 상상해봅시다. 각 플레이어가 햅틱과 오디오를 제공하는 무기 컨트롤러를 가지고 있으며 서라운드 사운드 스피커 환경 안에 있다고 가정해봅시다. 이 예시의 경우 서라운드 스피커는 위치 지정된 환경음과 NPC 모노 음원에 사용됩니다. 또한 다채널 환경음도 서라운드 사운드 스피커로부터 재생될 수 있죠. 각 플레이어의 경우 한 쌍의 모노 채널을 사용하여 무기 오디오와 햅틱 피드백을 구동할 수 있습니다.
이 예시의 경우 5.1 서라운드 사운드를 위한 6 채널, 각 플레이어의 무기 컨트롤러 오디오에 사용되는 9 채널, 그리고 각 플레이어의 무기 컨트롤러 햅틱 피드백에 사용되는 9 채널로 구성되어 결과적으로 24 오디오 채널 구성을 가집니다.
환경음
Wwise에서 환경음을 구현하려면 서라운드 사운드 스피커에서 방사되는 모든 사운드가 'Surround Sound Bus'를 통과해야 합니다. 이 버스는 'Master Audio Bus'의 직속 하위 계층이며 채널 구성이 명시적으로 5.1로 설정되어 있죠.
플레이어 전용 오디오
Wwise에서 모든 플레이어 전용 사운드는 'Player Sound Bus'로 라우팅됩니다. 이 버스는 Wwise Channel Router를 사용하며 리스너에 상대적인 라우팅을 사용하도록 구성되어 있습니다.
위의 이미지에서 게임 매개 변수 'GP_PlayerId'는 채널의 상쇄값을 결정하는 데 사용됩니다. 이 매개 변수는 모든 플레이어에 공통적인 사운드가 Wwise에서 동일하게 구성될 수 있도록 해줍니다. 또한 이 구성을 사용하면 Switch Container를 통해 위의 이미지와 같이 Switch Group이 게임 매개 변수를 사용하도록 만들어서 플레이어 전용 사운드를 쉽게 구현할 수 있습니다.
Wwise Channel Router 구성의 채널 상쇄가 게임 매개 변수에 의해 제어될 수 있도록 하면 게임 코드가 연관된 오디오 채널의 채널 상쇄에 해당하는 값을 전송하여 알맞은 플레이어의 무기 컨트롤러 게임 오브젝트로부터 절적한 사운드를 트리거할 수 있습니다. 또한 게임이 모든 플레이어 무기 컨트롤러 게임 오브젝트를 자체적인 리스너로 설정할 수 있습니다.
플레이어 전용 햅틱 피드백
플레이어 전용 사운드 구성과 마찬가지로 플레이어 전용 햅틱 피드백도 Wwise Channel Router를 사용하여 구현해서 햅틱 피드백이 올바른 플레이어의 무기 컨트롤러로 전달되도록 할 수 있습니다. Wwise에서 무기 사운드용 채널 상쇄를 구동하는 동일한 게임 매개 변수를 사용하여 무기 피드백의 채널 상쇄를 구동할 수 있습니다.
게임 통합
위에 제시된 Wwise 구현은 게임이 'GP_PlayerId' RTPC가 설정된 플레이어 게임 오브젝트에 이벤트를 게시하여 무기 오디오와 햅틱 피드백이 올바른 플레이어 무기 컨트롤러로 출력되도록 해줍니다.
더 자세한 설명을 위해 위의 'Advanced Profiler' 이미지에 있는 'Wwise Channel Router' 플러그인을 살펴봅시다. 게임 오브젝트 'Player 03'에서는 'GP_PlayerId' RTPC가 2로 설정되어 있으며, 이 값은 해당 'Player Sound Bus'용 오디오 채널 9와 해당 'Player Haptic Bus'용 오디오 채널 18과 대응합니다. 게임 오브젝트 'Player 07'에서는 'GP_PlayerId' RTPC가 6으로 설정되어 있으며, 이 값은 해당 'Player Sound Bus'용 오디오 채널 13과 해당 'Player Haptic Bus'용 오디오 채널 22와 대응합니다. 기본 리스너를 거치고 'Surround Sound Bus'를 통과하는 모든 사운드는 'Wwise Channel Router'에 의해 변경되지 않으며 ASIO Output 장치의 처음 6개의 오디오 채널로 출력됩니다.
예시 2 - 듀얼 쿼드(quad) 스피커 채널 구성
현재 비표준적 스피커 구성을 자동으로 조정해주는 기능은 없지만 Wwise는 개발자가 표준 구성을 다른 용도로 사용할 수 있도록 상당한 유연성을 제공해줍니다.
이번 예시는 8개의 스피커가 있는 정육면체의 스피커 구성에서 실행되는 LBE 경험입니다. 여기에서는 천장 모서리에 4개, 바닥 모서리에 4개의 스피커가 있으며 윙윙거리는 모터가 달린 드론이 공간 주변을 날아다닙니다.
Wwise 구현
'Ceiling Audio Bus'와 'Floor Audio Bus'에는 모두 두 쌍의 4.0 채널 구성이 사용됩니다.
Wwise Channel Router를 사용하여 'Floor Audio Bus'에 기반 체널 상쇄가 고정적으로 설정되어서 'Ceiling Audio Bus' 채널과 겹치지 않습니다.
Wwise에서 게임 매개 변수는 천장과 바닥 사운드 간의 믹스를 결정하는 데 사용됩니다. 필요한 결과와 선호하는 단위에 따라 개임 매개 변수는 날아다니는 드론의 상대적인 높이 혹은 상대적 고도를 나타낼 수 있습니다.
아래 예시에서 'GP_RelativeHeight' RTPC는 천장과 바닥 사운드 간을 믹스하는 데 사용됩니다. 이미터가 리스너와 동일한 높이에 있을 경우 해당 사운드의 볼륨은 천장과 바닥 스피커에서 동일합니다.
Events are then designed to simultaneously trigger the sounds in both busses. 아래 이미지에서 'Play_FlyingDrone_Motor_Sfx' 이벤트는 'Drone_Motor_Ceiling_Sfx'와 'Drone_Motor_Floor_Sfx'라는 두 개의 오디오 대상으로 구성되어 있습니다. 이 대상은 각각 'Ceiling Audio Bus'와 'Floor Audio Bus'로 출력됩니다.
게임 통합
Wwise에서 사운드와 이벤트가 구현되고 나면 게임은 3D 공간에서 드론의 위치를 지정하고 높이/고도 RTPC 값을 업데이트하는 역할을 담당합니다. 감쇠와 RTPC 곡선을 창의적인 방식으로 조정하면 공간 안에서 거리 감쇠가 올바르게 인지되도록 할 수 있습니다. 이 독창적인 결정을 통해 게임은 해당 3D 위치를 사용하여 드론 게임 오브젝트의 위치를 업데이트하며 Wwise의 기본 거리 감쇠를 사용하거나 RTPC를 구성하여 거리 감쇠 곡선을 모방해서 날아다니는 드론의 소리가 경험 안에서의 올바른 위치로부터 들려오도록 해줍니다.
예시 3 - 평평한 쿼드에 배열된 스피커
모든 동작이 2D 평면에서 일어나는 LBE 경험도 있습니다. 다음 예시에서는 스피커가 평평한 격자선에 배열되어 있으며 사운드가 스피커 위치 사이를 포함한 격자선 내의 모든 위치로부터 방사되는 것처럼 나타나는 상황을 가정해봅시다. 이 스피커 구성을 사용할 경우 이 구성이 비표준적이며 벡터 기반 접근법(vector-based approach, VBAP)이 아닌 거리 기반 패닝을 사용하여 패닝을 결정해야 한다는 점에서 어려움이 있습니다. 하지만 이 문제는 Wwise와 약간의 독창성을 발휘하면 쉽게 극복할 수 있습니다.
이 예시에서는 9개의 스피커가 3x3의 수직적 격자선에 배열되어 있으며 평면 안의 어느 곳에서든지 배치될 수 있는 한 이미터가 있습니다.
Wwise 구현
Wwise에서 위치 지정된 사운드는 리스너에 상대적인 라우팅과 올바른 3D 공간화 설정을 사용하도록 구성되어 있습니다. 사운드의 감쇠 곡선은 사운드가 올바른 개수의 주변 스피커로부터 방사되도록 구성되어 있습니다. 이렇게 하면 확산(spread)이나 집중(focus)의 원하는 양을 얻을 수 있도록 감쇠 곡선을 조정할 수 있습니다.
아래 이미지에서 'Planar Array Mixer' Actor-Mixer는 여러 사운드가 동일한 설정을 필요로 할 경우 구성을 간단하게 해주는 데 사용됩니다.
그런 다음 위치 지정된 사운드는 감쇠와 3D 공간화가 없지만 리스너에 상대적인 라우팅이 활성화된 'Speaker Bus'로 라우팅됩니다. 'Speaker Bus'에서는 Wwise Channel Router의 Channel 매개 변수에 RTPC가 적용됩니다. 'Speaker Bus'에서 감쇠는 'None'으로 설정되어 기본 리스너로의 거리가 볼륨 계산에 영향을 주지 않습니다.
게임 통합
게임은 모든 물리적 스피커에 (적어도) 한 개의 기본 리스너와 기본이 아닌 리스너 게임 오브젝트를 등록합니다.
기본이 아닌 각 리스너 게임 오브젝트는 게임에서 실제 물리적 위치와 유사하게 배치되며 Channel offset RTPC가 이 오브젝트를 올바른 출력 오디오 채널과 연결하도록 설정되어 있습니다.
그런 다음 각 이미터 게임 오브젝트는 기본이 아닌 모든 리스너 게임 오브젝트에 의해 들리도록 설정됩니다. 결과적으로 이러한 게임 오브젝트에 의해 방사되는 사운드는 주변의 리스너 게임 오브젝트에 의해 캡처됩니다.
아래 이미지에서 볼 수 있듯이 'FlyingDrone_Motor_Sfx' 사운드의 거리 감쇠는 가장 가까운 최대 4개의 리스너에 의해 들릴 수 있도록 설정되어 있습니다.
마치는 말
이렇듯, 조금의 창의성만 더하면 Wwise를 사용하여 LBE 설치 사운드 디자인을 용이하게 할 수 있습니다. 그리고 Wwise의 향후 발전을 통해 비규칙적 스피커 구성 안에서의 사운드 공간화가 더 쉬워질 것입니다. 기대해주세요!
https://www.audiokinetic.com/discover/wwise-in-lbe/
댓글