Wwise 2022.1がリリースされ、Audiokinetic Launcherからインストールできるようになりました。本ブログでは最新機能の概要をご紹介いたします。
- オーサリング
- 編集のワークフロー
- レイアウトの更新
- Project ExplorerのSearch
- Paste Properties
- 新しいカーブと、新しくなったAttenuation Editor
- Auto-Defined SoundBanks
- File ManagerのGenerate Filesタブ
- Transport Controlのユーザーインターフェースを更新
- Contextual Help、Capture Logエラーメッセージ
- Filter Behavior: Use Highest Value
- State GroupやState値のコピー&ペースト
- Event Action: State、State Groupの表示
- Performance Monitor
- Selection Channel、Meterインスタンス
- マウスホイールを使ったズーム、パンニング
- キーボードショートカットの変更
- ショートカットメニューの更新
- WAQL
- WAAPI
- 各種プラグイン
- インテグレーション
- SDK
オーサリング
編集のワークフロー
Wwise 2022.1を開いて最初に気づくのは、編集のワークフローやナビゲーションを改善するためのタブを使ったユーザーインターフェースの変更点です。これらの改善点はクリエイティブな奥深さと使いやすさを備えた、総合的なインタラクティブオーディオソリューションを提供するための継続的な進歩の一部です。最新リリースはWwiseプロジェクトとの関わり方に新たな感覚をもたらし、インタラクティブオーディオの実装やダイナミックオーディオのオーサリングという表現方法が拡張されます。
Designerレイアウトのセンターフォーカスに、デフォルトでObject Tab Groupが含まれます。Project Explorerでオブジェクトを選択しObject Tabに表示させると、プロパティや関連するエディタ画面が1か所にまとめて提供されます。例えばInteractive Music Hierarchyのオブジェクトで作業中にMusic Editorをアクセスしたい場合、レイアウトを切り替える必要はなく、オブジェクトのプロパティを変更するのに必要なものがすべてObject Tabに揃っています。
Object Tabは以下を提供します:
- コンテキストの分かるオブジェクト編集を1つのまとまった場所で。
- Recycle(リサイクル)タブ、Keep Open(開けたまま)タブ。
- 使い慣れた「進む」と「戻る」のボタンを使ったオブジェクト間の移動。
ObjectタブにはRecycleとKeep Openの2種類があります。RecycleタブにはProject Explorerで新しいオブジェクトを選択するたびに、直前に選択したオブジェクトが同じオブジェクトタブで置き換わります。またRecycleタブとは別にタブを開いておくこともでき、並べ替えたり、タブグループにドッキングしたり、ドッキング解除したりできるため、ワークフローを発展させてプロジェクトのニーズに合わせる柔軟性が高まりました。この機能を使用すると、異なる操作に対応するタブをグループにまとめ、タブグループ間で比較したり、ユーザの開発の独特のオーサリングプロセスに対応することができます。
1つのObject Tab Group。
Object Tab 3例。
Object Tabは上部ペインのPrimary Editor(主要エディタ)と、多くのオブジェクトタイプでは下部ペインのSecondary Editor(2次エディタ)で構成されます。Primary Editorには選択したオブジェクトのタイプに応じて、Property Editor、Event Editor、Audio Device Editorなど、関連するエディタが1つ表示されます。Secondary Editorには選択中のオブジェクトに最も関係するその他のエディタが、別々のタブに表示されます。あるオブジェクトに関係する主要エディタと2次エディタを合わせて、タブベースのワークフローに取り込むことで、編集作業を全体的に見渡せます。
この新しいワークフローの詳細は Working with Object Tabs and Object Tab Groups をご参照ください。
レイアウトの更新
編集ワークフローの変更に合わせ、レイアウトやレイアウトの管理も更新されました。ミュージック関連のエディタがDesignerレイアウトのObject Tabからすべて簡単にアクセスできるようになったため、Interactive Musicレイアウトは削除されました。Object Tab GroupやObject Tabもほかのビューと同じように、レイアウトから切り離してフローティングウィンドウにしたり、レイアウトやObject Tab Group内でドッキングすることができます。ドッキングの対象やプレビューが改善され、レイアウトを変える前にドッキングの結果が理解しやすいようになりました。さらにオーサリングウィンドウのサイズを変更する時のビューの拡大縮小も改善されました。
Project ExplorerのSearch
Project ExplorerのSearch(サーチ)でProject Explorerビュー内の自然なサーチやフィルタ適用が可能になり、Wwise Authoring Query Language (WAQL) にも対応します。オブジェクトが多数あり複数の関係者がいる大型プロジェクトでは特に便利な機能です。サーチにマッチする項目をハイライト表示して展開してくれるため、Project Explorerで移動しやすくなりました。
Project Explorer上部のサーチフィールドに入力、またはオブジェクトをドラッグするだけで結果が表示されます。詳細は Using the Project Explorer Search をご参照ください。
Paste Properties
Paste Propertiesビューを使い、オブジェクトのプロパティをコピーして別のオブジェクト(複数オブジェクト可)にコピーできるようになりました。プロジェクト内のプロパティの一貫性を維持して予期せぬ例外を発生しにくくするので、安心感があります。Paste Propertiesビューで、ソースオブジェクトとターゲットオブジェクトのプロパティを比較することもできます。
この新しいビューを使用すると、以下2種類の情報をコピー・ペーストできます:
- 各種プロパティ: Property EditorのOutput Bus、Loudness Normalizationなども含まれます。
- List(リスト)要素: オブジェクトに所属する副次的な要素のリスト。Paste Propertiesビューは以下のListに対応しています:
- RTPC
- Stingers
- Metadata
- Music Cues
例えば、複数の車両や物理オブジェクトで同じRTPCリストを使いたいと考えるかもしれません。
Wwise Authoring API (WAAPI) の拡張で、ソースと1つのターゲットで異なるプロパティやリストを返す機能 (ak.wwise.core.object.diff) や、ソースのプロパティやリストを、ターゲット(複数可)にペーストする機能 (ak.wwise.core.object.pasteProperties) が加わりました。これで、カスタムWAAPIワークフローとしてPaste Property操作(RTPCを含む)を実行することで、開発パイプラインを加速化できる可能性が生まれます。
このビューの使い方の詳細は Copying and Pasting Object Properties をご参照ください。
新しいカーブと、新しくなったAttenuation Editor
Obstruction(オブストラクション)、Occlusion(オクルージョン)、Diffraction(回折)、Transmission(透過)用のカーブの選択肢をAttenuation(減衰)に追加し、減衰ごとにカスタマイズできるようになりました。
これらのカーブには、以下の選択肢があります:
- Obstruction/OcclusionのProject Settingカーブを継承。
- 利用可能なプロパティごとに、Customカーブを使用。
- Noneを使用。
これらのプロパティのカーブを、Attenuationごとに微調整する柔軟性が提供され、Spatial Audioの包括的なビジョンの達成に役立ちます。
また、Attenuation Editorのレイアウトは、Property EditorのRTPCタブのレイアウトに合わせて変更されました:
- リストとグラフビューの位置が入れ替わりました。
- Attenuationの追加プロパティがリストとして表示されます。
- Attenuationグラフでフィルタを適用して特定のゲームオブジェクトを除外できるように、テキストフィールドが追加されました。
Auto-Defined SoundBanks
Auto Defined SoundBanks(自動定義のサウンドバンク)でEventベースのSoundBank方式がWwiseオーサリングで可能になり、ゲームエンジンのインテグレーションに新たなアセットマネジメント戦略をもたらします。この機能を選択するとゲームエンジンのインテグレーションと連動し、ランタイムにWwiseリソースをダイナミックにロード・アンロードできるため、ゲームがリクエストするEventやMediaだけをメモリにロードできます。WwiseではAuto Defined(自動定義)とユーザ定義のSoundbankが共存できるため、開発者はニーズに合わせてSoundBankの最適化を選択できます。
ほかにもゲームですぐ採用できる、自動化され細分化されたアセット管理のアプローチに対応する以下のようなワークフローの改善を開発しました:
- CopyStreamedFiles.exe の削除。同等の機能をWwiseのSoundBank生成プロセスに直接統合しました。
- Outputフォルダのクリーンアップ。
- ソースコントロール内のOutputフォルダ。
この機能はWwise Unreal Integrationの一部としてリリース済みのEvent-Based Packaging (EBP) ワークフローの経験に基づいて構築されたもので、EBPの最新版はこの新方式を活用しています。Event-based(イベントベース)のSoundBankの始点をWwiseオーサリング内にすることでEBPワークフローの柔軟性をUnrealパイプラインから独立させ、ほかのゲームエンジンのインテグレーションにも含めて成長させていくことが可能となります。
File ManagerのGenerate Filesタブ
File ManagerにGenerated Filesタブが追加され、プロジェクトの出力フォルダのファイルの情報が表示されるようになりました。プロジェクトの各プラットフォーム用に生成されたファイルが、この新しいタブにプラットフォーム別に表示されます。生成されたファイルのステータスやオーナー、そしてどのファイルが読み取り専用なのかを確認できます。また、File Managerから移動しなくても生成されたファイルの移動や削除ができます。
ソースコントロールプラグインを使用している場合は、リストのファイルを右クリックするとSubmit ChangesやCheck outなど追加のコマンドセットにアクセスできます。
Transport Controlのユーザーインターフェースを更新
Transport Controlビューが以下のようにさらにコンパクトになりました:
- Game Parameter、各種オプション、リセットは記号で示されます。
- 再生関連のオプションが再生ボタン横の新メニューにネスト化されています。
- リセットメニューが整理され、グループに分かれています。
Contextual Help、Capture Logエラーメッセージ
Property Helpビューの目的を拡張し、名前をContextual Helpビューに変更しました。Capture Logのエラーメッセージを選択すると、その詳細な説明、予想される原因、解決手順などがContextual Helpビューに表示されます。
従来と同様、各種入力フィールド、チェックボックス、ボタン、スライダーなどを使う上で、それがダイアログやリストやビューを開くものではなく、プロパティ設定用であればそのヘルプ情報が表示されます。
Contextual Helpビューの内容は、Helpメニューで選択したDocumentation Language(ドキュメントの言語)に合わせて、英語、日本語、中国語、韓国語のいずれかで表示されます。
Filter Behavior: Use Highest Value
Voice LPFとVoice HPFに採用する蓄積方法を、Project Settingsで定義できるようになりました。最終的な値をすべての値の合計とするのか(これまでの唯一の方法)、または全オブジェクトのうちの最高値を使うのかを選択できます。
この例では各オブジェクトのLow-pass filter(LPF、ローパスフィルタ)プロパティの値が指定されています。サウンドに適用するLow-pass filter値は、どの蓄積方式を選択するのかによって変わります。
Sum All Values: 各オブジェクトのLow-pass filterプロパティ値を合算します。
Use Highest Value: 全てのLow-pass filterプロパティ値のうち、最大のものを使用します。
State GroupやState値のコピー&ペースト
Property EditorのStatesタブでState値をState Group間や異なるオブジェクトタイプ間でコピー&ペーストができるようになり、Master-MixerやActor-MixerやInteractive Music Hierarchyの間でもコピー&ペーストができます。さらに複数のオブジェクトをコピー先として選択し、クリック1つですべてのオブジェクトにステート値をコピーできます。
またState Groupとそれに関連するState、プロパティ、State値をオブジェクトタイプや階層に関わらずオブジェクト間でコピーできます。
Event Action: State、State Groupの表示
Event Action Set StateのTargetフィールドにStateとState Groupの両方が表示されるようになり、異なるグループに所属する同名のStateがある際に区別しやすくなりました。
Performance Monitor
Performance Monitorのデフォルト設定を更新し、便利な各種グラフ設定を含めました。
Selection Channel、Meterインスタンス
Sync GroupをSelection Channelに置き換え、以下の方式のどちらでもビューを同期できるようになりました:
- Project ExplorerとEvent Viewerの中: Project ExplorerまたはEvent Viewerの複数のインスタンスで、同じSelection Channelを選択すると、そのビューの1つのインスタンスで行った選択や移動が、ほかのインスタンスでも自動的に行われます。
- ほかのビューでタイトルバーにSelection Channelアイコンがある場合: このオプションを使用すると、ビューをProject ExplorerやEvent Viewerの特定のSelection Channelと同期できます。つまりProject ExplorerやEvent Viewerでそのチャンネルで選択したオブジェクトは、自動的に同期されたビューでも選択されます。
一方、混乱を避けるためにメーターのSync Groupsは削除され、代わりにInstances(A、B、C、D)が表示されます。
マウスホイールを使ったズーム、パンニング
マウスホイールの動作を以下の場所で更新し、エクスペリエンスを改善しました:
- AK Convolution Reverb Editor
- Music Segment Editor
- Attenuation Editor
- RTPCタブ
- Performance Monitor
- Voice Monitor
- Game Sync Monitor
- Source Editor
時間や範囲を示すビューにおいて、基本的に以下のルールを採用しました:
- マウスホイール: 水平スクロール
- Ctrl+マウスホイール: 水平ズーム
- Shift+マウスホイール: 垂直スクロール
- Ctrl+Shift+マウスホイール: 垂直ズーム
キーボードショートカットの変更
以下のキーボードショートカットを変更しました:
- Ctrl+FでProject Explorer内をサーチします。
- Ctrl+Shift+FでWwise Toolbarでサーチします。
- Ctrl+Shift+LでList Viewが開きます。
- F3で現在のビューをサーチします。
- Shift+QでQuery Editorが開きます。
- Dialog Event EditorとLicense Managerのデフォルトのショートカットがなくなりました。
ショートカットメニューの更新
Contents Editor、List View、Query Editor、Reference Viewのショートカットメニューを更新し、以下のオプションを追加しました:
- Delete objects(オブジェクトを削除)
- Rename/Batch rename objects(オブジェクトの名前の変更、名前の一括変更)
WAQL
WAQLのパフォーマンスを全体的に改善し、さらに、以下を追加しました:
- "duration" アクセサを追加し、指定したduration(長さ)に合致するオブジェクトを探せるようにしました。例: $ from type sound where duration.max > 2
- mute(ミュート)、solo(ソロ)のステートを、isExplicitMute、isExplicitSolo、isImplicitSolo、 isImplicitMuteで公開しました。例: $ where isExplicitMute
WAAPI
以下の機能をWAAPIに追加しました:
- ak.wwise.core.object.set に、以下を追加しました:
- Wwiseオブジェクトの一括操作。
- プロパティやリファレンスを設定する機能。
- 新しいオブジェクトを子として、またはリスト内に作成する機能(例えばRTPCなど)。
- RTPCを追加、変更、削除できるようになりました。
- Custom ModulatorやShareSets Modulatorを作成できるようになりました。
- Custom EffectやShareSets Effectを作成できるようになりました。
- Sourceプラグインを作成できるようになりました。
- ak.soundengine.getState と ak.soundengine.getSwitch を追加し、サウンドエンジンから現在のSwitchや現在のStateを取得できるようになりました。
- ak.wwise.core.soundbank.convertExternalSources を追加し、外部ソースのコンバージョンに対応しました。
- ak.wwise.core.soundbank.processDefinitionFiles を追加し、SoundBank定義ファイルに対応しました。
- 2つのトピック ak.wwise.core.profiler.gameObjectRegistered と ak.wwise.core.profiler.gameObjectUnregistered を追加し、ゲームオブジェクトが登録された時や登録解除された時に通知されるようにしました。
- ak.wwise.core.profiler.getGameObjects を追加し、プロファイラキャプチャの特定の瞬間に登録されているゲームオブジェクトのリストが取得できるようになりました。
- Mute(ミュート)、Solo(ソロ)のコマンドが送られてくるtrue/false値を受領できるようになり、ステートが指定されない時に自動的にトグルするようになりました。
- トピック ak.wwise.core.profiler.captureLog.itemAdded を追加し、新しいCapture Log Eventsがパブリッシュされた時に通知されるようになりました(2021.1.9+にも追加されました)。
- ak.wwise.core.object.diff と ak.wwise.core.object.pasteProperties を追加し、Paste Properties機能に対応しました( Paste Properties 参照)。
- 現在開いているプロジェクトに関する情報を取得するための ak.wwise.core.getprojectinfo を追加しました。
- 直前の操作を元に戻すための ak.wwise.core.undo.undo を追加しました。
- SoundオブジェクトのアクティブSourceを変更するための ak.wwise.core.sound.setactivesource を追加しました。
- オブジェクトやそれと依存関係のあるものを再生準備のために ak.wwise.core.transport.prepare を追加しました。
各種プラグイン
Reflectワークフローの簡素化
Reflectプラグインのワークフローが簡素化され新しくなり、ダイナミックなアーリーリフレクションをクリエイティブに使いやすくなりました。音のAttenuation(減衰)カーブを活用しリフレクションパスの減衰に応用できるようになり、新たなカスタマイゼーションの機会が生まれます。サウンドのAttenuationカーブを継承したり、カスタマイズしたり、無効にしたりと、カーブごとに変えられます。さらにReflectプラグインの各インスタンスのDistanceカーブやDiffractionカーブをワープできるため、個々のリフレクションを強調したり弱めたりしながら、クリエイティブに制御できます。
3D Audio Bed Mixerプラグイン
新しい3D Audio Bed MixerプラグインをAudio Objectsバスにインサートすると、バスを通過するAudio Objectの数を減らせます。Audio Objectの一部をミキシングすることで、メインミックス、パススルーミックス、そしてパイプラインの終わりでSystem Audio Objectに昇格できるミキシングされていないAudio Objectのまとまりという、3種類の出力を出せます。このプラグインの動作をカスタマイズできる設定がいくつかあります。
Time Stretchの改善
Time Stretchプラグインに新しい高品質のストレッチモードが加わったことで、トランジェントを維持しながら品質とCPUパフォーマンスのバランスを制御できるようになりました。またTime Stretchプラグインを使用すると、オーディオ信号の速さや長さをピッチに影響を与えずに変更できます。タイムの延長と短縮の両方が可能で、モノフォニックの音にもポリフォニックの音にも適用できます。さらにピッチシフトやランダムなピッチシフトを制御するためのプロパティや、ステレオイメージを扱いやすくするステレオプロセシングモードも追加され、クリエイティブツールとしてのTime Stretchの柔軟性が向上しました。
インテグレーション
Auto Defined SoundBanksにUnrealが対応
Wwise UnrealインテグレーションのEvent-Based PackagingがWwise 2022.1の新機能Auto Defined SoundBanksを活用するようになりました。SoundBankメタデータファイルの内容が改善され、デザイナーの意図する通りにサウンドをプレイバックするために、ランタイムエンジンが必要とする情報がすべて揃います。これでUnrealインテグレーションはWwiseの生成するメタデータが有効であるととらえるので、Unrealインテグレーションからすべてのアセット同期コードを省くことができます。つまりWwiseプロジェクト内に存在するすべてのものをUnreal Contentフォルダに自動的に入れるのではなく、Unrealアセットを必要に応じて作成するようになりました。ユーザのUnrealプロジェクトで特定のEventを使うと決めない限り、ディスクにアセットを作成しません。このようなアセットはユーザがプロジェクトをパッケージ化するまでそのアセットが使用するリソースへのリファレンスを含むだけで、パッケージ化する時にはじめてSoundBankをUnrealのステージングフォルダ階層にコピーします。こうすることでオーディオ以外の作業をするプロジェクトメンバーがこれまでに遭遇していたような、プロジェクトでオーディオを聞くためにWwiseをインストールしなくてはいけないという問題も解消されます。新インテグレーションでは、GeneratedSoundbanksフォルダさえ存在すればプロジェクトにWwiseオーディオが完全に対応できます。
Unreal Engine 5.0
ラージワールドに倍精度(64ビット)ベクトルで完全に対応しました。これまでは32ビット精度で作業するか、ユニバースの中心位置を変えるか、カスタマイズしたLocal Gridを使う必要がありました。Unreal Engine 5.0リリース向けに継続的に更新していきます。詳細は重要な移行の注意 2022.1 をご参照ください。
SDK
サードパーソンリスナー
TPP(サードパーソンパースペクティブ)を使うゲームやシミュレーションにオーディオを実装する際に、Listener Game Object(リスナーゲームオブジェクト)の配置に迷うことがあり、カメラの位置を提案する人もいれば、プレイヤーがコントロールするキャラクターの位置を好む人もいます。新Distance ProbeがListener Game Objectのカウンターパートとして、両者の長所を兼ね備えた選択肢を提供します。
ListenerにDistance Probeをアサインすると、Listenerに送られるすべての音に適用する減衰距離が、Distance ProbeからEmitter Game Objectまでの距離に基づきます。パンニング、スペーシャリゼーション、スプレッド、そしてフォーカスは、Distance Probeがアサインされたかどうかに関わらず、必ずListener Game Objectのポジションとオリエンテーションに基づきます。Distance Probeを使い距離を分離することで、プレイヤーへの聞こえ方を、ゲームプレイのシナリオに応じてダイナミックに制御することができます。
追記:
- 各Listener Game Objectは、0個または1個のGame ObjectをDistance Probeとして設定できます。
- 1つのGame Objectを、複数のListenerのDistance Probeにできます。
- Listenerを自分自身のDistance Probeにアサインすることは、Distance Probeをnone(なし)に設定するのと同じです。
Spatial Audioのジオメトリのパフォーマンス改善
Spatial Audioは急速に進化する機能セットで、パフォーマンスと信ぴょう性のある環境表現の間のクリエイティブな相互作用を得るために、常に最適化が行われています。回折(Diffraction)を計算するには回折エッジを回るパスを見つけることが必要で、ランタイムに多量のCPUを消費することがあります。CPUパフォーマンスを最適化するため、新たに回折エッジから次の回折エッジまでの可視性を示すマップを隣接する主要回折エッジを集めるレイトレーシングのアプローチを使って作成します。これらを使い回折の計算を最適化できます。さらに、スペーシャルオーディオの計算負荷を複数のオーディオフレームに広げ(スプレッドで定義)、CPUのピークを減らせます。スペーシャルオーディオの各タスク(レイキャスト、パスのバリデーションなど)をプライオリティキューに入れ、ロードバランスのスプレッド設定に基づき優先順位を決め、各フレームでキューにあるタスクを指定したタスク数だけ実行します。CPU負荷のバランスを調整することは、多数のエミッターが同時に使われる場合などに特に有効です。
ラージワールドに対応
ポジショニングの値を倍精度に移行させたことで、WwiseサウンドエンジンがGame Objectのラージワールド座標に対応できるようになりました。これにより数十億単位の大きさのワールドにおいても、サウンドのポジショニングが予測に沿った動きを取ることができます。Game Objectのポジションを扱うAPIが更新され、 AkWorldTransform と AkVector64 という2つの新しいタイプが使われるようになり、これらが追加データを提供します。詳細は 重要な移行の注意 2022.1 をご参照ください。
RTPCとSwitchのパフォーマンス改善
ランタイムにダイナミックオーディオをつくり出すために使う増加する一方の各種パラメータの管理が、今回より速く効率的になりました。RTPC(Realtime Parameter Control)やSwitchのパフォーマンスが、メモリにロードされているWwiseオブジェクト数やそのRTPCやSwitchの使用状況に影響されなくなりました。RTPCやSwitchの値の設定や更新が最適化され、RTPCやSwitchを使用する登録済みゲームオブジェクトやアクティブサウンドの数だけに依存するようになりました。
オーディオレンダリングのタスクのカスタムスケジューラーの改善
オーディオレンダリングのパイプラインのマルチスレッド実行を書き直して最適化し、ランタイムパフォーマンスをさらに改善しました。特に並列実行のfork/joinメソッドの代わりに依存性をモデル化したジョブベースの内部スケジューラーに移行したことが、改善の重要な要素でした。主なポイントとして:
- Voices Graphにおけるバスの実行は、ボイスグラフのレベルを1つずつ処理するのではなく、Voice Graphの独立した複数のブランチを同時に処理できるようにしたことで、並行性とスループットが大幅に改善されました。
- ボイス処理の負荷バランスの調整が改善されデフォルトで行われるため、ゲームエンジンがそのような仕事配分を行う必要がありません。
- ゲームエンジンマネージャとのインテグレーションに対応・管理しやすくなりました。多くの状況でゲームエンジンが以前より少ないジョブをスケジュールでき、インテグレーションのオーバーヘッドを減らせます。
- 外部ツールでWwiseのCPU使用を詳細にプロファイリングするための新しいAPIを追加しました。
これにより、Wwiseはより豊かなオーディオエクスペリエンスを提供するため効率的にCPUリソースを活用できるようになり、同時にゲームエンジンとの仕事配分やスケジュールの調整も改善されました。
コメント