버전

menu_open
Wwise SDK 2021.1.14
Rooms and Portals Overview

Here is the outline of this page:

Summary of Sound Propagation Features

아래 표에는 Spatial Audio의 Room과 Portal 기능들을 음향 현상 측면으로 묶어놓았습니다. 그리고 각 기능에 대해 Spatial Audio가 어떤 역할을 하는지, 사운드 디자이너는 이를 어떻게 프로젝트에 적용할 수 있는지 간단한 설명이 나와있습니다.

Acoustic Phenomenon Spatial Audio Sound Design in Wwise
Diffraction of direct path
  • Calculates indirect sound paths that drive diffraction values
  • Modifies the game object position to simulate the perceived angle of incidence of the diffracted sound
  • Assigns diffraction values to volumes and filters via the project obstruction curves, or built-in RTPCs
Diffuse field (reverb)
  • Send to room's auxiliary bus
  • Constant power transitions
  • Reverb, bus volume and game-defined send offset on Actor-Mixer
Room coupling: reverb spatialization and diffraction of adjacent room's diffuse field
  • Calculates the propagation of the diffuse field through portals
  • Room object positioning and spread
  • Send to listener's room's auxiliary bus
  • Assigns diffraction values to volumes and filters via the project obstruction curves, or built-in RTPCs
  • Volume, filtering, or any property on Bus
  • 3D panning of busses, reverb, bus volume and game-defined send offset of Auxiliary Bus to other busses
Transmission
  • Drives transmission loss values according to the room and surfaces the sound path goes through
  • Assigns transmission loss values to volumes and filters via the project occlusion curves, or built-in RTPCs

Modeling Sound Propagation from Other Rooms

Spatial Audio Room과 Portal과 함께, 리스너 소리를 제외한 Room 안의 소리 전달은 Room과 Portal 추상화에 의해 관리됩니다. 다른 Room 내부의 이미터가 Portal 및 연결된 회절(diffraction)을 통해 리스너에 도달하고, 공간들의 '벽'을 통한 전달(transmission)을 통해 도달합니다. Ensure that the Enable Diffraction and Transmission box is checked in the Positioning tab of each sound that need to be propagated.

Diffraction

인접한 Room의 각 이미터에 대해 Spatial Audio는 Shadow Boundary, 즉 연결된 Portal의 가장 가까운 모서리로부터의 회절 각도를 계산합니다. For more information, see Diffraction (회절). 180도까지 가능한 이 회절 각도는 0에서 100% 사이 계수에 매핑되어 오디오 변환을 만들어낼 수 있습니다. 여기에는 두 가지 방법이 있습니다. It can set the Obstruction value on the emitter game object (if AkSpatialAudioInitSettings::bUseObstruction is enabled) or set the value of a built-in game parameter, Diffraction.

Diffraction 내장 매개 변수를 사용할 경우, 게임 매개 변수를 생성해 해당 Bind to Built-in Parameter 드롭다운 메뉴를 Diffraction로 설정해야 합니다. 이 게임 매개 변수에 입력되는 값의 범위는 게임 오브젝트에 의해 결정되므로 각 이미터마다 고유한 범위를 갖습니다. 설정이 끝나면 RTPC로 자신의 Actor-Mixer의 속성을 제어할 수 있습니다. 가장 합리적인 방법은 Output Bus Volume과 Output Bus LPF를 이용해 회절의 주파수 기반 행동 양식을 표현하는 것입니다. Output Bus Volume과 LPF는 기본 Volume과 LPF에 대해 특권이 있는데, 그 이유는 이들이 직접 신호 경로에만 적용되고 Room의 잔향의 보조 전송에는 적용되지 않기 때문입니다.

Room의 분산 에너지 또한 Spatial Audio의 소리 전달 모델에 Room의 Auxiliary Buss 출력으로 포함됩니다. Spatial Audio는 이에 대한 회절도 계산합니다 ('변조 회절'). Spatial Audio는 분산 에너지가 Room가 Portal에 수직으로 닿는 면에서 새어나온다고 가정합니다. 따라서 이 Portal의 법선 벡터와 연관시켜 회절 각도를 계산하게 됩니다. 이 회절 값은 Wwise에서 이미터의 원본 경로와 똑같은 방식으로 사용할 수 있습니다. 내장 게임 매개 변수를 사용할 때는, RTPC로 공간의 보조 버스에, 즉 일반적으로 버스의 Output Bus Volume과 Output Bus LPF에 사용해야 합니다. Actor-Mixer와 같은 이유로 버스의 Bus Volume 속성보다 Output Bus Volume 속성이 더 주로 사용됩니다. 해당 잔향과 리스너 공간 잔향의 커플링에 사용되는 보조 전송 경로에 영향을 미쳐서는 안되기 때문이죠.

또 다른 방법으로, 내장된 프로젝트 전반에 걸친 방해(obstruction)를 사용해 Spatial Audio의 회절로부터 오디오를 조정할 수 있습니다. 이 방법을 사용할 때는 Spatial Audio가 계산된 Diffraction을 이용해 방해를 이끌어냅니다. Diffraction 내장 게임 매개 변수와 비교했을 때, 프로젝트 전체에 대한 방해는 Wwise Project 전체에 전역적인 곡선으로 매핑됩니다. Project Setting에서 이를 설정할 수 있습니다. 위에서 언급한 것처럼 Obstruction Volume, LPF 및 HPF는 Output Bus Volume, LPF 및 HPF에 적용됩니다. 방해 곡선이 전역적이기 때문에 프로젝트 전체의 방해를 이용한 방법은 Diffraction 내장 게임 매개 변수 방법보다 사용이 제한적입니다. 반면, 적은 조정과 편집만으로도 통제가 가능하다는 장점이 있습니다 (RTPC 이용). 또한 각각의 게임 오브젝트 위치에 일일이 Obstruction 값을 적용해야 하는 번거로움 없이 내장 게임 매개 변수는 한 값만 적용하면 모든 게임 오브젝트의 위치에 적용되는 이점이 있습니다. (복수의 값을 설정할 경우, 가장 작은 값이 선택됩니다.) 앞서 언급했듯, 여러 게임 오브젝트 위치 지정은 Room에 한 개 이상의 Portal이 있을 때 사용합니다.

Virtual Positioning and Diffraction Through Portals

When the Spatial Audio's initialization setting AkSpatialAudioInitSettings::bCalcEmitterVirtualPosition is set, the position of the emitters located in Rooms that are adjacent to the listener is modified such that they seem to appear from the diffracted angle, if applicable. 아래 3D Game Object Profiler의 스크린샷을 보면, 리스너 (Listener L)는 Portal의 오른쪽에 있고 '진짜' 이미터는 왼쪽 아래에 있습니다 (Emitter E, 방향 벡터 없음). Spatial Audio는 이동 거리를 유지하며 이미터의 위치를 왼쪽 위로 옮겨, 변경된 위치가 마치 그 구석에서 오는 것처럼 만듭니다. 리스너는 Portal 가장자리의 음영 영역에 대해 약 45도 각도에 위치하고 있어, 두 교차점에 작성되어 있듯이 27의 회절을 만들어냅니다.

Room에 여러 개의 Portal이 연결돼있을 경우, Spatial Audio는 이미터에 복수의 위치를 할당할 수 있습니다 (Portal 당 하나씩). MultiPosition_MultiDirection 모드를 사용하면 특정 Portal의 활성화 또는 비활성화 여부가 다른 Portal의 지각적 볼륨에 영향을 끼치지 않도록 할 수 있습니다.

Transmission

Sound transmission between rooms is modeled separately for the wet path and for the dry path. Here, the dry path is referred to as Source Transmission and the wet path as Room Transmission

Source Transmission

When an emitter is in a different room than the listener, and has no direct line of sight through a portal, Spatial Audio models sound transmission through walls by applying a transmission loss factor to the game object. In a manner similar to diffraction, transmission loss can be auralized using one of two methods, via the Occlusion curve in the Wwise Project Settings, or via the Transmission Loss built-in parameter.

참고: While the occlusion curve is a global setting for all sounds, using it to simulate transmission loss is preferred over an RTPC, because it provides greater accuracy when modeling both transmission and diffraction. This is due to the fact that RTPCs can not be applied to individual sound paths, therefore any parameter mapped to a transmission loss RTPC will also affect any potential diffraction paths originating from an emitter.

Transmission loss between rooms is calculated from the Room settings' AkRoomParams::TransmissionLoss parameter, by taking the maximum value between the listener's Room and the emitter's Room.

If a sound emitter is blocked by one or more geometric surfaces, then the transmission loss factor of the geometry (as defined by AkAcousticSurface::transmissionLoss) is applied. In the case that there is more than one surface between the emitter and listener, then the maximum transmission loss factor is taken.

Likewise, if a sound is both blocked by geometry, and is in a different room from the listener, it is the maximum value of all transmission loss contributors that is applied.

The resulting transmission loss is applied directly to the Occlusion curve in the wwise project settings and to the transmission loss built-in parameter. The Occlusion curve then maps to volume, LPF, and HPF via the global, project-wide curves, defined in the Obstruction/Occlusion tab of the Project Settings.

Room Transmission

In addition to sound transmission of individual emitters within a room, Spatial Audio models sound transmission of the room itself. This includes the contribution of the diffuse reverb field, as well as any room tones that may be playing inside a room, transmitting through walls.

As is the case with source transmission, the room's transmission loss is calculated as the greater of the transmission loss factors when comparing the source room and the listener's room. Room transmission loss, like source transmission loss, can be auralized using one of two methods, via the Occlusion curve in the Wwise Project Settings, or via the Transmission Loss built-in parameter.

참고: To enable room transmission, it is necessary to define a shape for the room so that the room has a source and an extent. The room shape is calculated from the bounding box surrounding the geometry associated with the room. To set up room transmission via the API, refer to Setting up Room Geometry.

Room Coupling

Portal을 통해 리스너의 공간으로 관통하는 인접 공간들의 분산 에너지는 해당 Portal에 위치한 음원들처럼 보일 수 있어 기존 리스너의 공간에 영향을 끼치게 됩니다. 즉, 리스너 Room의 Auxiliary Bus로 전송돼야 합니다. 이를 위해선 앞서 언급한 것처럼, 인접한 Room의 보조 버스에서 Enable Game-Defined Sends 체크 상자를 체크하면 됩니다. Game-Defined Send Offset을 이용해 다른 공간의 잔향으로 전송되는 양을 조정할 수 있습니다.

Multiple Room Traversal

사운드 전달은 여러 공간에 대해서도 동작합니다. 전달 경로를 검색하면 Spatial Audio 내에서 Room 트리를 검색합니다. Room을 이미 검색한 경우에는 검색을 중지해 순환 연결을 피합니다. 얼마나 깊이까지 검색할 지는 Spatial Audio의 초기화 설정 AkSpatialAudioInitSettings::uMaxSoundPropagationDepth 에 의해 결정됩니다 (기본 설정은 8).

Room Game Object Behavior

Spatial Audio는 각 Room에 대해 하나의 게임 오브젝트를 Wwise에등록합니다.

주의: 이 게임 오브젝트의 위치 지정과 보조 센드 값을 직접 수정해서는 안 됩니다.

Room에 리스너가 있을 경우, 해당 Room의 게임 오브젝트는 이 리스너를 따라가도록 움직입니다. 따라서 Room과 Listener 오브젝트의 거리는 약 0입니다. 그러나 Room 설정 (AkRoomParams)에 지정되어있는 방향은 유지됩니다 . 3D 버스의 방향에 대한 설명은 Setting Up a Room Auxiliary Bus in Wwise 를 참고하세요.

리스너가 Room의 바깥에 있을 경우, 이 Room의 게임 오브젝트는 해당 Portal의 위치를 사용합니다. 더 정확히 말해, Portal의 뒷편, 즉 Portal의 접선에 리스너가 투영(projection)되는 위치 선상에서 Portal의 크기 끝에 고정됩니다. 위의 Virtual Positioning and Diffraction Through Portals 섹션에 있는 3D Game Object Profiler 스크린샷에서 Room의 게임 오브젝트를 통해 이를 확인할 수 있습니다.

여러 Portal이 있는 경우, 이미터와 동일한 이유로 MultiPosition_MultiDirection mode 에서 Room의 게임 오브젝트가 복수의 위치에 할당됩니다.

Portal 내부에서 전환이 일어날 경우 "Room-내부"와 "Portal"의 작동 방식은 부드럽게 보간(interpolate)됩니다.

Room Tones

The Room Game Object's primary purpose is to spatialize reverb (the emitter's "wet path"), however it is possible to leverage the spatialization behavior of Rooms and Portals (described in Room Game Object Behavior) and post events directly on the Room Game Object to implement room tones. For setting up room tones in Wwise, refer to Setting Up a Room Tone in Wwise. For posting events refer to Posting Events on Room Game Objects.

Portal Spread and Aperture

The spread of a sound in Wwise determines the width of the sound field that is constructed when a 3D sound is panned onto an Audio Bus. For most sounds, spread is defined in Wwise by a curve in the attenuation settings of the sound. However, for sounds played on Room Game Objects (i.e. room tones) and for the reverb sent to a Room Auxiliary bus, it is not necessary to define such a curve, because Spatial Audio calculates the spread automatically.

Furthermore, if a sound has a spread curve defined in the attenuation settings in Wwise, and that sound traverses one or more portals, its final spread value is subject to the Aperture value of those portals. The Aperture value can be thought of as an upper-limit placed on the spread of a sound, and simulates the constriction of the sound field as the sound passes through the portal.

The spread of a sound emitter can be visualized in the Game Object 3D Viewer in Wwise, with the following settings:

  • Obstruction/Occlusion Data must be selected in the Profiler Settings dialog box prior to capturing data.
  • Show Spread Cones must be selected in the Game Object 3D Viewer Settings dialog box.

The Game Object Spread and portal Aperture values can also be viewed in the Obs/Occ tab of the Advanced Profiler.

Game Object Spread

A game object may have a Spread value that is calculated by Spatial Audio from a determined volumetric extent for the sound. In the case of emitter Game Objects, this volumetric extent is defined by the AK::SpatialAudio::SetGameObjectRadius API, otherwise taken as a point source if the function is not called.

For Room Game Objects, the Spread value is the same as the Aperture value, and it is calculated by approximating the solid angle that each portal subtends on the listener. Note that a Room Game Object has a unique spread value per portal (recall each portal is rendered as a unique sound position).

참고: In the case that a Game Object has a spread curve defined in an Attenuation ShareSet, the spread curve takes precedence over the Game Object's radial extent passed into AK::SpatialAudio::SetGameObjectRadius.

Portal Aperture

The Aperture value for a Game Object is calculated on a per-path basis, and is the result of the minimum spread value for all portals traversed in a particular sound path. In the case of Room Game Objects, Spread and Aperture take on the same value.

Spread Calculation Summary

For a given sound position and listener pair, the final spread value is calculated as follows:

  • The sound's spread curve is evaluated at the distance between the sound position and the listener.
  • If no spread curve exists, the spread value is determined by the game object's radius (see AK::SpatialAudio::SetGameObjectRadius). If no radius is given, and no spread curve is defined, the spread is take as 0%.
  • The sound's Aperture value is calculated from all portals in the sound position's path. Multiple portals' Apertures are combined by taking the minimum value.
  • The sound's spread (originating from the spread curve or the Game Object's Spread) and Aperture are combined by taking the lesser of the two. This is the final spread value passed to the panner in the Sound Engine.

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

지원이 필요하신가요?

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

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

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

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

Wwise를 시작해 보세요