AkAcousticPortalや、AkSpatialAudioVolumeを、素早く正確に配置できるように、Wwise Unrealインテグレーションは周囲のスタティックメッシュジオメトリをシーンで検知して、そのシーン内のポータルやボリュームの適切な大きさや場所を判断することができます。Fit to Geometryは、複数の典型的なルーム、窓、ドア形状に対応しています。このセクションでは、AkAcousticPortalや、AkSpatialAudioVolumeに、Fit To Geometryを活用する方法を説明します。
info | 注記:
- The Spatial Audioチュートリアルの事前準備 must be completed prior to starting this tutorial.
- For Fit To Geometry to function correctly, Realtime must be enabled in the viewport options.
|
Fit To Geometry の前提条件
- 希望するデフォルトのコリジョンチャンネルを、Wwise Integration Settingsで選択しておきます。Fit To Geometry機能は、Unreal Engineを使ってレイトレーシングを行いますが、レイが、周囲のスタティックメッシュジオメトリと交差する必要があります。そこで、コリジョンチャンネルを、AkAcousticPortalやAkSpatialAudioVolumeが置かれているスタティックメッシュの、コリジョンパラメータに対応させておく必要があります。
- 必要に応じて、個々のAkAcousticPortalやAkSpatialAudioVolumeがデフォルトのコリジョンチャンネルをオーバーライドして、別のものを選択することができます。この設定はAkAcousticPortalやAkSpatialAudioVolumeの、それぞれのDetailsパネルにあります。
- もしAkSurfaceReflectorSetsのアーリーリフレクションにアコースティックマテリアルを使う場合は、希望するマッピングを、確実にWwise Integration Settings内で設定しておいてください。詳細は AkSpatialAudioVolumeに、アコースティックテキスチャを自動的にアサインする を参照してください。
info | 注記: Fit To Geometry機能をAkAcousticPortalアクターやAkSpatialAudioVolumeアクターで使えるのは、レベルエディタのビューポート内だけです。ブループリントエディタのビューポート内で使うことはできず、先ほどのアクター内にある個々のコンポーネント、つまりAkPortalComponent、AkSurfaceReflectorSet、AkRoomComponent、AkLateReverbに対しては、使えません。 |
Fit To Geometryを使い、AkSpatialAudioVolumeを配置する
- Fit To Geometryの処理は、まずAkSpatialAudioVolumeのDetailsパネルでこのオプションを有効にしたときに実行されます。オプションを有効にしたあとは、トランスフォームギズモを使ってボリュームを新しい場所に変換するたびに実行されます。
- トランスレーションギズモをドラッグすると、黄色いプレビューアウトラインが描写され、そのAkSpatialAudioVolumeが、ワールドの特定場所にどのようにフィットするかの目安が表示されます。希望するフィットが見つかるまでボリュームをドラッグしてから、マウスを離せば、このAkSpatialAudioVolumeのブラシのボリュームが更新されます。なお、Fit To Geometryの操作を実行しても、AkSpatialAudioVolumeアクターのトランスフォームは変更されず、子ブラシコンポーネントだけが変更されます。
- Fit To Geometryでは、アクターの原点から外に向かって、壁を探索するかのように球状に発せられるレイを、何本か追っていくことで成り立ちます。レイが面にヒットしたポイントは、緑色で表示されます(ヒットを無視する場合は、そのポイントは赤色です)。レイがヒットしたポイントを全体的に見ることで、どのような形になるのか、正しいコリジョンチャンネルが使われているのか、そして最後に、形成面に正しいアコースティックテキスチャがアサインされているのかを、確認できます。
- 3種類の形に対応していますが、形のタイプは、AkSpatialAudioVolumeのDetailsパネルで選択します。
- Oriented Box - 箱型の、任意のオリエンテーションのルーム。ボックスのオリエンテーションは、Fit To Geometryの操作中に自動的に判断されます。ボックスの形は、全ての緑のヒットポイントが中に収まるような、(ボリュームが)最小限のボックスを探して計算されます。
- Aligned Box - 箱型の、オリエンテーションが固定されたルーム。ボックスのオリエンテーションは、ユーザーが指定します。オリエンテーションを変えるには、トランスフォームギズモを使ってAkSpatialAudioVolumeを回転させます。Aligned Boxの形は、複数の障害物があるような箱型のエリアにボリュームをフィットさせたいときに、Oriented Boxの形では不揃いになってしまうような場合に便利で、ほかにも壁と壁の間の屋外のエリアや、細道などにボックスをフィットさせたい場合にも便利です。
- 場合によって、複数のレイトレーシングの結果、ボリュームがゼロであるAkSpatialAudioVolumeが出されることがあります。例えばヒットポイントが全て、同じ平面上にあったときなどです。そのときは、ボックスのアウトラインが赤色に点滅し、ボックスの形が更新されません。画面の左下にエラーメッセージが表示されます。この問題を解決するには、AkSpatialAudioVolumeの場所を変えて、もう一度試してみてください。
- Convex Polyhedron - 完全に閉ざされた、凸面の多面体の形のルーム。これが最も複雑な形で、配置時にエラーが起きやすいかもしれませんが、壁が平行でないルームなど、箱型でないルームにボリュームをフィットさせたいときなどに、時間を節約できます。なお、ルームは必ず凸面(convex)の完全に閉ざされた形状とし、開いた壁や天井などがあってはいけません。
- 場合によって、特定の場所から発せられるレイトレーシングだけでは、閉ざされた凸面の形が見つからないことがあります。そのときは、多面体のアウトラインが赤色に点滅し、多面体の形が更新されず、画面の左下にエラーメッセージが表示されます。この問題を解決するには、AkSpatialAudioVolumeの場所を変えて、もう一度試してみてください。
- レイキャストのヒットポイントを対象に、AkSpatialAudioVolumeのDetailsパネルにあるスライダーを使ってフィルターをかけることができます。
- 内部で、レイが長さ順に並べられ、そのうち短い方の何パーセントを計算に取り込むのかを、スライダーで設定します。
- 例えば、スライダーを0.75に設定すると、フィット処理にレイの短い方から75が適用され、長い方から25が無視されます。
- レイのヒットポイントのうち、計算に含まれたものは緑色、フィルターで計算から外されたものは赤色で表示されます。
- ヒットポイントをフィルターにかける操作は、一部のレイが窓やドアから逃れるために、それらのレイのヒットポイントが原因でエラーが起きている場合などに、便利です。
- ヒットポイントにフィルターをかけることはAligned Boxのときにおそらく一番役に立ち、理由は、レイのヒットポイントの数を減らしてもオリエンテーションの判定エラーが出ない(Aligned Boxのオリエンテーションが固定されている)ためですが、レイのフィルターは、どの形状でも使えます。
AkSpatialAudioVolumeに、アコースティックテキスチャを自動的にアサインする
- アコースティックテキスチャは、Fit To Geometryで実行したレイトレーシングのコリジョン結果と、Wwise Integration Settingsで定義したアコースティックマテリアルのマッピングに基づいて、AkSpatialAudioVolumeの面に自動的にアサインされます。
- Unreal Engineでレイトレースを行った結果、物理マテリアルが出されるので、Project Settingsで設定したマッピングを使って、各物理マテリアルを、アコースティックテキスチャにマッピングします。
- AkSpatialAudioVolumeの結果としてつくられた面に、複数のレイがヒットする可能性が高く、それぞれのレイのヒットが、異なる物理マテリアルを返すこともあります。その場合は、一番ヒット数の多かった物理マテリアルを選んで、アコースティックテキスチャにマッピングします。
- いくつかのレイがヒットした面が、処理の結果としてつくられるAkSpatialAudioVolume面の音響性質を適切に表現しないことがあります。例えば石膏ボードの壁に、部分的に木製の枠組みがあったとしても、音響特性として「石膏壁」を使った方が、壁全体を「木製」とするよりも、理にかなっています。ほとんどの場合、広い面のテキスチャに当たるヒットポイントの方が多くなり、適切なテキスチャがアサインされるはずです。そうでない場合は、AkSpatialAudioVolumeをわずかに調整してヒットポイントの位置が少し変わるようにするか、それでも期待するような結果にならなければ、音響テキスチャを、AkSurfaceReflectorSetのDetailsパネルで、手作業でアサインできます。
- AkSpatialAudioVolumeに、Fit To Geometryを適用する前に、物理マテリアルとアコースティックテキスチャの関係を示すマッピングをWwise Integration Settingsで作成しておく必要があります。あるAkSpatialAudioVolumeでFit To Geometryを実行したあとにマテリアルのマッピングを変更しても、そのアコースティックマテリアルの更新はされません。
info | 注記: Fit To Geometryでは、スタティックメッシュの個々の三角を見つけるためにUnreal EngineのComplexコリジョンを使うので、Static Meshアクターの、'Phys Material Override'プロパティにアサインされている物理マテリアルを取得することができません。このプロパティは、Simpleコリジョンにしか適用されないため、アコースティックマテリアルにマッピングされません。 |
Fit To Geometryを使ってAkAcousticPortalを配置する
- AkSpatialAudioVolumeのときと同様に、Fit To Geometryの処理は、AkAcousticPortalのDetailsパネルで、このオプションを有効にしてから実行できます。オプションを有効にしたあとは、トランスフォームギズモを使ってこのアクターを新しい場所に変換するたびに実行されます。 -トランスレーションギズモをドラッグすると、黄色いプレビューアウトラインが描写され、そのAkAcousticPortalが、ワールドの特定場所にどのようにフィットするかの目安が表示されます。希望するフィットが見つかるまでアクターをドラッグしてから、マウスを離せば、このAkAcousticPortalが更新されます。
- Fit To Geometryは、アクターの原点から数本のレイをトレーシングすることで機能し、窓や戸口を求めて、外に向かって球状に発せられます。窓や戸口らしきものを発見すると、その面法線の方向に第2のレイを発して、窓枠または戸枠の、反対面を検知しようとします。
- ポータルは、はっきりとした「枠」があり、内向きの垂直な面がある場合に限り、ポータルとして検知されます。
左はAkAcousticPortalが検知するような開口部で、右の開口部はメッシュが薄すぎるため、検知されない。
- 検知される開口部の大きさを制限するには、Detailsパネルの中にある Detection Radius プロパティを使います。一般的な目安として、この値を、検知しようとする開口部よりは大きく、ルーム全体の寸法よりは小さく設定します。
- デフォルト値は500なので、単位としてセンチメートルを使い、窓やドアの開口部が平均的な大きさのUnrealプロジェクトは、だいたいこれでうまくいきます。あなたのスタティックメッシュの寸法に合わせて、必要に応じて設定値を調節してください。
- もし Detection Radius が開口部より小さければ、そのポータルは検知されません。
- もし Detection Radius が大きすぎれば、ルームの幅全体を覆うようなポータルが、誤って検知されてしまうかもしれません。
- Collision Channel プロパティで決められたFit To Geometryのレイトレースと、コリジョンを起こしてしまうような固体のドアや窓が、ポータルにあってはいけません。それが存在すると、開口部が検知されません。開口部に窓やドアがある場合は、別のコリジョンプロファイルを使うか、Hを押してメッシュを無視させて、窓やドアが隠れるようにします。
Fit To Geometryの使い方のコツ
- レベルのAkAcousticPortalアクターやAkSpatialAudioVolumeアクターを簡単に増やすには、まず1つのアクターでFit To Geometryを有効にし、次に、このアクターのトランスレーションギズモをAltを押しながらドラッグしてアクターのコピーを作成し、そのアクターがレベル内の別の場所にフィットするようにします。
- もし家具、プロップ、電灯など、特定のスタティックメッシュアクターがFit To Geometryで実行されるレイトレースを妨害して誤った結果を引き起こしていれば、それらのアクターを隠す(Hを押下)ことで、Fit To Geometryのレイトレースがこれらを無視します。