버전

menu_open
Wwise Unreal Integration Documentation
Spatial Audio Blueprint 컴포넌트

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

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

Blueprint 클래스 구성하기

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

또한 Unreal에서 메시 에셋에 단순 충돌을 추가할 수도 있습니다 (스태틱 메시에 콜리전 구성(Setting Up Collision With Static Meshes 참조). 하지만 출입구와 열린 공간과 같은 컴플렉스 메시의 경우 경우에 따라 메시의 충돌 설정에서 'use complex collision as simple(복합 충돌을 단순 충돌로 사용)'을 사용해야 할 수도 있습니다 (단순 vs 복합 콜리전 (Simple Vs Complex Collision) 참조). 예를 들어 이 설정은 캐릭터가 출입구를 통해 공간 안으로 들어갈 수 있지만 여전히 벽과 충돌하도록 하기 위해 필요할 수 있습니다. 이 설정을 사용할 경우 단순 충돌이 무시되며 메시의 전체 트라이메시(trimesh)가 사용되기 때문에 AkLateReverbComponentAkRoomComponent 에 대한 오염 시험이 실패하게 됩니다. AkLateReverbComponentAkRoomComponent 에 의해 사용되는 단순 충돌은 트라이메시를 지원하지 않습니다. 따라서 Blueprint 클래스에서는 AkLateReverbComponent 컴포넌트와 and AkRoomComponent 를 사용할 경우 단순 충돌 컴포넌트를 상위 계층으로 사용하는 것을 권장합니다. 단순 충돌 컴포넌트의 예시는 상자, 구형, 캡슐이 있습니다. 공간이나 건물에 특정한 메시가 있을 경우 단순 충돌 컴포넌트를 해당 메시의 하위 컴포넌트로 추가할 수 있습니다.

참고:두 가지 버전의 메쉬를 사용해서 복합 충돌과 단순 충돌을 결합할 수 있습니다. 해당 방법에 대한 설명은 단순 충돌과 복합 충돌 결합하기 을 참고해 주세요.
참고:여기서는 Wwise 런처에서 사용할 수 있는 Unreal Demo Game의 에셋을 사용하겠습니다. 프로젝트에서 이러한 에셋을 사용하려면 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 mesh) (예: L- 모양 공간)은 정확한 포털 공간 교차를 만들어낼 수 없습니다.
  6. 메시의 각 공간 및 출입구에 상자 충돌 컴포넌트를 추가하세요.

    • 이 튜토리얼에서 상자 충돌 컴포넌트의 이름은 BoxRoomLarge, BoxRoomSmall, BoxPortalInner, BoxPortalOuter로 지정했습니다.
    메시의 공간과 포털에 상자 충돌 컴포넌트를 추가하세요

Repositioning 상자 충돌 컴포넌트

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

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

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

    X와 Y축에서 큰 공간의 위치와 크기를 조정하세요
  4. BoxRoomSmall을 선택하고 작은 공간의 크기와 맞춰질 때까지 x와 y축을 따라 크기를 변경하세요.

    X와 Y축에서 공간 위치와 크기를 조정하세요
  5. BoxPortalInner 를 선택하고 메시에서 내부 출입구 범위가 보이 때까지 와이어 프레임에서 줌 인하세요.

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

    내부 포털 상자가 출입구를 덮도록 위치와 크기를 조정하세요
  7. BoxPortalOuter를 선택하고 해당 y 차원이 출입구를 가리키도록 회전시키세요.

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

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

    상면 뷰에서 공간과 포털이 알맞게 정렬되었습니다
  11. 이제 z축에서 상자 충돌 컴포넌트의 위치와 크기를 조정해야 합니다. Viewport 탭에서 Top을 클릭하고 뷰를 Back으로 변경하세요.
  12. BoxRoomLargeBoxRoomSmall을 선택하고 공간의 크기와 맞춰질 때까지 z축을 따라 크기를 변경하세요.

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

    Z축에서 포털 상자의 위치와 크기를 조정하세요

공간과 포털 설정하기

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

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

    AkRoom 컴포넌트를 공간 상자에 추가하고 AkPortal 컴포넌트를 포털 상자에 추가하세요
    참고:

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

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

  3. 포털이 올바르게 배치되었는지 확인하기 위해 Integration Settings에서 Visualize Rooms and Portals 옵션을 선택하세요.

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

    포털 공간 연결을 뷰포트에서 시각적으로 확인할 수 있음
    참고:포털에 연결된 공간이 없거나 동일한 공간이 양 면으로 연결되었을 경우 유효하지 않습니다. 더 많은 정보는 AkPortalComponent 를 참고하세요.
  5. Integration Settings에서 Visualize Rooms and Portals 옵션을 선택 해제하세요.

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

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

  1. AkGeometry 컴포넌트를 스태틱 메시 컴포넌트로 추가하세요.
  2. AkLateReverb 컴포넌트를 BoxRoomLarge 상자 충돌 컴포넌트로 추가하세요.

    AkGeometry와 AkLateReverb가 Blueprint 클래스로 추가됨
  3. AkLateReverb 컴포넌트를 클릭하세요.
  4. Details 패널에서 보조 버스를 LargeRoom으로 설정하세요.

셋업 검토하기

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

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

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

    공간 음향 경로가 새로운 Blueprint 클래스 인스턴스와 올바르게 상호작용함
  7. 후기 잔향 컴포넌트를 시험하기 위해서는 반드시 SpatialAudioBP 인스턴스 안에 있는 큰 공간 안에 사운드를 추가 및 배치해야 합니다. 세계 안에 있는 기존의 Play_Outside AkAmbientSound 액터를 우클릭하고 복제하세요.

    기존의 Play_Outside Sound를 복제하세요
  8. 복제한 액터의 이름을 'Play_LargeRoom_BP'로 변경하세요. (또한 Play_LargeRoom_BPButton_Outside 위로 드래그하면 Play_LargeRoom_BP를 World Outliner 계층 구조 안의 Button_Outside로부터 떼어낼 수 있습니다.)
  9. Play_LargeRoom_BP를 SpatilAudioBP 인스턴스 안에 있는 큰 공간 안으로 옮기세요.

    사운드를 큰 공간 안에 배치하세요
  10. Level Blueprint를 열고 B 키를 누르면 Play_LargeRoom_BP 사운드가 재생되도록 논리를 추가하세요 ( Unreal 프로젝트 준비 3 단계 참고).

    Level Blueprint에서 B 키를 사용하여 새로운 사운드를 재생하는 논리
  11. Level Blueprint를 컴파일 및 저장하세요.
  12. 에디터에서 재생을 시작하세요.
  13. B를 눌러서 새로운 사운드를 재생하세요.
  14. SpatialAudioBP 빌딩 안에 있는 큰 공간 안으로 들어가세요.
    • 잔향이 적용되는 것이 들립니다.

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

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

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

출입구와 열린 공간이 있는 등 복잡한 메쉬의 경우 경우에 따라 메쉬의 충돌 설정에서 'use complex collision as simple(복합 충돌을 단순 충돌로 사용)'을 사용해야 할 수도 있습니다 (단순 vs 복합 콜리전 (Simple Vs Complex Collision) 참조). 예를 들어 이 설정은 캐릭터가 출입구를 통해 공간 안으로 들어갈 수 있지만 여전히 벽과 충돌하도록 하기 위해 필요할 수 있습니다. 이 설정을 사용할 경우 단순 충돌이 무시되며 메시의 전체 트라이메시(trimesh)가 사용되기 때문에 AkLateReverbComponentAkRoomComponent 에 대한 오염 시험이 실패하게 됩니다. AkLateReverbComponentAkRoomComponent 에 의해 사용되는 단순 충돌은 트라이메시를 지원하지 않습니다.

이에 대한 한 가지 해결책은 동일한 메쉬 에셋의 복사본 두 개를 만들어서 하나는 단순 충돌을 사용하고 다른 하나는 복합 충돌을 사용하는 것입니다. SpatialAudioTutorialMap에 이 기술이 사용된 복잡한 공간 구조가 있습니다.

에디터에서 해당 맵을 플레이해서 건물 주변을 걸어다니며 복잡한 공간 구조를 시험해보세요.

  • Unreal에서 SpatialAudioTutorialMap을 여세요.
  • 'Play in Editor' 옵션을 활성화하세요.
  • 상자 모양이 아닌 건물에서 소리를 트리거하려면 'C'를 누르세요.
    SpatialAudioTutorialMap에 있는 상자 모양이 아닌 공간
    • 여기에서는 건물 외부를 돌아다닐 수 있으며 소리가 차단됩니다.

이 튜토리얼의 나머지 부분을 따라하면서 Wwise Spatial Audio 교차 검사를 위한 단순 충돌과 Unreal 물리 교차 검사를 위한 복합 충돌을 처리하도록 건물 구조가 어떻게 설정되었는지 살펴보세요.

  • 콘텍스트 브라우저에서 WwiseAssets/SpatialAudioDemo/ComplexRoomDemo로 이동하세요.

    SpatialAudioTutorialMap의 ComplexRoomDemo 에셋

이 폴더에는 'Building_Complex'와 'Building_Simple'이라는 두 개의 스태틱 메쉬 에셋이 포함되어 있습니다.

  • 각 에셋을 열어서 Details Panel의 충돌 설정(collision settings)으로 이동하세요.

Collision Complexity 속성에 다른 값이 할당되어 있음을 알 수 있습니다.

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를 추가해야 합니다. 이 솔루션은 Reverb Parameter 예측 도 사용하고 있으므로 StaticMesh_Simple 컴포넌트에 추가하는 것이 가장 좋습니다. 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도 추가되었습니다.

참고:지오메트리를 Wwise로 보낼 때에는 각 모서리에 연결된 삼각형이 2개 이하여야 한다는 제한이 있습니다. Spatial Audio와 함께 사용할 메쉬를 디자인할 때 이 점을 고려해야 합니다.
참고:Wwise에서 Game Object Profiler를 사용할 때 Room Extent는 공간에 할당된 지오메트리와 관계없이 항상 초록색 직육면체로 표시됩니다.
참고:Unreal에서 메쉬에 단순 충돌을 추가하는 것은 메쉬가 볼록한 보양일 경우에만 제대로 작동합니다. 보다 복잡한 메쉬 구조의 경우 단순 충돌 지오메트리를 사용해서 메쉬를 근사화하는 것이 가장 좋습니다. Static Mesh 에디터의 Collision 메뉴에서 단순 충돌 프리미티브(Simple collision primitive)를 메시에 추가할 수 있습니다.
메시 에셋에 충돌 프리미티브 추가하기
자세한 내용은 스태틱 메쉬에 콜리젼 구성하기를 참고해 주세요.

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

지원이 필요하신가요?

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

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

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

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

Wwise를 시작해 보세요