버전
Wwise Unreal Integration Documentation
|
이제까지 저희는 미리 제작된 액터를 사용하거나 각 액터 인스턴스에 컴포넌트를 추가함으로써 모든 내용을 레벨 안에서 직접 제작했습니다. 또한 다양한 공간 음향 컴포넌트를 사용하면 레벨 전체에 복제할 수 있는 Blueprint 액터를 구성할 수 있습니다. 이 섹션에서는 Blueprint 클래스를 사용하여 Unreal 프로젝트 준비 섹션에서 구성한 구조의 복제본을 제작해서 세계 안에 쉽게 추가하고 스폰할 수 있도록 해봅시다.
참고: | 이 튜토리얼을 시작하기 전에 반드시 Spatial Audio 튜토리얼 준비 를 반드시 완료해야 합니다. |
AkLateReverbComponent
와 AkRoomComponent
는 오염 시험을 통해 주어진 게임 오브젝트의 위치가 해당 상위 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)가 사용되기 때문에 AkLateReverbComponent
와 AkRoomComponent
에 대한 오염 시험이 실패하게 됩니다. AkLateReverbComponent
와 AkRoomComponent
에 의해 사용되는 단순 충돌은 트라이메시를 지원하지 않습니다. 따라서 Blueprint 클래스에서는 AkLateReverbComponent
컴포넌트와 and AkRoomComponent
를 사용할 경우 단순 충돌 컴포넌트를 상위 계층으로 사용하는 것을 권장합니다. 단순 충돌 컴포넌트의 예시는 상자, 구형, 캡슐이 있습니다. 공간이나 건물에 특정한 메시가 있을 경우 단순 충돌 컴포넌트를 해당 메시의 하위 컴포넌트로 추가할 수 있습니다.
참고: |
|
새로운 스태틱 메시 컴포넌트를 클릭하고 Details 패널에서 해당 메시를 선택하세요.
참고: | 포털으로의 자동 자동 지정은 볼록한 메시(convex mesh)에서만 작동합니다. Concave meshes (for example, L-shaped rooms) do not produce accurate portal room intersection. |
이제 모든 상자 충돌 컴포넌트가 동일한 위치에 서로 겹쳐 있습니다. 이 컴포넌트의 위치, 규모, 방향을 조정해서 공간과 출입구와 정렬되도록 해봅시다. Orthographic 뷰를 사용하면 가장 쉽게 작업할 수 있습니다. (다음 단계는 SpatialAudioDemoMesh에 특정하지만 다른 메시에서도 유사한 단계를 실행할 수 있습니다.)
참고: | 이 튜토리얼에서 공간과 포털을 메시에 정렬할 때에는 완벽하게 정렬되거나 중심에 있지 않더라도 괜찮습니다. 올바른 영역을 대략 덮어주기만 하면 됩니다. 실제 환경을 설계할 떄에는 Details 패널의 Transform 섹션을 사용해서 정확한 값을 입력할 수 있습니다. |
Viewport 탭에서 Perspective를 클릭하고 뷰를 Top으로 변경하세요.
BoxRoomLarge의 크기가 큰 공간의 크기와 맞춰질 때까지 x와 y축을 따라 크기를 변경하세요. (R을 누르거나 Viewport 탭에서 Scale 위젯을 선택해서 크기 변경 모드로 전환할 수 있습니다).
BoxRoomSmall을 선택하고 작은 공간의 크기와 맞춰질 때까지 x와 y축을 따라 크기를 변경하세요.
BoxPortalInner 를 선택하고 메시에서 내부 출입구 범위가 보이 때까지 와이어 프레임에서 줌 인하세요.
BoxPortalInner를 출입구의 중앙으로 옮긴 후 출입구의 범위를 덮도록 x축을 따라 크기를 조정하세요.
BoxPortalOuter를 선택하고 해당 y 차원이 출입구를 가리키도록 회전시키세요.
참고: | 포털에는 포털의 y 차원을 따라 가장 가까운 교차 공간을 감지함으로써 자동 지정되는 앞 공간과 뒷 공간이 있기 때문에 이 작업을 반드시 해주어야 합니다. BoxPortalOuter의 경우 '뒤'(해당 좌표 공간에서)는 메시에서 작은 공간과 연결되며 '앞'은 어떤 공간으로도 연결되지 않습니다. |
z축을 중심으로 BoxPortalOuter를 90도 회전시키세요. Details 패널의 Transform 섹션에 있는 z축 Rotation 텍스트 상자에 '90'을 입력하면 됩니다.
상면 뷰에서 모든 공간과 포털이 아래와 같이 메시와 정렬되었는지 확인하세요:
BoxRoomLarge와 BoxRoomSmall을 선택하고 공간의 크기와 맞춰질 때까지 z축을 따라 크기를 변경하세요.
BoxPortalOuter와 BoxPortalInner를 선택하고 출입구의 중앙에 오도록 아래로 옮긴 다음 문의 크기와 맞춰질 때까지 z축을 따라 크기를 조정하세요.
이제 AkRoom 컴포넌트를 공간에, AkPortal 컴포넌트를 포털에 추가해봅시다.
각 상자 충돌 컴포넌트에서 공간이나 포털 컴포넌트(알맞은대로)를 생성하고 상위 계층과 비슷한 이름으로 지정하세요. 결과가 다음과 같아야 합니다:
참고: | 컴포넌트를 올바른 상위 계층으로 추가했는지 확인하세요. 예를 들어 AkRoomLarge를 큰 공간에 추가할 경우 Add Component를 클릭하기 전에 먼저 BoxRoomLarge가 선택되었는지 확인하세요. AkRoomComponent와 AkPortalComponent는 어떤 기본 컴포넌트로든 추가할 수 있는 일반 컴포넌트입니다. 더 많은 정보는 AkRoomComponent 와 AkPortalComponent 를 참고하세요. |
To confirm that the portals have valid placement, select the Visualize Rooms and Portals option in the Wwise User Settings.
이제 연결된 공간과 포털 사이에 선이 그려집니다. 포털의 위치가 유효하지 않을 경우 빨간색으로 표시됩니다.
참고: | 포털에 연결된 공간이 없거나 동일한 공간이 양 면으로 연결되었을 경우 유효하지 않습니다. 더 많은 정보는 AkPortalComponent 를 참고하세요. |
Blueprint 클래스에 추가해야 할 마지막 두 가지 항목은 바로 AkGeometry와 AkLateReverb 컴포넌트입니다.
AkLateReverb 컴포넌트를 BoxRoomLarge 상자 충돌 컴포넌트로 추가하세요.
이제 Blueprint 클래스를 사용할 준비가 되었습니다. 클래스의 인스턴스를 세계 안으로 드래그하세요.
기존의 빌딩 안에 배치하세요.
새로운 Blueprint 구조에서 레이가 포털을 올바르게 통과하는지 확인하세요.
Open the Level Blueprint and add logic to play the Play_LargeRoom_BP sound when the B key is pressed (see Unreal 프로젝트 준비).
이 섹션에서는 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. AkLateReverbComponent
와 AkRoomComponent
에 의해 사용되는 단순 충돌은 트라이메시를 지원하지 않습니다.
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:
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.
In the context browser, browse to WwiseAssets/SpatialAudioDemo/ComplexRoomDemo.
This folder contains two Static Mesh assets: Building_Complex and Building_Simple.
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에는 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 클래스 내에서 두 메쉬를 결합하는 것입니다.
이 Blueprint는 서로의 바로 위에 배치된 두 개의 스태틱 메쉬 컴포넌트를 사용합니다.
StaticMesh_Simple 컴포넌트의 경우 Rendering 섹션에서 'Visible'이 비활성화되고 'Hidden in Game'이 활성화됩니다. 이는 이 메쉬가 단순한 지오메트리에만 사용되어 Spatial Audio에 대한 교차 검사를 수행할 수 있기 때문입니다.
또한 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는 출입구에 음향 포털을 추가하는 데 사용됩니다.
건물 내부가 잘 보이도록 Point Light도 추가되었습니다.
참고: |
|
프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.
Wwise를 시작해 보세요