버전

menu_open
알림: 고객님의 주요 출시 버전( 2023.1.8.8601 )에 해당하는 최신 설명서로 이동했습니다. 특정 버전의 설명서를 보시려면 Audiokinetic 런처에서 오프라인 설명서를 다운로드하고 Wwise Authoring의 Offline Documentation을 확인하세요.
Wwise Unreal Integration Documentation
Spatial Audio Blueprint 컴포넌트

이제까지 저희는 미리 제작된 액터를 사용하거나 각 액터 인스턴스에 컴포넌트를 추가함으로써 모든 내용을 레벨 안에서 직접 제작했습니다. 또한 다양한 공간 음향 컴포넌트를 사용하면 레벨 전체에 복제할 수 있는 Blueprint 액터를 구성할 수 있습니다. 이 섹션에서는 Blueprint 클래스를 사용하여 Unreal 프로젝트 준비 섹션에서 구성한 구조의 복제본을 제작해서 세계 안에 쉽게 추가하고 스폰할 수 있도록 해봅시다.

참고:이 튜토리얼을 시작하기 전에 반드시 Spatial Audio 튜토리얼 준비 를 반드시 완료해야 합니다.

Blueprint 클래스 구성하기

AkLateReverbComponentAkRoomComponent 는 오염 시험을 통해 주어진 게임 오브젝트의 위치가 해당 상위 PrimitiveComponent 안에 있는지의 여부를 확인합니다. 이 시험에는 단순 충돌이 사용됩니다. 그렇기 때문에 단순 충돌이 있는 상위 PrimitiveComponent 를 사용해야 합니다. 예를 들어 상자 충돌, 구형 충돌, 캡슐 충돌 컴포넌트를 사용할 수 있습니다. PrimitiveComponent 에 단순 충돌이 었을 경우 오염 시험이 컴포넌트 경계선을 사용하는데, 이 경우 결과가 보다 덜 정확할 수 있습니다.

It is also possible to add simple collision to a mesh asset in Unreal (see Setting Up Collisions With Static Meshes). However, for complex meshes, such as those with doorways and openings, it is sometimes necessary to 'use complex collision as simple' in the collision settings for the mesh (see Simple versus Complex Collision). 예를 들어 이 설정은 캐릭터가 출입구를 통해 공간 안으로 들어갈 수 있지만 여전히 벽과 충돌하도록 하기 위해 필요할 수 있습니다. 이 설정을 사용할 경우 단순 충돌이 무시되며 메시의 전체 트라이메시(trimesh)가 사용되기 때문에 AkLateReverbComponentAkRoomComponent 에 대한 오염 시험이 실패하게 됩니다. AkLateReverbComponentAkRoomComponent 에 의해 사용되는 단순 충돌은 트라이메시를 지원하지 않습니다. 따라서 Blueprint 클래스에서는 AkLateReverbComponent 컴포넌트와 and AkRoomComponent 를 사용할 경우 단순 충돌 컴포넌트를 상위 계층으로 사용하는 것을 권장합니다. 단순 충돌 컴포넌트의 예시는 상자, 구형, 캡슐이 있습니다. 공간이나 건물에 특정한 메시가 있을 경우 단순 충돌 컴포넌트를 해당 메시의 하위 컴포넌트로 추가할 수 있습니다.

참고:
  • It is possible to combine complex collision with simple collision by using two versions of the mesh. 해당 방법에 대한 설명은 단순 충돌과 복합 충돌 결합하기 을 참고해 주세요.
  • We will use assets from the Unreal Demo Game available from the Wwise Launcher. 프로젝트에서 이러한 에셋을 사용하려면 Unreal Demo Game을 다운로드하고 $<YourWwiseProjectsFolder>/WwiseDemoGame/Content 에서 원하는 에셋을 찾으세요. 그리고 원하는 에셋을 작업중인 프로젝트의 Content 폴더에 복사하여 붙여넣으세요.
  1. 콘텐츠 브라우저에서 우클릭하여 Blueprint Class를 선택하세요.
  2. Actor를 기반 베이스로 선택하고 새로운 클래스의 이름을 'SpatialAudioBP'로 지정하세요.
  3. SpatialAudioBP를 더블 클릭해서 클래스를 열고 Viewport 탭을 클릭하세요.
  4. 루트 컴포넌트가 선택되었는지 확인한 후 Add Component > Static Mesh를 클릭하세요.
  5. 새로운 스태틱 메시 컴포넌트를 클릭하고 Details 패널에서 해당 메시를 선택하세요.

    • 이 예시에서는 Unreal 프로젝트 준비 섹션에서 사용한 SpatialAudioDemoMesh를 선택했습니다.
    • SpatialAudioDemoMesh를 사용할 경우 Materials 섹션에서 SpatialAudioDemoMeshMaterial을 선택해야 합니다.
    스태틱 메시 컴포넌트에서 메시와 물질 설정하기
    참고:포털으로의 자동 자동 지정은 볼록한 메시(convex mesh)에서만 작동합니다. Concave meshes (for example, L-shaped rooms) do not produce accurate portal room intersection.
  6. Add a Box Collision component for each of the individual rooms and doorways in the mesh. Name them BoxRoomLarge, BoxRoomSmall, BoxPortalInner, and BoxPortalOuter.

Repositioning 상자 충돌 컴포넌트

이제 모든 상자 충돌 컴포넌트가 동일한 위치에 서로 겹쳐 있습니다. 이 컴포넌트의 위치, 규모, 방향을 조정해서 공간과 출입구와 정렬되도록 해봅시다. Orthographic 뷰를 사용하면 가장 쉽게 작업할 수 있습니다. (다음 단계는 SpatialAudioDemoMesh에 특정하지만 다른 메시에서도 유사한 단계를 실행할 수 있습니다.)

참고:이 튜토리얼에서 공간과 포털을 메시에 정렬할 때에는 완벽하게 정렬되거나 중심에 있지 않더라도 괜찮습니다. 올바른 영역을 대략 덮어주기만 하면 됩니다. 실제 환경을 설계할 떄에는 Details 패널의 Transform 섹션을 사용해서 정확한 값을 입력할 수 있습니다.
  1. Viewport 탭에서 Perspective를 클릭하고 뷰를 Top으로 변경하세요.

    • 이제 씬을 위에서 아래로 바라보게 되며 씬이 와이어 프레임으로 렌더링됩니다.
    Orthographic Top View
  2. BoxRoomLarge를 선택하고 메시의 큰 공간의 중앙까지 y축을 따라 아래로 움직이세요.
  3. BoxRoomLarge의 크기가 큰 공간의 크기와 맞춰질 때까지 x와 y축을 따라 크기를 변경하세요. (R을 누르거나 Viewport 탭에서 Scale 위젯을 선택해서 크기 변경 모드로 전환할 수 있습니다).

    Position and Scale Large Room on X and Y Axes
  4. BoxRoomSmall을 선택하고 작은 공간의 크기와 맞춰질 때까지 x와 y축을 따라 크기를 변경하세요.

    Position and Scale Rooms on X and Y Axes
  5. BoxPortalInner 를 선택하고 메시에서 내부 출입구 범위가 보이 때까지 와이어 프레임에서 줌 인하세요.

    와이어 프레임 메시에서 출입구의 범위를 찾으세요
  6. BoxPortalInner를 출입구의 중앙으로 옮긴 후 출입구의 범위를 덮도록 x축을 따라 크기를 조정하세요.

    Position and Scale Inner Portal Box to Cover the Doorway
  7. BoxPortalOuter를 선택하고 해당 y 차원이 출입구를 가리키도록 회전시키세요.

    참고:포털에는 포털의 y 차원을 따라 가장 가까운 교차 공간을 감지함으로써 자동 지정되는 앞 공간과 뒷 공간이 있기 때문에 이 작업을 반드시 해주어야 합니다. BoxPortalOuter의 경우 '뒤'(해당 좌표 공간에서)는 메시에서 작은 공간과 연결되며 '앞'은 어떤 공간으로도 연결되지 않습니다.
  8. z축을 중심으로 BoxPortalOuter를 90도 회전시키세요. Details 패널의 Transform 섹션에 있는 z축 Rotation 텍스트 상자에 '90'을 입력하면 됩니다.

    외부 포털 상자가 해당 문 밖에 있는 Y축을 가리키도록 회전시키세요
  9. BoxPortalOuter를 외부 출입구로 옮긴 후 출입구의 범위를 덮도록 크기를 조정하세요.
  10. 상면 뷰에서 모든 공간과 포털이 아래와 같이 메시와 정렬되었는지 확인하세요:

    Rooms and Portals Correctly Aligned in Top View
  11. 이제 z축에서 상자 충돌 컴포넌트의 위치와 크기를 조정해야 합니다. Viewport 탭에서 Top을 클릭하고 뷰를 Back으로 변경하세요.
  12. BoxRoomLargeBoxRoomSmall을 선택하고 공간의 크기와 맞춰질 때까지 z축을 따라 크기를 변경하세요.

    Scale Room Boxes on Z-Axis
  13. BoxPortalOuterBoxPortalInner를 선택하고 출입구의 중앙에 오도록 아래로 옮긴 다음 문의 크기와 맞춰질 때까지 z축을 따라 크기를 조정하세요.

    Position and Scale Portal Boxes on Z-Axis

공간과 포털 설정하기

이제 AkRoom 컴포넌트를 공간에, AkPortal 컴포넌트를 포털에 추가해봅시다.

  1. 상자 충돌 컴포넌트를 하나씩 선택한 다음 Add Component를 선택하세요.
  2. 각 상자 충돌 컴포넌트에서 공간이나 포털 컴포넌트(알맞은대로)를 생성하고 상위 계층과 비슷한 이름으로 지정하세요. 결과가 다음과 같아야 합니다:

    Add AkRoom Components to the Room Boxes and AkPortal Components to the Portal Boxes
    참고:

    컴포넌트를 올바른 상위 계층으로 추가했는지 확인하세요. 예를 들어 AkRoomLarge를 큰 공간에 추가할 경우 Add Component를 클릭하기 전에 먼저 BoxRoomLarge가 선택되었는지 확인하세요.

    AkRoomComponent와 AkPortalComponent는 어떤 기본 컴포넌트로든 추가할 수 있는 일반 컴포넌트입니다. 더 많은 정보는 AkRoomComponentAkPortalComponent 를 참고하세요.

  3. To confirm that the portals have valid placement, select the Visualize Rooms and Portals option in the Wwise User Settings.

    Visualize Rooms and Portals option in the Wwise User Settings
  4. 이제 연결된 공간과 포털 사이에 선이 그려집니다. 포털의 위치가 유효하지 않을 경우 빨간색으로 표시됩니다.

    Portal Room Connections Visualized in the Viewport
    참고:포털에 연결된 공간이 없거나 동일한 공간이 양 면으로 연결되었을 경우 유효하지 않습니다. 더 많은 정보는 AkPortalComponent 를 참고하세요.
  5. Clear Visualize Rooms and Portals in the Wwise User Settings.

지오메트리와 후기 잔향 추가하기

Blueprint 클래스에 추가해야 할 마지막 두 가지 항목은 바로 AkGeometry와 AkLateReverb 컴포넌트입니다.

  1. AkGeometry 컴포넌트를 스태틱 메시 컴포넌트로 추가하세요.
  2. Select the AkGeometry component and in the Details panel, under Geometry, set the Mesh Type to Static Mesh.
  3. AkLateReverb 컴포넌트를 BoxRoomLarge 상자 충돌 컴포넌트로 추가하세요.

    AkGeometry and AkLateReverb Added to the Blueprint Class
  4. Select the AkLateReverb component.
  5. In the Details panel, set the Aux Bus to LargeRoom.

셋업 검토하기

이제 Blueprint 클래스를 사용할 준비가 되었습니다. 클래스의 인스턴스를 세계 안으로 드래그하세요.

  1. 콘텐츠 브라우저에서 공간 음향 데모 맵으로 SpatialAudioBP의 인스턴스를 드래그하세요.
  2. 기존의 빌딩 안에 배치하세요.

    An instance of the Blueprint Class Added to the World
  3. Wwise로 원격 연결하고 에디터에서 재생을 시작하세요.
  4. 마우스를 클릭해서 외부 사운드를 재생하세요.
  5. Wwise의 Game Object Profiler 레이아웃에서 새로운 Blueprint 클래스의 지오메트리가 올바르게 등록되었으며 이 지오메트리에서 레이가 올바르게 반사되는지를 확인하세요.
  6. 새로운 Blueprint 구조에서 레이가 포털을 올바르게 통과하는지 확인하세요.

    Spatial Audio Paths Correctly Interacting with the New Blueprint Class Instance
  7. 후기 잔향 컴포넌트를 시험하기 위해서는 반드시 SpatialAudioBP 인스턴스 안에 있는 큰 공간 안에 사운드를 추가 및 배치해야 합니다. 세계 안에 있는 기존의 Play_Outside AkAmbientSound 액터를 우클릭하고 복제하세요.
  8. 복제한 액터의 이름을 'Play_LargeRoom_BP'로 변경하세요. (또한 Play_LargeRoom_BPButton_Outside 위로 드래그하면 Play_LargeRoom_BP를 World Outliner 계층 구조 안의 Button_Outside로부터 떼어낼 수 있습니다.)
  9. Move Play_LargeRoom_BP inside the large room of the SpatialAudioBP instance.
  10. Open the Level Blueprint and add logic to play the Play_LargeRoom_BP sound when the B key is pressed (see Unreal 프로젝트 준비).

    Logic in the Level Blueprint to Play the New Sound Using the B Key
  11. Level Blueprint를 컴파일 및 저장하세요.
  12. Play the level in the editor.
  13. Press B to play the new sound.
  14. SpatialAudioBP 빌딩 안에 있는 큰 공간 안으로 들어가세요. You can hear the reverb applied to the sound.

단순 충돌과 복합 충돌 결합하기

이 섹션에서는 Spatial Audio 교차 검사(containment test)가 단순 충돌을 사용하여 수행되고 Unreal 쿼리가 복합 충돌을 사용하는 것과 같이, 동일한 메쉬에서 단순 충돌과 복합 충돌을 결합하는 방법을 다룹니다.

참고:이 섹션은 Audiokinetic 런처에서 제공되는 WwiseDemoGame 프로젝트의 'SpatialAudioTutorialMap'과 ComplexRoomDemo 폴더에 있는 에셋을 기반으로 합니다. 사전 제작된 메쉬 에셋과 커스텀 Blueprint 클래스는 단순 충돌과 복합 충돌을 결합하는 데 사용됩니다.

For complex meshes, such as those with doorways and openings, it is sometimes necessary to 'use complex collision as simple' in the collision settings for the mesh (refer to Simple versus Complex Collision). 예를 들어 이 설정은 캐릭터가 출입구를 통해 공간 안으로 들어갈 수 있지만 여전히 벽과 충돌하도록 하기 위해 필요할 수 있습니다. When this setting is used, the containment tests for AkLateReverbComponent and AkRoomComponent fail because the simple collision is ignored and the mesh's full trimesh is used. AkLateReverbComponentAkRoomComponent 에 의해 사용되는 단순 충돌은 트라이메시를 지원하지 않습니다.

One solution to this problem is to create two duplicates of the same mesh asset, using simple collision for one, and complex collision for the other. In the SpatialAudioTutorialMap, there is a complex room structure that demonstrates this technique.

To begin, test the complex room structure by playing in editor and walking around the building:

  1. Open the SpatialAudioTutorialMap in Unreal.
  2. Click Play in Editor.
  3. Press C to trigger the sound in the non-box-shaped building.
    SpatialAudioTutorialMap에 있는 상자 모양이 아닌 공간
    Walk around the exterior of the building. The sound is occluded.

The rest of this tutorial demonstrates how the building structure is configured to handle simple collision for Wwise Spatial Audio containment tests, as well as complex collision for Unreal physics containment tests.

  1. In the context browser, browse to WwiseAssets/SpatialAudioDemo/ComplexRoomDemo.

    SpatialAudioTutorialMap의 ComplexRoomDemo 에셋

    This folder contains two Static Mesh assets: Building_Complex and Building_Simple.

  2. Open each of these assets and scroll to the collision settings in the Details Panel.

    Notice that they have different values for their respective Collision Complexity properties.

Building_Complex 메쉬 에셋
Building_Simple 메쉬 에셋

Building_Complex에는 Collision Complexity가 'Use Complex Collision As Simple'로 설정되어 있습니다. 이 경우 Unreal은 해당 메쉬에 대해 단순화된 지오메트리를 생성하지 않고 전체 트라이메쉬를 사용합니다. 이렇게 하면 캐릭터가 출입구를 통해 걸을 수 있습니다. Building_Simple의 Collision Complexity가 'Use Simple Collision As Complex'으로 설정되어 있습니다. 그래서 언리얼은 단순화된 지오메트리를 생성하고 트라이메쉬를 무시합니다. 바로 이를 통해 Spatial Audio는 공간 교차에 대한 교차 검사를 할 수 있습니다.

참고:Collision Complexity를 'Simple And Complex'으로 설정할 수 있습니다. 하지만 이렇게 하면 언리얼은 충돌 쿼리에 단순화된 지오메트리를 사용하게 되고, 결국 캐릭터가 출입구를 통해 들어갈 수 없게 되어버립니다. 이 경우 대신 두 개의 동일한 메시를 사용해서 하나는 복잡한 지오메트리를, 다른 하나는 단순한 지오메트리를 사용할 수 있습니다.

다음 단계는 커스텀 Blueprint 클래스 내에서 두 메쉬를 결합하는 것입니다.

  • BuildingBP Blueprint를 여세요.

이 Blueprint는 서로의 바로 위에 배치된 두 개의 스태틱 메쉬 컴포넌트를 사용합니다.

BuildingBP Blueprint의 스태틱 메쉬 컴포넌트
StaticMesh_Complex 컴포넌트의 경우 Building_Complex 메쉬가 사용됩니다.
StaticMesh_Simple 컴포넌트의 경우 Building_Simple 메쉬가 사용됩니다.
StaticMesh_Simple 렌더링 설정

StaticMesh_Simple 컴포넌트의 경우 Rendering 섹션에서 'Visible'이 비활성화되고 'Hidden in Game'이 활성화됩니다. 이는 이 메쉬가 단순한 지오메트리에만 사용되어 Spatial Audio에 대한 교차 검사를 수행할 수 있기 때문입니다.

StaticMesh_Simple Collision Presets 설정

또한 StaticMesh_Simple 컴포넌트의 경우 Collision Presets 속성이 'Trigger'로 설정됩니다. 단순화된 지오메트리는 출입구에 장벽을 만듭니다. 'Trigger' 충돌 프리셋을 사용하면 캐릭터와 기타 게임 오브젝트가 단순화된 지오메트리를 통해 자유롭게 이동할 수 있습니다.

StaticMesh_Simple 컴포넌트에는 AkRoom 컴포넌트와 AkLateReverb 컴포넌트가 연결되어 있습니다. 이러한 방식으로 Building_Simple 메쉬의 단순 충돌이 공간 교차 검사에 사용됩니다.

사운드가 BuildingBP의 메쉬에서 반사 및 회절되도록 하려면 Static Mesh Component 중 하나에 AkGeometry Component를 추가해야 합니다. In this solution, because we are also using Reverb Parameter 예측, it is best to add it to the StaticMesh_Simple component. AkLateReverb Component는 형제 AkGeometry Component의 Acoustic Textures를 사용하여 HF Damping을 계산합니다. AkGeometry Component를 Static Mesh로 설정하면 단순 충돌 메쉬 대신 전체 복합 지오메트리(full complex geometry)가 Wwise Spatial Audio로 전송됩니다.

마지막으로, AkPortal Component가 연결된 Box Collision Component는 출입구에 음향 포털을 추가하는 데 사용됩니다.

BuildingBP Blueprint의 포털

건물 내부가 잘 보이도록 Point Light도 추가되었습니다.

참고:
  • When sending geometry to Wwise, there is a limitation that each edge can have no more than two triangles connected. Remember this when designing meshes to use with Spatial Audio.
  • When using the Game Object Profiler in Wwise, Room Extents will always be visualized as green cuboids, regardless of the geometry assigned to the room.
  • Adding simple collision to meshes in Unreal will only work correctly when the mesh is convex. 보다 복잡한 메쉬 구조의 경우 단순 충돌 지오메트리를 사용해서 메쉬를 근사화하는 것이 가장 좋습니다. Static Mesh 에디터의 Collision 메뉴에서 단순 충돌 프리미티브(Simple collision primitive)를 메시에 추가할 수 있습니다.
    메시 에셋에 충돌 프리미티브 추가하기
    Refer to Setting Up Collisions With Static Meshes for further information.

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

지원이 필요하신가요?

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

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

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

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

Wwise를 시작해 보세요