2016年2月23日

Lexus のホバーボード体験 'Ride The Slide' で UE4 技術が大活躍

作成 Rama Allen Eric Renaud-Houde Raymond Leung

Lexus は世界中が夢見てきた Back to the Future を 2015 年に実現しました。現実のホバーボードを史上初めて完成させ、プロのスケートボーダー Ross McGouran 氏が特設コースでテスト走行するビデオを通じて前代未聞の体験を発信しました。そして Lexus の次のステップは、The Mill のチームとエピック ゲームズのアンリアル エンジン 4 のパワーによって、この体験を広く知ってもらうことでした。

VR レビュー制作ツール第一号の Mill Stitch の開発だろうと、リアルタイムなルームスケールの Vive 付き VR の 試作品の作成 だろうと、我々は常に刻々と変化する技術を試し、新しい方法を開拓しています。

2015 LA Auto Show で Lexus Slide 体験の実施を決めた時、リアルタイムのゲーム エンジン体験がもたらす空間の中で、Spinifex Group U.S. との共同製品のハックされた感圧コントローラで実現する Lexus 'Ride the Slide' が我々の答えでした。 

体験 

シミュレーションが行われた海辺のスケートパークは、ダイナミックな環境をユーザーが目と耳で感じて、クォーターパイプをかまし Lexus Slide Park 中を駆けめぐることができるように、周囲をビデオで囲んだ特性の景色を作り出しました。このパークは、今年初めに Lexus がバルセロナに設置したオリジナルの特設パークのレプリカです。

ユーザーの体験は、自分の荷重分布を監視するためにハックされた感圧コントローラ上に立つことから始まります。この物理ボードはハードウェアでハックされており、前後左右に体を傾かせて速度と方向をコントロールします。 

このスケートパークと周辺環境は、エピック ゲームズの アンリアル エンジン 4 を使って、同期したコンテンツを 60 フレーム / 秒で 18 枚すべての HD スクリーンに流すようにソフトウェアをカスタマイズすることで、非常に忠実に再現することができました。イベント ベースの空間オーディオの作成およびアンリアルへの統合は、Apollo Studios が手掛けました。

レンダリングの配信

UE4 のレンダリングを 18 枚のスクリーンへ配信するためには、かなり多くの技術的な難題を限られた時間で解決しなければなりませんでした。例えば、ハードウェアと仮想カメラのコンフィギュレーション、フレーム同期のためのネットワーク構築とステートの配信などです。確かに難しい課題ではありましたが、何とか解決することができました!

ハードウェア

レンダリングしたコンテンツを配信する場合、とにかくまず最初に一括配信を避ける方法はないか考えます。今回のケースでは、プッシュ送信するピクセル数 (9720 x 3840) と SLI サポートがないことを考えると、マシン 1 台では確実に足りませんでした。そこで、サーバー 1 台とレンダリング用クライアント マシンを 6 台をクローズド ネットワーク スイッチ上につなぐことに決めました。

仮想カメラ

マシンはそれぞれ、壁の上半分あるいは下半分のいずれかをレンダリングします (NVIDIA surrounding を有効にした 3 枚の v-sync された ポートレート モード ディスプレイ)。ディスプレイ全体でシーン同士のつなぎ目が出ないようにするには、プレイヤー ポーンにアタッチされた仮想カメラがその部屋のディスプレ レイアウトと一致しなければなりません。そこで我々は、非同期の視点錐台 (レンズ シフト) サポートを UE4 のカメラ コンポーネント クラスに直接実装しました。こうすることで、各クライアント インスタンスが json 設定を取り込み、それぞれの視点位置のカメラをアクティベートするようになります。

さらに、フレームレートは 60 fps を維持することが求められました。特に今回のようにカメラの動きが流動的な場合は、これより低いレートではうまくいかないことが分かりました。NVIDIA GTX 980ti カードを使って、解像度を ~ 80% にして品質の微調整をすると、レンダリングが安定しました。スクリーン空間のポストプロセス エフェクトはマシン間での視差を発生させるので、最小限に抑えなければなりませんでした。

ネットワークの構築

システム ステートの共有は最小限に抑えることにしたので、UDP と切り替え速度を信頼して同期し続けることができました。ユーザーがスケート パークを動き回ると、ユーザーの視点位置と方向だけでなく、マチネ トランジションを同期させるための時間情報も加えて通達されます。 

アンリアル エンジンの GPU/CPU 同期ポイントの直前だとプロジェクトのスコープから外れてしまうので、TCP フレーム ロックのオーバーヘッドを避けるための方法です。この決断に至るまでには、UDP レイテンシーとロックテストを重ねに重ねました。UDP パケットの信頼性と速度をテストするために、ネットワーク上で ping pong テストなども行いました。往復遅延時間はサブミクロ秒レベルを実現し、数時間放置すると 0 UDP パケットになりました。これが我々のアプローチの決定打となりました。

実装に関しては、Asio C++ ライブラリと新しい Cinder OSC ラッパーを直接アンリアルに統合しました。asio::io_service を実行する FRunnable オブジェクトを実装して、アプリケーションがサーバーの役割をするのか、またはクライアントをレンダリングするのかを選択するコンフィギュレーションを設定しました。Asio は、インストレーションの残りのコミュニケーション レイヤーも処理してくれることが分かりました。例えば、ユーザー データと制御の Wii Balance Board をポーリングして、その情報をアンリアルに送信して体験の移動速度を制御する Cinder アプリケーションをインターフェースしなければなりませんでした。Cinder アプリケーションはまた、アンリアル アプリケーションもリッスンして、DMX ファンを AR エレメントとして制御するための情報を送信します。

アセットの作成

Lexus Slide 用のアセット作成は、通常の VFX パイプラインとは若干異なります。アンリアル エンジンのライト焼き付け処理であるライトマスとうまく機能するようなアセットを作成するには、特に注意を払う必要があります。各アセットは標準のディフューズ、法線、スペキュラ マップに対する UV でラップされており、ライトマップの品質を最適化したり高めるためには、さらに UV セットが必要になります。

リアルタイム ソーシャル シェアリング

プロジェクトのソーシャル シェアリング エレメント用の空間にいるユーザーのビデオをキャプチャするために複数台のカメラ構成のシステムを設定しました。結果、長さ 15 秒の Lexus 'Ride The Slide' 体験の動画をユーザー別に保存し、ソーシャルシェアリングすることができました。 

アンリアル アプリケーションは TouchDesigner アプリケーションと接続されています。それは、ユーザーのキューと体験開始のためにアンリアルと iOS デバイス両方と通信するようにビデオ キャプチャ システムをカスタマイズするためだけでなく、リアルタイムな色の修正と編集を行うためです。 

結果

Mill チームはアンリアル エンジン 4 のレンダリングを 18 枚のディスプレイに配信する上での問題点を解決し、イマーシブな体験に必要な見事なシームレス体験を作り上げることができました。12 日間で 4000 人ものユーザーが特設 Lexus スケートパークで 'Ride The Slide' を体験しました。

これからも我々は、アンリアル エンジン フレーム内の同期ポイントともっと直接的に機能する方法や、libpcap によるマシン時計の同期とパケットの正確なタイムスタンプの読み取りなど、フレーム同期のより高度な方法を探求し続けます。アンリアルのテクニカル アーティスト達も参加してくれることを期待しています! 

Behind the Scenes: Lexus Ride the Slide の動画は こちら、そして Mill の詳細は Mill のウェブサイト をチェックしてください。