バージョン
- 必要条件
Wwise Unreal Integration Documentation
|
これまで、ビルド済みのアクターを使ったり、個別のアクターインスタンスにコンポーネントを追加したりして、全てのものをレベルに直接つくり込んできました。スペーシャルオーディオの各種コンポーネントを使ってブループリントアクターをつくり、レベルのいたるところで複製することも可能です。このセクションでは、 Wwiseプロジェクトの準備 セクションのストラクチャの複製を、ブループリントクラスを使ってビルドし、ワールドのどこにでも簡単に追加したりスポーンしたりできるようにします。
注記: このチュートリアルを始める前に、 Spatial Audioチュートリアルの事前準備 を完了させておいてください。 |
AkLateReverbComponent
と AkRoomComponent
は、あるゲームオブジェクトのポジションが親の PrimitiveComponent
の中にあるのかどうかを確認するときに、コンテインメントテストを行います。確認にはSimpleコリジョンを使います。そこで、Simpleコリジョンのある親 PrimitiveComponent
を使ってください。例えば、Boxコリジョン、Sphereコリジョン、Capsuleコリジョンなどのコンポーネントが使えます。 PrimitiveComponent
にSimpleコリジョンがなければ、Component boundsをコンテインメントテストに使うだけですが、正確性は劣るかもしれません。
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). 例えば、キャラクターがドアを通過してルームに入れても、そのルームの壁には衝突してしまうようにするには、この設定が必要かもしれません。この設定を使うと、Simpleコリジョンは無視され、メッシュの三角メッシュ全体が使われるので、 AkLateReverbComponent
や AkRoomComponent
のコンテインメントテストは、失敗します。 AkLateReverbComponent
や AkRoomComponent
が使うSimpleコリジョンテストは、三角メッシュに対応していません。そこでブループリントクラスの推奨設定として、 AkLateReverbComponent
コンポーネントや、 AkRoomComponent
を使うときは、Simpleコリジョンコンポーネントを親にします。Simpleコリジョンコンポーネントとは、Box、Sphere、Capsuleなどです。具体的なメッシュを部屋や建物に設定した場合は、Simpleコリジョンコンポーネントをこのメッシュの子コンポーネントとして追加できます。
注記:
|
新しいスタティックメッシュコンポーネントをクリックし、このメッシュをDetailsパネルで選択します。
注記: ポータルに対するルームの自動アサインは、凸型メッシュでしか機能しません。Concave meshes (for example, L-shaped rooms) do not produce accurate portal room intersection. |
この時点では、全てのBoxコリジョンコンポーネントが同じ場所に重ねて置いてあります。これから、ポジションを変え、拡大縮小し、回転することで、ルームやドアに揃えていきます。一番簡単な方法は、正投影のビューを使うことです。(以下の手順はSpatialAudioDemoMeshのためですが、ほかのメッシュでも同じような手順が使えます。)
注記: チュートリアルでルームやポータルと、メッシュの位置を揃えるときに、ぴったりと揃わなかったり中心が合わなかったりしても、構いません。だいたい同じ場所をカバーするようにします。本物の環境を設計する際は、DetailsパネルのTransformセクションで、正確な数値を入力できます。 |
Viewportタブで Perspective をクリックし、ビューを Top に変えます。
BoxRoomLarge の縮尺をXY軸に沿って調整し、大きさが大きいルームの寸法に合うようにします。(スケール機能に切り替えるには、Rを押すか、Viewportタブのスケールウィジェットを選択します。)
BoxRoomSmall を選択し、XY軸に沿って縮尺を調整し、大きさが、小さいルームの寸法に合うようにします。
BoxPortalInner を選択し、ワイヤーフレームにズームインし、メッシュに内側の戸口の範囲が見えるようにします。
BoxPortalInner を戸口の中央まで動かし、X軸に沿って縮尺を調整して戸口の両端をカバーするようにします。
BoxPortalOuter を選択し、ローカルのY方向が戸口の外を指すように回転させます。
注記: 理由は、ポータルに対する「フロント」ルームと「バック」ルームが、ポータルのY方向と交差する一番近いルームを検知することで自動的に決まるからです。BoxPortalOuterの例では、「バック」側(ローカル座標空間において)が、メッシュの小ルームに接続し、「フロント」側は、接続するルームがありません。 |
BoxPortalOuter をZ軸を中心に90度、回転させます。これは、DetailsパネルのTransformセクションにある Rotation の、Z軸のテキストボックスに'90'と入力すればできます。
Topビューで、下図のように全てのルームやポータルが、メッシュと揃っていることを確認します:
BoxRoomLarge と BoxRoomSmall を選択し、どちらもルームの大きさに合うように、Z軸方向にスケールを調整します。
BoxPortalOuter と BoxPortalInner を選択し、それぞれの戸口の中まで下に動かし、Z軸方向に縮尺を調整し、それぞれのドアの大きさに合わせます。
次に、AkRoomコンポーネントをルームに追加し、AkPortalコンポーネントをポータルに追加します。
それぞれのBoxコリジョンコンポーネントに対し、適宜、ルームコンポーネントまたはポータルコンポーネントを作成し、親と似た名前を付けます。以下のような結果になるはずです:
注記: 各コンポーネントを正しい親に追加するように、注意してください。例えば、大きいルームにAkRoomLargeを追加するときは、必ず BoxRoomLarge が選択されていることを確認してから、 Add Component をクリックしてください。 AkRoomComponentやAkPortalComponentは、どのようなPrimitiveコンポーネントにも追加できる汎用コンポーネントです。詳細は、 AkRoomComponent や、 AkPortalComponent を参照してください。 |
To confirm that the portals have valid placement, select the Visualize Rooms and Portals option in the Wwise User Settings.
接続しているルームとポータルの間に、線が表示されます。ポータルの配置が無効であれば、赤色で表示されます。
注記: ポータルに接続するルームがなかったり、同じルームがポータルの内外両側に接続していたりすると、このポータルの設定は無効です。詳細は AkPortalComponent を参照してください。 |
最後に、ブループリントクラスにAkGeometryとAkLateReverbの2つのコンポーネントを追加します。
BoxコリジョンコンポーネントのBoxRoomLargeに、AkLateReverbコンポーネントを追加します。
これで、ブループリントクラスを使う準備が整いました。このクラスのインスタンスを、ワールドにドラッグして入れることができます。
すでにある建物の横に置きます。
レイが、新しいブループリントのストラクチャの中で、ポータルを通り抜けていることを確認します。
Open the Level Blueprint and add logic to play the Play_LargeRoom_BP sound when the B key is pressed (see Wwiseプロジェクトの準備).
This section shows how simple collision and complex collision can be combined for the same mesh, such that Spatial Audio containment tests are performed using the simple collision, and Unreal queries make use of the complex collision.
注記: This section is based on the 'SpatialAudioTutorialMap' and the assets found in the ComplexRoomDemo directory in the WwiseDemoGame project, which is available from the Audiokinetic Launcher. The pre-made mesh assets and a custom Blueprint class are used to combine simple collision and complex collision. |
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
が使うSimpleコリジョンテストは、三角メッシュに対応していません。
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 has Collision Complexity set to 'Use Complex Collision As Simple' which means Unreal will not generate any simplified geometry for this mesh, and will instead use the entire trimesh. This is what allows the character to walk through the doorway opening. Building_Simple has Collision Complexity set to 'Use Simple Collision As Complex' which means Unreal will generate simplified geometry and ignore the trimesh. This is what allows Spatial Audio to perform containment tests for room containment.
注記: It is possible to set Collision Complexity to 'Simple And Complex'. However, this causes Unreal to use the simplified geometry for collision queries, which means the character cannot enter through the doorway opening. Instead, two identical meshes can be used - one with complex geometry and one with simple geometry. |
The next step is to combine both meshes inside a custom Blueprint class.
This Blueprint uses two Static Mesh Components that are positioned right on top of one another.
For the StaticMesh_Simple component, 'Visible' is disabled and 'Hidden in Game' is enabled in the Rendering section. This is because this mesh is only used for its simplified geometry, so that containment tests can be made for Spatial Audio.
Also for the StaticMesh_Simple component, the Collision Presets property is set to 'Trigger'. The simplified geometry creates a barrier at the doorway opening. Using the 'Trigger' collision preset ensures the character and other game objects can freely move through the simplified geometry.
The StaticMesh_Simple Component has an AkRoom component and an AkLateReverb Component attached. This way, the simple collision of the Building_Simple mesh is used for room containment tests.
To allow for sounds to reflect and diffract on the BuildingBP's mesh, an AkGeometry Component needs to be added to one of the Static Mesh Components. In this solution, because we are also using Reverb Parameter Estimation, it is best to add it to the StaticMesh_Simple component. The AkLateReverb Component uses the Acoustic Textures of its sibling AkGeometry Component to calculate HF Damping. Setting the AkGeometry Component to Static Mesh sends the full complex geometry to Wwise Spatial Audio instead of its simple collision mesh.
Finally, a Box Collision Component with an AkPortal Component attached is used to add an acoustic portal to the doorway.
A Point Light is also added to make the interior of the building visible.
注記:
|