버전

menu_open
Wwise SDK 2021.1.14
Using the Geometry API for Simulating Early Reflections

Introduction

Geometry API는 방사체와 리스너 위치와 개발 게임 지오메트리의 삼각형(대개의 경우 간략한)을 Wwise Reflect 플러그인과 함께 사용해 다이내믹 초기 반사의 허음원을 계산합니다. 사운드 디자이너는 거리와 재질에 따라 속성을 조정해 Wwise Reflect에서 직접 허음원 위치의 변화를 제어합니다.

지오메트리에 따른 초기 반사(early reflections, 줄여서 ER)에 대한 기본적인 설명을 보시려면 블로그 Image Source Approach to Dynamic Early Reflections (다이내믹 초기 반사에 대한 허음원 다루기)Creating compelling reverberations for virtual reality (VR을 위한 효과적인 리버브 만들기)를 참고하세요.

참고: 반사 순서는 리스너에 도달하기 전까지 파면(wavefront)이 부딪히는 표면의 개수를 나타냅니다. 예를 들어, 여섯 면으로 둘러싸인 구두 상자 모양의 공간이 있고, 그 안에서 일어나는 1차 반사를 시뮬레이션하려면 이미터당 초기 반사, 즉 허음원(image source)이 여섯 개를 이용합니다. 그러면 6 개의 반사가 만들어집니다. 2차 반사를 시뮬레이션하려면 1차 반사 여섯 개에 더해 다른 다섯 개의 벽에서 발생하는 2차 반사 여섯 개가 있어야 합니다. 그러면 이미터당 36 개의 반사가 만들어집니다. 반사의 개수는 반사 차수의 제곱지수로 증가합니다.

Wwise Spatial Audio에서는 현재 4차 반사의 시뮬레이션까지 지원됩니다. 반사 차수는 AkSpatialAudioInitSettings::uMaxReflectionOrder init 설정을 통해 전역적으로 설정됩니다. 이는 또한 AK::SpatialAudio::SetReflectionsOrder 를 이용해 동적으로 변경할 수도 있습니다.

Wwise project setup

동적 초기 반사를 지원하는 각각의 사운드에 대해 반드시 Wwise Authoring Tool의 General Settings 탭 아래 초기 반사 버스를 할당하여 Wwise Reflect 플러그인을 사용하는 Auxiliary Bus를 표시하도록 합니다. Spatial Audio가 이 버스와 연결하는 특수한 보조 센드를 구축하게 됩니다. 또는 센드 볼륨을 설정해도 됩니다.

일반적으로 환경 리버브의 경우, 리스너 게임 오브젝트에 Auxiliary Bus가 생성돼 복수의 이미터가 동일한 버스와 효과 인스턴스를 공유하도록 만듭니다. Spatial Audio에 의해 후기 리버브에 사용되는 Room에 대해서는 변함이 없지만, 초기 반사의 경우에는 다릅니다. 각 이미터에는 그 이미터 고유의 위치에 따라 달라지는 자체 반사 세트가 있기 때문입니다. 대신, ER 버스 인스턴스는 이미터 게임 오브젝트에 생성되고, 다양한 이미터는 Auxiliary Bus의 서로 다른 인스턴스를 전송하게 됩니다. 아래 'Wwise 프로젝트 설정'에 나온 Voices Graph의 스크린샷을 참고하세요.

Wwise 프로젝트 내의 동적 환경 효과를 효과적으로 다루기 위해서는 버스 구조체 디자인과 관련한 다음 내용을 잘 이해하는 것이 중요합니다.

Attenuation Design

Spatial Audio와 함께 사용하는 사운드의 감쇠 곡선을 설계할 때, 효율적인 계산을 위해 기억해둬야 할 중요한 것이 있습니다. Sounds that are assigned an early reflections Auxiliary Bus and those that are marked with Enable Diffraction and Transmission in the Authoring tool must be assigned an attenuation with finite radius to limit the computation of paths.

Spatial Audio는 사운드의 감쇠를 사용해 반사와 회절 경로 계산의 최대 전달 거리를 결정합니다. 따라서 해당 최대 감쇠 거리가 이를 대표하는 값이 되도록 설정하는 것이 중요합니다. 또한, 감쇠가 플랫폼의 지정된 볼륨 한계점 아래로 내려가지 않을 경우 해당 사운드의 반경은 사실상 무한대가 됩니다. 이런 경우 Spatial Audio는 월드에 리스너가 어디 위치해있든 상관 없이 반사와 회절을 계산하려는 시도를 합니다. 'Output Bus 볼륨' 곡선과 'Auxiliary 센드 볼륨' 곡선은 곡선의 맨 오른쪽, 볼륨 한계점 아래에 반드시 최종 지점이 있어야 Spatial Audio 계산이 이미터 Game Object 주변 유한 반경에 한정됩니다. 볼륨 한계점은 프로젝트 설정 대화창에서 정의되어 Authoring Tool의 Project 메뉴에서 확인할 수 있습니다.

참고: 만약 Game Object에 여러 개의 활성화된 사운드가 각각 다른 감쇠가 할당되어 재생 중일 경우, 전체 감쇠 반경 중 가장 큰 것만 경로 처리 제한에 사용됩니다. 경로 처리는 한 Game Object당 한 번씩만 실행되며, 이 경로는 필요시 여러 사운드에 재사용됩니다.

Auxiliary bus design

대개의 경우 다양한 환경을 표현하기 위해 다양한 Auxiliary Bus가 사용되며, 이 버스들은 이러한 환경의 리버브 특징을 에뮬레이트하는 각각의 리버브 ShareSet을 가질 수 있습니다. Spatial Audio에서 Wwise Reflect와 같이 다이내믹 ER을 사용할 때는 후기 리버브도 Auxiliary Bus의 리버브를 사용하도록 설계돼있을 수 있습니다. 하지만 Wwise Reflect에서 이미 이 작업을 하기 때문에 리버브의 ER 영역을 비활성화하고자 할 경우가 있습니다.

다른 한편으로는, Wwise Reflect가 후기 리버브에 사용하는 보조 버스와 동시에 실행돼야 합니다. 아래의 표는 전형적인 버스 구조체를 보여주고 있습니다. 이 표에는 EarlyReflections 버스 아래 세 개의 Auxiliary Bus에 각각 다른 Wwise Reflect의 ShareSet가 포함돼있습니다. 이 설계를 보면, 초기 반사를 발생시키는 ShareSet를 몇 개만 사용했다는 걸 알 수 있습니다. 이 Effect의 '공간 면'이 게임 지오메트리에 의해 런타임에 결정되기 때문입니다. 여기서 서로 다른 ShareSet를 사용한 이유는, 다른 오브젝트에서 방사되는 소리보다 플레이어(리스너)에 의해 방사되는 소리의 다양한 감쇠 곡선을 얻기 위함입니다.

Bus instances

ER 버스는 (Wwise Reflect를 관리)는 할당된 ER 버스로 사운드를 재생중인 게임 오브젝트와 동일한 수의 인스턴스에 존재하게 됩니다. 허음원(image source)의 위치가 이미터의 위치에 따라 달라지므로 이는 매우 중요합니다. ER 버스의 라우팅을 올바르게 설정하기 위해서는 아래 그림과 같이 Listener Relative Routing 체크 상자를 활성화해야 합니다. 이렇게 하면 ER 버스의 다양한 인스턴스에 의해 발생되는 신호가 다음 믹싱 버스 다운스트림의 단일 인스턴스로 올바르게 믹싱됩니다. 이 단일 인스턴스는 이 방사체( AK::SoundEngine::SetListeners 로 설정)를 듣게 되는 게임 오브젝트에 해당되며, 이 게임 오브젝트는 주로 최종 리스너인 플레이어(또는 카메라)가 됩니다.

동일한 게임 오브젝트에 대해 재생중인 여러 사운드에 서로 다른 초기 반사 보조 버스가 할당된 경우, 해당 버스의 여러 인스턴스는 동일한 이미터 게임 오브젝트에 생성됩니다. Spatial Audio가 실행하는 반사 계산은 여전히 한 게임 오브젝트당 한 번만 실행되지만, 그 결과물은 Wwise Reflect 플러그인의 고유한 두 인스턴스로 전송됩니다. 이렇게 하면 플러그인의 서로 다른 ShareSet를 사용하는 사운드별로 반사 곡선을 커스터마이징할 수 있습니다.

주의: 모든 방사체-인스턴스가 리스너의 버스에 병합되도록 하기 위해서는 ER 버스의 Listener Relative Routing을 활성화해야 하지만, 3D Spatialization 모드를 None으로 설정해야 Wwise에 의한 '3D 공간화 중첩'을 방지할 수 있습니다. 같은 원리로, Wwise Reflect에서 추가적으로 또 다른 감쇠를 허음원 곡선에 더할 경우를 제외하고는, 감쇠를 사용해서는 안 됩니다.

Early reflections sending to late reverberation

또한, 후기 리버브를 처리하는 데 사용했던 Auxiliary Bus로 전송된 게임 오브젝트(방사체)로 인해 ER 버스와 후기 리버브가 연결됩니다. 이러한 과정이 매우 유용한 이유는, ER이 발생된 다음 후기 리버브의 색을 정하고 '밀도'를 높이는 데 활용되기 때문입니다. 이를 활성화하기 위해서는 ER 버스의 Use game-defined auxiliary sends (게임에서 정의한 보조 전송 사용) 체크 상자를 반드시 활성화해야 합니다. 그런 다음 아래 있는 Volume 슬라이더를 이용해, 직접음과 대비해 후기 리버브로 보낼 초기 반사의 양을 조절합니다.

다음 표는 앞에서 설명한 내용의 런타임 모습을 나타내고 있습니다. 다음에 유의하세요.

  • Weapon Fire SW는 Early Reflection 센드로 인해 FirstPerson (초기 반사) 버스로 라우팅됩니다.
  • FirstPerson 버스는 FirstPersonCharacter 게임 오브젝트의 범위 안에 있습니다. 따라서 또 다른 게임 오브젝트가 필요에 따라 FirstPerson 버스의 다른 인스턴스로 전송됩니다.
  • Use game-defined auxiliary sends (게임에서 정의한 보조 센드 사용)가 활성화돼있으므로 FirstPerson 버스에서 Mezzanine2 보조 버스로 센드를 연결합니다.
  • FirstPerson 버스에 대해 Listener Relative Routing 옵션이 활성화돼있기 때문에 FirstPreson의 출력 버스 Binaural은 리스너의 범위, 즉 PlayerCameraManager 안에 있습니다. 모든 초기 반사 버스 인스턴스는 전부 리스너의 단일 Binaural 버스 인스턴스로 반환되므로 이 옵션이 활성화돼있어야 합니다. 그렇지 않을 경우, 이미터 게임 오브젝트에 대해 별도의 Binaural 버스 인스턴스가 잘못 인스턴스화됩니다.
  • 거리 때문에 FirstPerson과 Binaural 버스 간에는 감쇠가 없으며, ER 감쇠는 이미 Wwise Reflect 안에 적용돼있습니다.

Using Acoustic Textures

각각의 반사 삼각형에 대해 게임에서 머터리얼 ID를 전달합니다. 이 머터리얼은 Wwise Project에서 Acoustic Texture의 형태로 Virtual Acoustics ShareSet에서 편집됩니다. 여기서 각 머터리얼의 흡수 특징을 정의하게 됩니다.


이 페이지가 도움이 되었나요?

지원이 필요하신가요?

질문이 있으신가요? 문제를 겪고 계신가요? 더 많은 정보가 필요하신가요? 저희에게 문의해주시면 도와드리겠습니다!

지원 페이지를 방문해 주세요

작업하는 프로젝트에 대해 알려주세요. 언제든지 도와드릴 준비가 되어 있습니다.

프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.

Wwise를 시작해 보세요