- ビクトル・フェニックス(Viktor Phoenix):テクニカラー(Tecnhicolor)の The Sound LabのSound Supervisor 兼Senior Technical Sound Designer
- プロジェクト名:Passengers: Awakening
- 分野: ナレーティブ要素全般のADR監督、テクニカルサウンドデザイン
- 目標: 小さい開発チーム(10人前後)を率いて、短期間でAAA級のインタラクティブVR体験を完成させること
- オーディオ要件: ナレーティブ要素のスペ―シャリゼーション(spatialization)を、マルチプラットフォーム・3言語対応でリアルタイムに実現させる
私は、MPCのVR チームに誘われて、クリス・プラットとジェニファー・ローレンスが共演するソニー・ピクチャーズの映画『パッセンジャー』のVR体験版プロジェクト ‘Passengers: Awakening’の作成に関わりました。10年近く前に、Pandemic Studiosで初めてWwiseを使ってから愛用してきたので、今回もタイトなスケジュール内に目標を達成するには絶対に使うべきだと考えました。
MPCの開発者たちと緊密に作業をして、ダイアログを動かすのにUnreal EngineのビジュアルスクリプトであるBlueprintsで構築したロジックを使いました。UEのBlueprintsとWwise のEventを組み合わせることで、フック作成にプログラマの時間を無駄にすることなく、私もより多くのことを実現できました。
Unrealに組み込まれたオーディオエンジンは色々なタスクをこなせるものの、Wwiseの方が使いやすいと思うところがいくつかあります。第1に、Uassetsはバイナリファイルなので、テキスト編集ができないし、マージもややこしい。ファイルをテキストエディタで修正できるかどうかは、とても重要だと思います。WwiseファイルはXMLビルドでUEプロジェクト外にあるので、簡単に編集できるし、Perforceでファイルをマージできます。よくやるわけではないけれど、いざという時に助かりますね。
第2に、通常はプログラマにお願いするような、まだUEで自動化されていないタスクは、Wwiseに頼るしかないと考えて、特にプラットフォーム別のインテグレーション管理などが重点課題でした。
バイノーラルレンダリング
‘Passengers: Awakening’はOculus Rift、VIVE、そしてPSVR向けに開発されました。OculusのバイノーラルレンダラはUnreal Engine 4に入っているので、PC限定のリリースの場合はUrealで直にサウンドのスペーシャリゼーションができます。ただ今回はPSVR向けのリリースもあって、Oculus spatializer機能はまだPS4と互換性がないので、全てのコンテンツでPC向けはOculus spatializerを、PSVR向けはソニーの3Dオーディオツールを使えて、インプリのやり直しやプログラマ依存を避けられるソリューションが必要でした。
Oculus Audio SDKにWwise用のOSPプラグインが入っているのでインストールは楽チンで、ソニーのツールも同様。セットアップはプロジェクトの最初に一回するだけで、あとはWwiseのアップデートが一切不要でした。Oculus spatializerはプロジェクトのBinariesディレクトリ内にあるけれど、今回はローカルにビルドする(つまり開発者が自分のマシンにバイナリファイルをリビルドする)ことにしました。だから、PerforceでDLLを例外としなければならなかったです。それ以外は、簡単、簡単です。
Wwiseのインテグレーション
私は割とスクリプト経験があるけれど、プログラマではありません。最初に手作業でWwiseをUnreal Engineにインテグレーションした時に、Oculus spatializerを登録するのにてこずったものの、ラッキーなことにテクニカラーの Research & Innovation チームのエンジニア、Giuseppe MattioloがMPCの現場にいて助けてくれました。それ以外は自分でWwiseをインテグレーションできましたが、数年前はできないと思っていました。さらに、プロジェクト進行中にSDKがリリースされても、Wwise Launcherで最新バージョンに移行できました。プログラマを拘束せずに他の作業に集中してもらえるチャンスが増えて、すごく嬉しいです。
MPAAの厳しいセキュリティから生じた課題
テクニカラーのサウンド施設もMPCも、Motion Picture Association of America(アメリカ映画協会)のコンテンツセキュリティプログラムに示されたベストプラクティスに準拠していて、これはMPAAのメンバー企業のコンテンツを不正行為から守ることが目的です。ガイドラインに馴染みのない方に説明すると、制作ネットワークや、デジタルコンテンツの処理や保存を行うコンピュータが、直接インターネットにアクセスできないようにする、というのもベストプラクティスの1つです。施設内外のファイルの移動や、ソフトウェアのインストールなども、ガイドラインに制定されています。確かにセキュリティは重要だけど、日頃からソフトを素早くアップグレードしたり資産(アセット)を送信したりするのに慣れていると、ソフトのインストールや施設間のファイル転送を他の担当者にお願いしないといけないのは、大変です。このプロセスで責任者を明確にすることができ、またWwise Launcherで行うオフラインインストールも便利でしたが、ガイドラインゆえに発生したボトルネックのおかげで、開発よりも調整に時間がかかることもありました。
リバーブのプリレンダリング
エフェクトをプリレンダリングするのかランタイムにレンダリングするのかの判断は、最終的には品質・メモリ・パフォーマンスのバランスです。プロジェクトによって異なり、今回はダイアログアセットのステレオリバーブのレイヤをプリントすることにしました。
今まで経験したプロジェクトに比べて‘Passengers: Awakening’のセリフ数は比較的少なく(500以下)、ユニークなエリアは6だけで、プレイ体験としてはダイアログのほとんどが1、2ヶ所に限定されていて全体的にリニア(直線的)でした。複数のエリアで再生されるセリフにはBlueprintでSwitchを設定して、場所に合わせてWwiseが正しいレイヤをトリガーするようにしました。最終的なアセット数は1,700未満(リバーブレイヤも含め)だったので、VorbisやATRACの圧縮を使うとメモリはさほど問題になりませんでした。ただ、リッチな映像のエクスペリエンスでVRのフレームレートは非常に高く、これ以上CPUの使用を増やしてリスクを高めるわけにはいきませんでした。リバーブは、プリレンダリングに決めました。
スタジオでリッチなリバーブが工夫できて、私も結果に満足しているけれど、もしもう一度やるとしたら、アーリーリフレクションはゲームのジオメトリ情報を使ってスペーシャリゼーションして、レイトリフレクションだけをプリントするか、テイルに高品質のリバーブを使いたいです。Oculus spatializerは、アーリーリフレクションを使うとCPU負荷が追加され、部屋の大きさに比例して増加してしまいます。でもAudiokineticからGDC 2017で発表された新しいプラグインのWwise Reflectは、効率的にCPUを使用するそうなので、是非使ってみたいと考えています。
プレゼンス
VRでプレゼンス、つまり存在感を作り上げるのに重要な切り口が、ユーザの動きにリアルタイムで反応するサウンドです。どんな音も、プリレンダリングするとプレゼンス感が落ちます。これは避けようのない事実。プリレンダリングで音の奥行がロックされてしまうので、ユーザは、自分の環境内の位置を主体的にとらえられなくなってしまうのです。360動画など一部ではアンビソニックスやquad-binauralなど既存のアプローチを使ってもいいけれど、完全にインタラクティブなエクスペリエンスにプリレンダリングを使うと、例えプレゼンスに悪影響ないなんて言う人がいても、それはウソ。もし影響を最小限に抑えたければ、ユーザ周りで音場を回すという手段をWwiseの新しいアンビソニックコンボリューションリバーブなどで採用しているけれど、やはりプレゼンスをしっかり形成するには、音の臨場感をリアルタイムでユーザや環境に合わせてレンダリングしてあげる必要があります。
プリレンダリングしたリバーブを取り入れたので、プロジェクトのローカリゼーション言語全てでアセットをプリントしなければなりませんでした。セリフ数が少ないおかげで、決して莫大な作業量ではなかったけれど、もしランタイムにリバーブをレンダリングしてスペーシャリゼーションするだけのCPUサイクルの余裕があれば、真っ先にしてました。
ローカリゼーション
ローカリゼーションでは、Wwiseでランゲージ管理をしたので、各言語のアセットを実装するのも全く苦になりませんでした。それらをUnrealで正しくストリーミングできるようになるには、MPC VRの開発者のTimothy Darcyの協力が必要でしたが、オーディオアセットを入れてSoundBanksをリビルドして、既存のAK Eventが全て正しいセリフを指すようにするのは、すぐできました。
Stylin’ Profiling
一つくらい、あそびのある見出しを入れなきゃね。まじめな話、インタラクティブプロジェクトに関わったことがある人は誰でも、プロファイリングの大切さは知っているはず。このプロジェクトもWwiseでプロファイリング情報を見るのは欠かすことができない作業で、いつものQAやバグフィックスはもちろん、実際にプロジェクト途中でフレームレートが遅くなった時は、オーディオに問題ないと確認するのに役に立ちました。正確にいつ、どこでCPUが使われているかを把握できたおかげで、原因を絞ることができて、チームの行き詰まりを解消できました。
リンク:
http://www.moving-picture.com/film/film-vr/vr/
http://www.technicolor.com/en/innovation/research-innovation
https://developer.oculus.com/downloads/package/oculus-audio-sdk-plugins/
コメント