みなさん、こんにちは!Unreal Engine 4とWwiseを組み合わせたオーディオツールや実験の楽しさについて、これから短いブログの連載を始めます。これを読んだみんなも興味を持ってくれ、一緒に意見交換ができれば、結果として僕たちはデベロッパーとして成長できるはずです。コミュニティの仲間と情報を共有したいので、ここで話すトピックについて、どしどしコメントしてください。さて、これが連載最初の記事なので、簡単に自己紹介をします。僕の名前はトローオルス、仕事は一般的にテクニカルサンドデザイナーと呼ばれるもので、コンポーザーもしています。
ここ1年半で夕方や週末にUnreal Engine 4を勉強して過ごすことがよくあり、ゲームのプロトタイプをつくったり、全く非商業的なプロジェクトに力を入れたりして、今ではやめられなくなりました!最近は仕事でもUnrealのブループリントを使うので、その中でオーディオツール関連のことも学び(ほかにもあるけれど)、このブログを書こうと思ったのです。というわけで、はじめまして!
では、第一回のトピックを発表します。みんなに紹介したいのは...。
Spline Based Audio Emitter、別名ボリューメトリック(volumetric)オーディオエミッター。
僕が同僚と二人でこのツールをつくろうと思ったのは、UE4でオーディオを出すエリアシェイプ(形状)をカスタム作成できる、既存のツールやソリューションが見つからなかったからです。
このツールの目的は?
このツールは、UE4でキューブやボックスや半球以外の大きなエリアを囲い込み、その内側や外側にオーディオを追加したい場合、例えば森林エリアや沼エリアなどを設定したいときに、使えるツールです。なお、単純な形であればスプラインを基に簡単に導き出せ、その機能はすでに存在します。
誰のため?
範囲を囲うシェイプを定義し、そこに近づくにつれアンビエンスサウンドをフェードインさせたりフェードアウトさせたりできるツールなので、ベーシックな形状に制限されず便利です。ずいぶん時間を節約でき、プロトタイプ中にレベルや環境が目まぐるしく変化するときなどは、特に効率的です。さらに、包囲したエリアに出入口があれば、AkComponentでオクルージョンを有効にして、エリアの内側または外側のアンビエンスは出入口を通して漏れ聞こえても壁越しには聞こえないようにでき、信憑性が増します。また、1つのエミッターしか使わないので、ボイス数も抑えられるかもしれません。こちらは、その仕組みを示す動画です。この動画はコア機能を簡単に説明しただけのものです。取り上げきれなかったほかの機能として、内外のステートを変えたり、プレイヤーの身長に追従したり、2Dや3Dサウンドのuser-definedのポジションソースにエリアのフェード距離のRTPCを適用したりできます。
何ができるの?
- Spline Based Emitterは閉じたスプラインのループ(輪)で使用されます。スプラインカーブ上のプレイヤーに一番近い点の位置を把握し、その上にオーディオエミッターを配置します。このオーディオエミッターの場所は、常に更新されます。
- Spline Based EmitterにはOutside StateとInside Stateという2つのステートがあります。プレイヤーがこの閉ざされたループに入っていくと、StateがOutsideからInsideに切り換わり、その時点から、オーディオエミッターの位置がリスナーを追うようになり、そのリスナーの向き(orientation)にも従います。プレイヤーがスプラインループの外に出た瞬間、StateがOutsideに戻り、オーディオエミッターの場所は、再びスプラインカーブに付いた状態になり、プレイヤーに最も近いその点(カーブ上の点)がオーディオエミッターの場所になります。
その仕組み
このツールの仕組みを知るには、UE4のドキュメントの、ブループリントに関する説明が参考になります。このツールを少し柔軟に設定できるように、いくつかのvariables(変数)がエクスポーズされています。 ここでダウンロードできますツールを作動させるために使う2つの素材、つまりノードファンクションは、こちらです:
- Get closest point on spline curve (エミッター位置として使う)。
- Dot product(スプラインの閉じたループの中にいるのか、外にいるのかを知るため)。
使い方
- あなたのゲームシーンにブループリントを置き、使いたい形をつくります。個人的には、この作業をするときはTopビューに変えています。
- 詳細パネルのエクスポーズされたVariablesの中に、あなたのサウンドを追加し、Area Fade用にどのRTPCを使うのかを、ブループリントに知らせます。
ツールが壊れるかもしれないポイントが2つあるので、注意してください:
- エミッターの減衰が長すぎると、V型やくぼみ形状で苦労するかもしれません。僕は、この問題を解決したくてたまりません。もし、くぼみの形状をつくり、そのちょうど中央にリスナーを配置すると(下図のように)、プレイヤーがV字内を渡ったり、内側で動いたりすると、エミッターが左右のどちらかの面から、向かい側に、直接飛んでしまう結果となります。
- スプラインループ上のポイントが、互いに交差しないように気をつけてください。スプラインのポイント同士の変化が、InsideとOutsideのステート切り換わりに不可欠です。
最適化:
このブループリントのCPU時間が、今までのアンビエンスシェイプやツールよりもかなり長くなると予想されるので、少し最適化しました。プレイヤーやリスナーから、スプラインカーブの最寄りの点までの距離が、ある数値よりも大きくなると、ブループリントのTickレートを激減させます。
コメント