バージョン
Wwiseでオブジェクトのポジショニングを設定する前に、以下のセクションに目を通して、ゲームの各種オブジェクトのポジショニングを効率的に管理するための事例、コツ、ベストプラクティスなどを参照してください。
Wwiseで設定できる様々なポジショニングオプションが理解できたところで、前述のファーストパーソン「Positioning - example (part 1)」のサウンドとモーションエフェクトのポジショニングを設定するために、各オプションの使い方を検討します。
足音: ファーストパーソンゲームでは、メインキャラクターの足音サウンドを常にカメラに添付します。これらのサウンドの動きも減衰もないので、基本的なスピーカーパンニングで、Direct Assignmentを使ったものが、この場合は適しています。しかし、他の隊員達の足音サウンドは隊員の動きに合わせるために、サウンドを隊員のゲームオブジェクトに添付する必要があります。この場合、3D SpatializationのEmitter positioningが適していますが、減衰は不要です。
敵のジャングル基地で灯される、数々のトーチ: これらのサウンドは、トーチのゲームオブジェクトに添付します。トーチは固定ですが、サウンドエミッタの場所やマイクからの距離がプレイヤーの位置によって変化します。このようなサウンドのシミュレーションには、3D SpatializationのEmitter positionと、減衰を使えます。
小屋で話し合うテロリスト: これらのサウンドは、ゲーム環境を自由に動き回るテロリストのゲームオブジェクトに添付します。このようなサウンドのシミュレーションには、3D SpatializationのEmitter positionと、減衰を使えます。
頭上を飛ぶ蚊: 蚊が飛ぶ音が聞こえるものの、見えてきません。サウンドエミッタが3D空間を動く必要があるので、3D spatializationの、Emitter with AutomationまたはListener with Automationのポジションが、この場合は適しています。ランダムに再生される複数のサウンドパスに、空間配置と減衰の両方を適用することで、非常にリアルな虫のサウンドを表現できます。Listener with Automationオプションを選択すると、実際のゲームオブジェクトは不要ですが、蚊の音がプレイヤーのあとを追ってしまいます。そこでEmitter with Automationオプションにして、蚊のゲームオブジェクトを使って一定の範囲、例えば淀んだ池の周りなどと決めれば、そこから蚊の音が聞こえるようにできます。
本部からの最新情報: 本部からの無線通信は、特定のゲームオブジェクトに関係なく、サラウンド環境を動き回らないので、この場合はSpeaker PanningのDirect Assignmentが適しています。 また、通信内容はミッション遂行に不可欠なので、全てのサウンドまたは一部分をセンタースピーカーにルーティングするのも良いでしょう。
ミッションに挑む隊員同士の声をひそめたやりとり: 隊員達の小声は、各隊員のゲームオブジェクトに添付されるので、これらのサウンドには3D spatializationが適しています。また、隊員同士の位置が相互に変化するため、何らかの空間配置が必要となりますが、全員がチームとして協力し合うので、お互いのコミュニケーションに減衰を設定する必要はありません。なお、隊員同士のコミュニケーションはミッション遂行の要となるため、全てのサウンドまたは一部分を、センタースピーカーにルーティングするのも良いでしょう。
ミッション遂行に成功した後、基地を破壊するために仕掛けた爆弾の爆発: 隊員達は、爆発の音と衝撃を感じ取ることになります。これを表現する爆発のサウンドやモーションオブジェクトは、爆弾のゲームオブジェクトに添付します。爆弾の位置は固定されていますが、サウンドおよびモーションエミッタの場所とリスナーからの距離がプレイヤーの位置によって変化します。このようなサウンドのシミュレーションには、3D spatializationのEmitter positionと、減衰を使えます。
止むことのない、島の火山の地響き: 島にいる限り、火山の地響きエフェクトが常に聞こえ、かつ感じられます。サウンドオブジェクトとモーションオブジェクトの両方を、ゲームオブジェクト"Island(島)"に添付するのが一般的です。ある程度の減衰を設定すれば、プレイヤー達が島に接近するにつれ地響きをより大きく、またはより強くできます。なお、このサウンドとモーションは動かないので、スペーシャリゼーションは必ずしも必要ありません。
まわりを包み込むような火山の最終噴火: 爆発がきっかけで、大規模な火山噴火が始まります。そこで最終シーンでは、脱出したプレイヤーが、パイロットの操縦する輸送ヘリコプターの後部座席に座る場面で終わります。爆発音は強力なアンビエントサウンドとなり、部分的な減衰と合わせて、Listener with Automation Positionを使って3Dスペーシャリゼーションで処理できます。Position Editor (3D Automation)でパスを1つ以上作成し、ヘリコプターがプレイヤーをのせたまま、上下左右に旋回し、最終的に火山の噴火口、つまり音の発信源を通り過ぎ、煙が立ちこめる中、飛散する岩石をよけながら進む様子を表現します。Hold Listener Orientationを有効にし、爆発音を異なるスピーカーから出すことで、プレイヤー(リスナー)のポジションを反映します。マルチスピーカーセットアップを前提とした場合、Position + Orientationを3D Spatializationオプションとして選択すれば、移動するヘリコプターのオリエンテーションと、噴火の減衰スプレッドを組み合わせて、よりリアルにできます。
インタラクティブミュージック: ミュージックは特定のゲームオブジェクトと関連せず、サラウンド環境を動き回らないため、Speaker Panningが適しています。例えば、フロントスピーカーとリアスピーカーからバランスよくミュージックが聞こえるように、一部のミュージックトラックをパンニングさせます。
ヒント | |
---|---|
今回の例では、最終的な火山噴火からシーンのおわりにつながり、一定の祝福音楽が再生されるようにできます。2つのサウンド間のトランジションをスムーズに行えるように、Speaker Panning / 3D SpatializationのミックスにRTPCカーブを設定し、完全な3D Spatializationの100から、徐々に完全なSpeaker Panningの0まで移行させます。 |
下表は、この例の様々なサウンドを作成するために使用できるポジショニングオプションをまとめたものです。
サウンド |
Speaker Panning |
Attenuation(減衰) |
3D Spatialization | |||||
---|---|---|---|---|---|---|---|---|
Direct Assignment |
Balance-Fade |
Attenuation(減衰) |
Emitter |
Emitter with Automation |
Listener with Automation | |||
隊員の足音 |
| |||||||
トーチ |
|
| ||||||
テロリストの会話 |
|
| ||||||
蚊の羽音 |
| |||||||
本部からの無線通信 |
| |||||||
隊員同士のコミュニケーション |
| |||||||
爆発 |
|
| ||||||
火山の地響き |
|
| ||||||
火山噴火 |
|
| ||||||
インタラクティブミュージック |
|
この事例は、Wwiseの様々なオプションを活用して、様々な種類のポジショニングや伝搬を作りあげる1つの方法を紹介するものです。実際には、具体的なエフェクト、作成するゲーム、達成したいスペシャルエフェクトなどの諸条件によって、選択するオプションが決まります。
Spread Attenuationカーブを使わないときは、モノサウンドを使います。スプレッド減衰カーブを使ってオーディオ信号を広げる予定がなければ、パフォーマンス最適化のためにモノサウンドを使用してください。スプレッドを使わないと、ステレオサウンドの全入力チャンネルが同じポジションにマッピングされ、ダイナミックにレンダリングしなければならないのに対し、モノサウンドを使えば、この処理がオフラインで行われ、ゲームプレイ中のCPU負荷となりません。
パフォーマンス向上のために、Attenuation Editorのカーブ数を再利用、または削減します。なお、Attenuation Editorで作成するカーブ数が増えるほど、処理能力やメモリへの負荷が増加します。パフォーマンスを向上させるには、Output Bus Volumeカーブ(Auxiliary Send Volume用)を再利用するか、カーブを一切使わないようにします。
ポイント数を減らし、リニアカーブのセグメントをおさえ、パフォーマンスを向上させます。カーブ上のポイント数を追加しカーブ形状を複雑にすればするほど、処理能力やメモリを消費するので、注意してください。多くの場合、カーブにポイントを2、3点設定して直線セグメントを使えば、必要な減衰効果を得られます。
ShareSetsを使い、Attenuationプロパティを共有すること。あなたのゲームで、複数のオブジェクトが似たような減衰プロパティを使う場合、ShareSetsを使いプロパティ設定をシェアできます。減衰プロパティ設定をシェアすると、メモリを節約でき、減衰プロパティを変更する時間も短縮できます。
Positioning Type RTPCを使い、同様の目的のためにサウンドを再利用します。例えば、プレイヤーの足音を2Dに設定して、敵の足音を3Dに設定した上で、同じサウンド階層を使えます。これでメモリをかなり節約できます。
それでは、具体的なシナリオを検討しながら、Wwiseの様々なポジショニング設定や減衰設定の活用方法を説明します。
注釈 | |
---|---|
デフォルトで、センタースピーカーから再生されるサウンドはありません。信号をセンタースピーカーにルーティングするには、Center %プロパティのスライダを使用します。 |
Listener Relative Routing: Enabled
Attenuation(減衰): None
3D Spatialization: None
結果: この設定の結果、2Dサウンドと同じポジショニングとなります。
Listener Relative Routing: Enabled
Attenuation(減衰): 単純な直線型カーブ
3D Spatialization: None
結果: この設定の結果、サウンドソースからリスナーが離れるにつれ次第に静かになるサウンド(減衰)となりますが、サウンドの位置はオリジナルのサウンドアセットで示される位置と全く同じとなり、ポジショニングやローテーション(空間配置)が一切、適用されません。
Listener Relative Routing: Enabled
Attenuation(減衰): None
3D Spatialization: Position
結果: この設定の結果、特定の場所から発信されるサウンドとなりますが(空間配置)、サウンドソースからリスナーがどれだけ離れても、ボリュームは一切減衰しません(減衰)。
Listener Relative Routing: Enabled
Attenuation(減衰): 単純な直線型カーブ
Spread: 単純な直線型カーブ
3D Spatialization: Position
Sound source: Mono
結果: この設定の結果は、以下となります。
リスナーがサウンドソースから遠いと、サウンドが特定の場所から発信され(空間配置)、ボリュームが下げられ(減衰)、主に1つのスピーカーで再生されます(スプレッド)。
リスナーがサウンドソースに近いと、サウンドが特定の場所から発信され(空間配置)、ほぼフルボリュームとなり(減衰)、ほぼ均等に両スピーカーに配分されます(スプレッド)。
Listener Relative Routing: Enabled
Attenuation(減衰): 単純な直線型カーブ
Spread: 単純な直線型カーブ
3D Spatialization: Position
Sound source: Stereo
結果: この設定の結果は、以下となります。
リスナーがサウンドソースから遠いと、サウンドが特定の場所から発信され(空間配置)、ボリュームが小さくなります(減衰)。スプレッドなしで空間配置が設定されたステレオソースの場合、両チャンネルがフォールドダウンされ、モノの「ポイントソース」となります。スプレッドがない時は、CPUに効率的なモノファイルを使った方が良いのは、このためです。
スプレッドを使用すると、オリジナルのソースのオフセットとして新しい「バーチャルソース」が設定されます。例えば、スプレッド値が低ければ、計算に基づき、実際のポジションの左右にバーチャルソースに設定し、通常のスプレッドなしのサウンドと全く同じ方法で、わずかに違うポジションから、バーチャルソースの貢献分がスピーカーに追加されます。
スプレッド値が上昇するにつれ、リスナーの周りにより大きい円弧を描くため、バーチャルソースの数が増えます。当然、バーチャルソースのパワーを実際のソースよりも低くして、パワー合計を一定に保ちます。
注釈 | |
---|---|
これらのソースはボリューム計算のためだけに使われ、実際に新しいサウンドは再生されていません。 |
リスナーがサウンドソースに近いと、サウンドが特定の場所から発信され(空間配置)、ほぼフルボリュームとなります(減衰)。高いスプレッド値と組み合わせると、サウンドがあらゆる方向からきます。ステレオサウンドの左右のチャンネルは、別々にスプレッドされます。
次に、距離が「0」という特別な状況を考えます。Wwiseの全ての空間配置の計算(及びコーン減衰)は、角度に基づいています。距離が「0」であると、リスナーの向きが前なのか左か右なのか、Wwiseは判断できません。ゲーム中にこのような場面が起きることを避けてください。実際にゲームプレイ中にこの状況が発生してしまうと、Wwiseは単純にステレオサウンドのモノバージョンを作成して、範囲外のボリューム計算を回避します。コーン減衰にも、同じ理論が適用されます。リスナーの向きが不明の場合は、減衰が全く起きていないものとして扱われます。コーンLPFに関しても、同様です。