잔향도 공간화가 필요합니다: Wwise Spatial Audio의 Room과 Portal 가이드

사운드 디자인 / 공간 음향 / Wwise에 대한 팁과 도구

최근에 공간 음향에 대한 관심이 아주 뜨거워졌습니다. 하지만 사실 '공간 음향'이 의미하는 것은 매우 다양할 뿐만 아니라 사용할 수 있는 옵션이 너무 많아 어렵게 느껴질 수 있어요. 공간 음향을 게임에 통합하는 방법에는 꽤 여러 개가 있고, 꼭 하나만 선택해서 사용해야 하는 것도 아니에요. 다양한 해결 방법을 함께 사용하면 더욱 자신에게 꼭 맞는 방법을 찾을 수 있죠. 공간 음향에서 반사와 회절 시뮬레이션하기에 대한 내용은 나중에 다른 글에서 다루게 되겠지만, 오늘은 Wwise에서 'Room(공간)과 Portal(포털) 사용하기'라는 한 가지 주제를 집중적으로 다뤄봅시다. Wwise의 공간과 포털 시스템을 사용할 경우의 장점을 알아보고, 게임의 몰입감을 확실히 향상시키기 위해 이 시스템이 왜 유용하고 강력한 도구인지를 함께 살펴볼게요. 이 글을 읽고 난 후 Wwise에서의 공간과 포털을 설정하는 방법을 더 자세히 알아보고 직접 실행해보고 싶다면,  Unity나  Unreal을 사용하는 단계별 튜토리얼을 확인해보세요.

음향 포털의 구조

음향 포털(acoustic portal)은 말 그대로 지오메트릭으로 정의된 열린 부분을 통해 한 공간에서 다른 공간으로의 소리 전달을 모델링하는 추상적 개념입니다. 포털은 서로 다른 두 음향 환경 사이의 경계면을 모델링합니다. 여기서 공간(room)이라는 개념은 음향 환경 을 짧게 줄여서 부른 일반적인 개념으로, 실외 환경도 포함합니다.

 

WwiseSpatialAudio1
Wwise Audio Lab(와이즈 오디오 랩)에서의 음향 포털은 X,Y, Z 축으로 표시되어 있습니다.


Wwise Spatial Audio(와이즈 공간 음향)에서 포털은 방향성이 있는 상자 테두리의 모양을 하고 있습니다. 상자의 각 양쪽 끝은 사각형 '튜브' 모양으로 열려있어요. 상자의 x축은 포털의 너비, y축은 포털의 높이, z축은 포털 전환이 일어나는 '깊이'를 정의합니다. 문이나 창문의 경우 항상 깊이를 갖고 있지는 않지만 Wwise Spatial Audio에서 z축은 보간과 두 환경 간 매끄러운 전환에 중요한 역할을 합니다. z축에서 이 보간이 작동하는 방법은 조금 있다가 더 자세하게 알아보겠습니다.

 

확산 잔향 공간화하기

포털의 가장 중요한 역할 중 하나는 바로 확산 잔향(diffuse reverberation)의 전달을 제어하는 것입니다. 사운드 방사체 세 개가 있는 한 공간에, 리스너가 있는 또다른 공간으로 연결된 포털이 있다고 가정해봅니다. 세 개의 방사체에서 나오는 사운드는 공간의 모든 벽으로부터 부딪혀나와 확산되어 방향성을 완전히 잃게 됩니다. 그리고 포털을 통과하기 전에 사운드가 서로 섞이게 되죠. 인접한 공간에 있는 리스너의 시점에서 봤을 때 이 포털은 세 방사체로부터 조합된 후 잔향이 더해진 사운드를 방사하는 하나의 또 다른 사운드 방사체 역할을 합니다.

 

WwiseSpatialAudio2
위의 스크린샷은 Wwise 3D 오브젝트 프로파일러이며 오른쪽 위에 보이스 그래프가 열려 있습니다. 3개의 방사체가 공간 게임 오브젝트 (자주색 화살표)로 혼합된 후 리스너 게임 오브젝트 (주황색 화살표)로 혼합되기 전에 잔향이 더해지고 공간화됩니다.


아키텍처 관점에서 볼 때 Wwise Spatial Audio는 Wwise Sound Engine 위에 얹혀진 별도의 C++ 라이브러리라고 할 수 있습니다. Spatial Audio에서 포털은 Wwise 사운드 엔진에서 게임 오브젝트에 인스턴스화되는 '3D 버스'를 자동적으로 제어합니다. 컴퓨터 계산의 관점에서 볼 때 반드시 복잡한 것은 아니지만 Spatial Audio는 알맞은 연결을 자동으로 관리하고 필요한 부기 작업을 실행하여 게임 엔진과 프로그래머가 가지는 부담을 덜어줍니다. 확산 잔향의 경우 Spatial Audio는 사운드 엔진이 먼저 지정된 버스로 다운믹스를 실행한 뒤 잔향 효과(도구에서 정의한 여러 가지 효과 체인)를 적용하고 마지막으로 포털의 위치에서 믹스의 위치를 지정하며 공간화합니다.

직접 경로의 회절

포털은 확산 잔향을 지시하는 것 외에도 직접 경로에서 회절을 시뮬레이션하는 아주 중요한 역할을 갖고 있습니다. 리스너로부터 인접한 공간에 하나의 점원 사운드 방사체가 있다고 가정해보세요. 사운드의 일부는 어떤 표면에서도 반사되지 않으며 포털을 통해 직접 전달됩니다. 바로 이것을 직접 경로라고 부르죠. 사운드가 방사체를 직접 '볼 수 있을’ 경우 아무런 방해가 일어나지 않으며, 포털(크기가 충분히 크다는 가정 하에)이 직접 경로를 변경하지 않습니다. 하지만 사운드가 모퉁이를 돌아나올 경우 흥미로운 일이 일어나요. 이때 회절(diffraction)이 일어나게 됩니다. 회절은 방해된 사운드를 모델링하는데 중요합니다. 또한, 방해된 State와 방해 없는 State 간의 전환을 모델링하는 데에도 중요한 역할을 하죠. Spatial Audio는 사운드가 포털을 지날 때 '꺾이는' 각도(음향적인 현상으로 회절이라고 불림)를 계산한 후 이 각도를 Wwise에 있는 방해 매개 변수로 매핑합니다. 사운드 엔진은 Wwise 프로젝트 설정에 있는 방해 곡선에 의해 정의된 감쇠와 저역 통과 필터를 적용합니다. 사운드가 많이 꺾일 수록 방해가 더 많이 적용되며 저역 주파수가 모퉁이를 더욱 멀리 돌아가는 현상을 모델링합니다.

WwiseSpatialAudio3

위의 스크린샷에서는 Wwise 3D 오브젝트 프로파일러에 방사체가 포털을 통해 회절하는 모습을 보여줍니다. 그 오른쪽 위에 열린 보이스 그래프와 보이스 프로파일러가 열려 있습니다. 회절각이 백분율로 된 방해값으로 전달되며 저역 통과 필터를 구동하는 것을 볼 수 있죠. 그리고 가상 위치가 리스너의 시점에서 사운드가 마치 포털을 통과하여 오는 것처럼 나타나도록 하는 것도 확인할 수 있습니다.


Spatial Audio에서 공간의 구조 (혹은 구조의 부재)

이제 Spatial Audio에서 공간을 더욱 깊게 살펴봅시다. Spatial Audio 라이브러리는 공간의 위치나 모양을 직접 인지하지 못합니다. 단지 공간의 방향과 지정된 보조 버스(회절 잔향 효과용)만 인지할 뿐이죠. 공간의 모양을 정의하는 것은 게임이 해야 하는 일입니다. 그리고 각 리스너와 방사체가 어떤 공간에 있는지 Spatial Audio에게 알려주기 위해 교차 검사(containment test)를 실행해야 합니다. 이렇게 하면 게임이 원하는 방향대로 간단하거나 복잡한 공간을 만들 수 있는 유연성이 생깁니다.

한 단계 더 나아가 Wwise 사운드 엔진 안을 살펴보면 공간은 또 다른 게임 오브젝트일 뿐입니다. 공간 게임 오브젝트의 위치뿐만 아니라 방향, 전송 레벨, 차단, 방해 등은 Spatial Audio 라이브러리에 의해 직접 제어되며 연결된 포털과 리스너의 상대적 위치에 따라 지속적으로 업데이트됩니다.

Spatial Audio를 사용한 공간음과 환경음

한 가지 기억해야 할 것은 바로 공간 게임 오브젝트가 잔향만을 위한 것이 아니라는 점입니다. 공간 게임 오브젝트의 자동 위치 지정을 활용하면 Wwise 이벤트를 게시할 수 있습니다. 보통 공간 오브젝트에 직접 공간음이나 환경음을 게시하죠. 이 방법을 사용하면 공간 안에 있을 경우 해당 공간의 환경음이 리스너를 둘러쌀 뿐만 아니라 포털을 통해 공간을 나갈 때 환경음을 현실적으로 감쇠할 수 있어요.

여기서 프로그래머 분들께 드릴 말씀이 있습니다. 바로, 공간 게임 오브젝트에 이벤트를 게시할 수 있다는 것이죠. 그 이유는 공간 ID가 게임 오브젝트 ID와 같기 때문이에요. AkRoomParams::RoomGameObj_KeepRegistered를 설정하면 Spatial Audio가 게임 오브젝트를 사용하지 않는 것으로 간주할 경우에도 게임 오브젝트를 제거하지 않게 됩니다.

공간 게임 오브젝트의 작동 방식

공간 게임 오브젝트의 작동 방식은 리스너가 공간 안에 있는지 밖에 있는지에 따라 달라집니다. 먼저 공간 안에 있을 경우를 살펴볼까요. 게임 오브젝트는 리스너와 동일한 지점으로 위치가 지정됩니다. 하지만 공간 오브젝트의 방향은 리스너의 방향과 달리 공간의 방향으로 고정돼요. 공간 게임 오브젝트를 통해 재생되는 잔향과 환경은 서로 반대 방향으로 회전되어서 우리가 듣는 서라운드 트랙이 주변 세계에 고정되어있는 듯한 느낌을 줍니다. 이 부분은 음장(音場, sound field) 환경음을 사용하는 VR 경험의 경우 특히 중요합니다. 보통 바이노럴화 효과가 있는 머리 추적 장치에 의해 제어되는 리스너가 머리를 움직이면서 음장의 여러 다른 방면을 들을 수 있어야 하기 때문이에요. 가끔 일부 게임에서 환경음을 리스너의 방향에 고정시키는 실수를 하기도 하는데, 그럴 경우 음장이 리스너의 머리가 움직이는 대로 '따라가게’ 되어서 몰입감이 현저히 떨어지게 되죠. 보통 본래 확산되는 잔향 효과의 경우 이 부분이 덜 중요하다고 할 수도 있지만 음장이 공간의 방향으로 고정되는 효과가 동일하게 적용됩니다.

이제 리스너로부터 인접한 공간을 살펴봅시다. 지금쯤이면 각 공간의 오디오를 별도의 게임 오브젝트로 제어하는 것이 정말 강력한 도구라는 걸 다들 아셨을 거예요. 이 경우 역시 게임 오브젝트가 공간 환경음과 잔향을 포함한 공간 안에서 나오는 사운드를 제어합니다. 하지만 이제 오브젝트가 리스너의 현재 공간을 연결하는 포털에 위치 지정되어 있어요. 포털이 한 개 이상일 경우 Spatial Audio는 Wwise의 멀티 위치 지정 시스템을 사용하여 추가 보이스나 효과 인스턴스를 인스턴스화하지 않게 됩니다.

포털 확산 비율

Spatial Audio는 또한 각 사운드 위치의 '확산' 비율(감쇠 설정에서 직접 정의하는 것과 동일)을 조작해 리스너에 대한 포털의 열린 공간의 각도와 확산 각도를 동일하게 해줍니다. 리스너가 포털로부터 점점 멀어질 경우 Wwise의 사용자 정의 감쇠 설정이 적용되어 볼륨을 줄이고 필터를 적용합니다.

WwiseSpatialAudio4

위의 스크린샷은 모두 Wwise 3D 오브젝트 프로파일러로서, 다양한 리스너 위치에서 공간 게임 오브젝트의 확산 비율을 보여줍니다. 가장 위에 있는 세 그림에서 공간 게임 오브젝트가 포털에 있지만 리스너가 공간 안에 있을 경우 오브젝트가 리스너와 완전히 동일한 위치로 지정된 것을 알 수 있습니다.


포털을 통해 전환할 때에는 리스너가 포털과 가까워질수록 확산 각도가 커집니다. 리스너가 포털의 '문틀' 안에 있을 경우 확산이 50%(혹은 180도)가 되며 리스너가 공간 안으로 전환할 경우 사운드가 계속해서 리스너를 둘러싸서 결국 100%(혹은 360도)가 됩니다.

포털의 깊이

이 글의 앞 부분에서 포털이 평평한 사각형이 아닌 3차원의 상자로 표시된다는 것을 말씀드렸죠. 이렇게 깊이를 가짐으로써 포털이 잔향, 공간 환경음을 보간할 수 있고, 두 공간 사이로 전환할 경우엔 심지어 오브젝트의 위치도 보간할 수 있습니다. 게임이 트리거 볼륨의 입구에서 오디오 전환 효과를 트리거하고서, 플레이어가 그대로 쭉 같은 방향과 같은 속도로 진행해 전환 효과가 플레이어의 움직임과 동기화됐으면 하는 경우가 많습니다. 그러나 플레이어가 도중에 멈추거나 방향을 바꿀 경우 사운드가 더 이상 플레이어의 위치와 동기화되지 않게 되죠. 포털은 시간이 아닌 공간 사이에 크로스페이드를 매핑하여 이 문제를 해결합니다. 이렇게 해서 두 공간 사이에 매끄럽고 현실적인 전환 효과를 만들어주죠.

Wwise Spatial Audio에서 공간과 포털에 대해 입이 마르도록 칭찬만 늘어놓을 게 아니라, 시스템의 한계에를 살펴보는 것도 중요하겠죠? Wwise Spatial Audio가 언제 어디서나 꼭 맞는 만능 솔루션은 아닐 겁니다. 게임 레벨을 포털로 구분된 공간으로 논리적으로 나눌 수 없을 경우 억지로 사용하지 않는 것이 좋습니다. 수많은 장애물이 있는 실외 환경과 같이 복잡한 지오메트릭 상황에서는 포털을 사용하지 않는 것이 좋아요. 이러한 상황의 경우 Wwise Spatial Audio의 지오메트릭 회절 API를 사용하는 것이 낫습니다. 지오메트릭 API는 Wwise Spatial Audio의 또 다른 측면인데, 이 글에서 다루기에는 범위가 너무 넓네요. 하지만 계속해서 Audiokinetic 블로그를 확인해주세요. 곧 지오메트릭 API를 포함해 더욱 많은 주제의 글을 올릴 예정입니다. 그동안 설명서를 통해 먼저 배워 보셔도 좋습니다.

이제까지 Wwise Spatial Audio의 공간과 포털 시스템 내부 구조를 살펴보았지만, 세부적인 내용은 훨씬 더 복잡합니다. 일부 개념이 잘 이해되지 않을 경우 직접 사용해보시는 것을 추천해드려요. Wwise 런처를 통해 Wwise Audio Lab같은 데모 중 하나를 로드하셔서 Wwise 저작 도구를 게임에 연결해보세요. 위에서 설명한 모든 과정은 3D 게임 오브젝트 뷰어에서 방사체, 리스너, 공간 게임 오브젝트를 주시하여 작동되는 모습을 직접 확인하실 수 있습니다. 실제 작업에 뛰어들지 않는 이상 최상의 방법을 찾을 수는 없겠죠. 직접 이리저리 굴려보시고 자기에게 가장 잘 맞는 방법을 꼭 찾아내시길 바랍니다.

네이튼 해리스 (NATHAN HARRIS)

시니어 소프트웨어 개발자, R&D

Audiokinetic

네이튼 해리스 (NATHAN HARRIS)

시니어 소프트웨어 개발자, R&D

Audiokinetic

네이튼 해리스는 2012년에 자신의 꿈을 위해 몬트리올로 떠나 Audiokinetic에서 전세계 수백만 게임으로 배포되는 혁신적인 기술을 개발해왔습니다. 이전부터 열정적인 Wwise 사용자였던 네이튼은 현재 연구 및 기술 팀에서 오디오와 소프트웨어 아키텍처 전문가로 활동하고 있습니다. 주짓수 검은띠 소유자이기도 한 네이튼은 매트 위에서 땀 흘리거나 더 나은 몰입형 게임을 만드는 데 열중하는 것을 좋아하죠. 뿐만 아니라 자신의 맥주를 직접 만들거나 커피를 로스팅하며 시간을 보내는 것도 좋아합니다.

 @spcmn_spiff

댓글

댓글 달기

이메일 주소는 공개되지 않습니다.

다른 글

공간 음향에 접근하는 현명한(Wwise) 방법 - 제 2부 - 회절 (diffraction)

Part 1: Distance Modeling and Early ReflectionsPart 2: DiffractionPart 3: Beyond Early Reflections...

7.4.2021 - 작성자: LOUIS-XAVIER BUFFONI (루이-자비에 뷔포니)

Wwise로 도플러 효과 제작하기

도플러(Doppler) 효과는 음파를 기준으로 관찰자가 움직임에 따라 파동의 주파수가 변하는 것입니다. 이 물리적인 현상은 모든 종류의 파동 전달에서 일어나며 음파도 예외가...

30.3.2022 - 작성자: 쒸 웨이 (Xu Wei, 徐巍)

WAQL 2.0

Wwise Authoring Query Language (WAQL, 와클) 첫 번째 버전이 출시된 지 벌써 몇 년이 지났습니다. 첫 버전 이후 크게 변경된 점은 없습니다. 가장...

10.8.2023 - 작성자: 베르나르 로드리그 (Bernard Rodrigue)

Wwise Unreal 통합 현황

이 글은 작년에 게시한 'Wwise Unreal 통합 개선하기(Improving the Wwise Unreal Integration)'에 대한 후속 글입니다. 저번 블로그에서는...

13.10.2023 - 작성자: 기욤 르노 (Guillaume Renaud)

Unreal Engine에서 AudioLink를 사용하는 방법

소개 이 글에서는 Unreal Engine의 AudioLink를 집중적으로 살펴보려고 합니다.이 작업은 다음 버전을 사용하여 검토되었습니다....

15.8.2024 - 작성자: 히로시 고다 (Hiroshi Goda)

Wwise 2024.1 새로운 기능

Wwise 2024.1이 출시되었으며 Audiokinetic 런처를 통해 다운받으실 수 있습니다. 이 버전이 제공하는 새로운 기능을 간략하게 소개해드리려고...

8.11.2024 - 작성자: Audiokinetic (오디오키네틱)

다른 글

공간 음향에 접근하는 현명한(Wwise) 방법 - 제 2부 - 회절 (diffraction)

Part 1: Distance Modeling and Early ReflectionsPart 2: DiffractionPart 3: Beyond Early Reflections...

Wwise로 도플러 효과 제작하기

도플러(Doppler) 효과는 음파를 기준으로 관찰자가 움직임에 따라 파동의 주파수가 변하는 것입니다. 이 물리적인 현상은 모든 종류의 파동 전달에서 일어나며 음파도 예외가...

WAQL 2.0

Wwise Authoring Query Language (WAQL, 와클) 첫 번째 버전이 출시된 지 벌써 몇 년이 지났습니다. 첫 버전 이후 크게 변경된 점은 없습니다. 가장...