menu
버전
2022.1.19.8584
2024.1.6.8842
2023.1.14.8770
2022.1.19.8584
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
2024.1.6.8842
2023.1.14.8770
2022.1.19.8584
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
Wwise SDK 2022.1.19
|
Room과 Portal을 만들 때에는 AK::SpatialAudio::SetRoom
과 AK::SpatialAudio::SetPortal
을 사용하여 맵이나 레벨의 지오메트리에 따라 생성해야 합니다. Room과 Portal에는, 동일한 ID로 이 함수들을 다시 호출하여 런타임에 변경할 수 있는 설정이 있습니다. 그러면 게임이 각 이미터와 리스너에 대해 AK::SpatialAudio::SetGameObjectInRoom
를 호출해 이들이 어느 공간에 있는지 Spatial Audio에게 알려줍니다. Spatial Audio 관점으로 보자면, Room에는 정의된 위치나 모양, 크기가 없습니다. 따라서 Room은 이론적으로는 어떤 모양이든 될 수 있지만, 오브젝트가 있는 Room에 대해 게임 엔진 단에서 반드시 교차 검사(containment test)를 거쳐야 합니다.
dangerous | 주의: Room ID를 주의하세요. Room ID는 게임 오브젝트와 동일한 범위를 공유하므로, 이미 게임 오브젝트로 사용 중인 ID를 사용하지 않도록 조심해야 합니다. |
dangerous | 주의: Spatial Audio는 각 Room에 대해 게임 오브젝트를 Wwise에 등록합니다. 사용자는 환경/공간 톤 사운드를 위한 해당 게임 오브젝트에 이벤트를 전달할 수 있지만, AK::SoundEngine 호출시 오브젝트의 위치나 게임에서 정의한 센드를 변경해서는 안 됩니다. |
Room 설정에 있어 가장 중요한 것은 AkRoomParams::ReverbAuxBus
로서, 해당 Room 안에 있을 때 이미터가 어느 보조 버스를 전송해야 할 지 Spatial Audio에게 알려줍니다. 다른 설정에 대해서는 아래 섹션에서 다룰 예정입니다 ( Wwise에서 Room Auxiliary Bus 설정하기 와 Transmission 을 참고하세요).
Portal은 두 Room 사이 열려있는 공간을 나타냅니다. Room과는 반대로 Portal은 위치와 크기가 존재하기 때문에 Spatial Audio가 스스로 교차 검사를 할 수 있습니다. Portal의 크기는 Portal 설정 AkPortalParams::Extent
에서 결정합니다. 너비와 높이(X와 Y)는 Spatial Audio가 회절과 확산을 계산하는 데 사용하며, 깊이(Z)는 연결된 두 Room 사이 부드러운 전환을 만들어내는 영역을 정의합니다. 이 때 Spatial Audio는 보조 전송 레벨과 Room 오브젝트 배치, Spread(확산, 3D Spatialization에 사용됨)를 신중히 처리합니다. 자세한 내용은 아래 섹션 Wwise에서 Room Auxiliary Bus 설정하기 및 Summary of Sound Propagation Features 를 참조하세요. Portal은 또한, AkPortalParams::bEnabled
Portal 설정을 통해 활성화(열림)하거나 비활성화(닫힘)할 수 있습니다.
Room Game 오브젝트에 이벤트를 전달하여 공간화 동작을 활용할 수 있습니다. AK::SoundEngine::PostEvent 를 호출하고 Room ID를 AkGameObjectID 로 전달하기만 하면 됩니다. AkRoomID::AsGameObjectID 를 호출하여 Room ID를 AkGameObjectID 로 안전하게 캐스팅할 수 있습니다. 이벤트를 전달할 때 Room을 사용할 경우, Spatial Audio에서 Room Game Object가 사용되지 않을 때 이를 등록 취소하지 않도록 설정해야 합니다. 그렇게 하려면 AkRoomParams::RoomGameObj_KeepRegistered 를 true로 설정해야 합니다.
또한, 룸 톤을 사용할 때 Game Object를 자체 Room Auxiliary Bus로 보내는 것이 유용할 수 있습니다. 그렇게 하려면 AkRoomParams::RoomGameObj_AuxSendLevelToSelf 에 0보다 큰 값을 전달합니다.
Associating a Geometry Instance with a Room serves two purposes:
Setting up room geometry is optional. Without room geometry, the room will not be visible in the Game Object 3D viewer, and Spatial Audio will estimate the extent of the room (for room transmission) by calculating a bounding box that encompasses all attached portals. For more information about room transmission refer to Room Transmission.
지오메트리를 Room과 연결하려면 먼저 AK::SpatialAudio::SetGeometry 를 사용하여 Wwise에 지오메트리를 전달합니다. 그런 다음 위치, 크기 및 회전을 지오메트리에 할당하기 위해 Geometry Instance를 만들어야 합니다. AK::SpatialAudio::SetGeometryInstance 를 참조하세요. 마지막으로 AK::SpatialAudio::SetRoom 을 호출할 때 AkRoomParams::GeometryInstanceID 영역에 Room을 나타내는 Geometry Instance의 ID를 입력합니다. Spatial Audio는 AK::SpatialAudio::SetGeometryInstance 에 대한 해당 호출이 있었거나 있을 것이라고 가정하지만 AK::SpatialAudio::SetRoom 과 AK::SpatialAudio::SetGeometryInstance 가 호출되는 순서는 중요하지 않습니다.
For information regarding how to define geometry in Spatial Audio, refer to 지오메트리.
info | 참고: Spatial Audio does not perform containment tests using the Geometry Set. It is the responsibility of the game to do so, and to then call AK::SpatialAudio::SetGameObjectInRoom with the results of the containment test to define the current room for each Game Object. |
info | 참고: 지오메트리를 반사 및 회절 계산이 아닌 Room을 설명하는 데만 사용하려는 경우 AkGeometryParams::EnableTriangles 를 false로 설정해야 합니다. |
dangerous | 주의: AkRoomParams::GeometryInstanceID 를 AkGeometryInstanceParams::RoomID 와 혼동해서는 안 됩니다. AkRoomParams::GeometryInstanceID 는 위에 설명한 대로 Game Object 3D Viewer에서 전달 확산 계산과 시각화를 위한 실내 경계 상자를 정의하는 데 사용됩니다. AkGeometryInstanceParams::RoomID 는 Spatial Audio 내부에서 레이 트레이싱을 수행할 때 지오메트리가 표시되거나 접근 가능한 범위를 제한하기 위한 최적화로만 사용됩니다. |
AK::SoundEngine::SetMultiplePositions
를 사용할 때, Spatial Audio는 API에 전달된 각 사운드 위치에 대한 반사, 회절, 전달을 포함한 다양한 계산을 수행합니다.
게임 오브젝트에 room 센드를 사용하는 AK::SoundEngine::SetMultiplePositions
를 사용할 때 주의해야 할 몇 가지 중요한 점이 있습니다. 게임 오브젝트는 주어진 시간에 단 하나의 room에만 할당될 수 있기 때문입니다( AK::SpatialAudio::SetGameObjectInRoom
사용). 이러한 제한은 사운드 엔진 내에서 모든 사운드 위치가 동일한 Auxiliary 센드 구성을 가져야 한다는 제약에서 발생합니다.
모든 사운드 경로는 이미터 위치를 기준으로 계산되며 요청된 (단일) room을 기준으로 수행됩니다. 이러한 이유로, AK::SpatialAudio::SetGameObjectInRoom
을 통해 설정된 (게임에서 정의된) room 경계의 밖에 사운드 위치가 있는 경우, 결과로 나타나는 사운드 경로에 오류가 발생할 가능성이 높습니다.
또한, 게임 오브젝트가 포털을 통해 전환되는 경우 Spatial Audio는 AK::SoundEngine::SetMultiplePositions
에 전달된 모든 사운드 위치의 평균을 구하고 이를 사용하여 두 room 사이의 크로스 페이드를 계산합니다.
이러한 이유로 게임에서도 평균 사운드 위치를 사용하여 Room 봉쇄(containment)를 도출하고 결과로 나온 Room ID를 AK::SpatialAudio::SetGameObjectInRoom
에 전달하는 것이 좋습니다.
SDK/samples/IntegrationDemo에 위치한 Integration Demo 예제에는 API 사용 방법을 보여주는 데모 페이지가 있습니다. Demo Positioning > Spatial Audio: Portals 를 확인하세요.
프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.
Wwise를 시작해 보세요