Unity を検索

プロジェクト開発からユーザー参加まで:『Drop in the Ocean』の物語

2022年10月21日 カテゴリ: ゲーム | 17 分 で読めます
From production to participation: The story of Drop in the Ocean | Hero image
From production to participation: The story of Drop in the Ocean | Hero image
シェア

Is this article helpful for you?

Thank you for your feedback!

Conservation International とのパートナーシップのもと、Vision3 が Unity を使って開発した『Drop in the Ocean』は、クラゲに乗ったり、深海の神秘に出会ったりの 10 分間のソーシャル型の VR アドベンチャーです。ナレーションは Philippe & Ashlan Cousteau が務めています。最も重要なポイントは、この体験に参加した人が海の生物の視点でプラスチックによる汚染の危機を体験するということです。

このコンテンツはサードパーティのプロバイダーによってホストされており、Targeting Cookiesを使用することに同意しない限り動画の視聴が許可されません。これらのプロバイダーの動画の視聴を希望する場合は、Targeting Cookiesのクッキーの設定をオンにしてください。

このプロジェクトをソーシャル VR 体験として開発するうえで大きな技術的な課題がありましたが、視聴者のメンバーが完全な身体を持つアバターとして表現されていることは私たちのチームにとって非常に重要なことでした。『Drop in the Ocean』をプレイする際には、最大で 4 人の参加者がチームになって、参加者を取り囲むプラスチックごみを片付け、私たちの海が直面している危機や、問題の解決に参加する上での彼らの役割について新たな知見を得ます。『Drop in the Ocean』を Unity の Environment and Sustainability 助成金プログラムの目に留まる存在にし、プロジェクトが 2021 年に助成金を得る成果を導いたのはこのメッセージです。

この記事では、『Drop in the Ocean』の開発プロセスと、私たちの Vision3 のチームがどのように Unity を活用したかを掘り下げます。加えて、Environment and Sustainability 助成金が私たちの活動の目的を達成する上でどのように役立っているかをシェアします。

体験の舞台裏

視聴者が没入的な体験の内側で現実の人々とやり取りしていることに気づいたとき、魔法のようなことが起きます。この魔法こそ、ソーシャル VR とそれを実現している技術が、人々を本来居るはずのない場所に連れ出す素敵な能力を備え、クリエイターがユニークな物語を作り出すことを可能にする理由です。

友人とこのような瞬間を共有できるようにして、物理的にその行動にリアルタイムで反応できるようにすることが、没入型エンターテインメントの非常に特別な要素です。『Drop in the Ocean』のようなプロジェクトの最初には、Vision3 のチームはいつも視聴者にとって体験をより得るところのあるものにする方法を提案します。

Drop in the Ocean』は最初、PC 向けの VR 体験として 2019 年にローンチしましたが、その時は参加者は専用のハイエンドワークステーションにケーブルでつなぐ必要がありました。プロジェクトが進化するに従い、オーダーメイドの RGB カメラベースのモーションキャプチャシステムが開発され、体験の視聴者はお互いを完全な身体を持つアバターの姿で見ることができるようになりました。このカメラシステムとハイスペックなローカルネットワークは独立した Linux ベースの PC で制御されていました。

モーションキャプチャシステムはマーカーレスのトラッキングによって、動作にこれまでにない自由度を与えましたが、その時点での最新技術の制限に縛られていました。また、固定されたライティング条件に依存していたため、展開先と見込んでいた施設の環境に適合しないこともしばしばありました。

簡単に言えば、私たちのチームは視聴者が互いに完全な姿を持つアバターとしてやり取りできる非常に革新的な体験を、その体験が上演される場所や方法に対する巨大な設備の要件と制限をかけて実現していたということです。

Shark still from Drop in the Ocean

3 年後、私たちは自分たちを非常に野心的な課題に直面させていました。それは、ビジュアルの忠実度や科学的に正確な海中生物のモデルはそのままに、また完全な身体を持つアバターもネットワーク接続されたロケーションベースの体験を実現するために維持しつつ、この体験を旅行カバン 1 つに収まるモバイル VR デバイスで動くようにするというものです。

さて、どうやって実現したかお話していきましょう...

動的解像度とシェーダーの最適化

プロジェクトをスタンドアロン型デバイスに移植し、コストを削減して視聴者の数を増やすことに関心はあったものの、同時に PC 向け VR 版で実現していたビジュアル品質をできるだけ維持するという必要もありました。

オリジナルの『Drop in the Ocean』には、モバイル開発において課題となるものがほぼすべて盛り込まれていました。クラゲに使われた複数の半透明のレイヤー、非常に多数のポリゴンを持つ大きな巨型動物類のモデル、複数存在するものすごい数のオブジェクトを持つシーン、固定されたタイムラインビルド、そしてオブジェクト間の相互作用における多数の物理演算などです。VFX 開発者の Conrad Hughes 氏は、できるだけビジュアル品質を維持しつつ、プロジェクトをフレーム内でさせることを念頭に置いて、動作移植チームの一員として仕事をしました。このインスタンスで最初に行ったことは、『Drop in the Ocean』を HD レンダーパイプライン(HDRP)からユニバーサルレンダーパイプライン(URP)に切り替えることでした。URP を使うと PC 版で実現していた品質をやや落とすことになりましたが、HDRP に比べて非常に高速に動作し、最低限、スタンドアロン型デバイスで動かし始めることができました。

目標は PC 版の忠実度にできるだけ近づけること、そして海面の下にいるという感覚を保つことでした。この目標に向かって、私たちは FFR(固定中心窩レンダリング)のような機能を活用し、解像度のスケールをデバイス画面の中心から外側に向かって下げていくことで、全体のパフォーマンスを大きく向上させました。一部のデバイスでは非常に高解像度の画面のペアを表示します。私たちは VR プロジェクトの標準として Multiview を使い、2 つめの目のインスタンスを作りましたが、これはディスプレイは美しい画像を表示する能力を持っているが、ハードウェアはその画像のピクセルを出力するためにフル稼働する可能性があるということです。FFR は視聴者が注目している対象のビジュアルの忠実度や品質を保ちつつ、残りの部分を埋めるうえで非常に大きな役割を果たしてくれます。

Unity Editor screen capture from the making of Drop in the Ocean.

プロジェクトを通してスケールする動的解像度も使いました。画面上にたくさん物が映るときはレンダースケールが落ち、少数の目立つオブジェクトがあるだけのときはレンダースケールが上がります。この方法で、視聴者が 1 つの物に焦点を合わせたときはそれが 100% の品質で表示されるようになります。しかし、オブジェクトの大きなグループ(何百匹ものクラゲなど)に焦点を合わせているときは、視聴者は本当にそれが存在しているような感覚になり、まるで大きな雲の中に居るように感じます。

プレイヤーの手、プレイヤーのアバター、その他いくつかの VFX オブジェクトを描くために、Visual Effect Graph を使う必要がありました。アセットが元々 Visual Effect Graph を使ってオーサリングされていたこと、加えてオーダーメイドのスクリプトを 2、3 本使っていたことがその理由の一部です。VFX をすべて再構築すると、それは基本的には大きな時間の制約になります。Open GL 3.1 で Visual Effect Graph が動くようにするには、パッケージ中のキューブマップ配列(GLES 3.1 ではサポートされていない機能)を無効にする必要がありました。基本的には、Visual Effect Graph パッケージを Unity 2022 から Unity 2021 LTS にバックポートし、少々調整を加えて動作するようにするというものでした。これを済ませた後は、非常に柔軟な機能となって、私たちのニーズに合致してくれました。さらに最近になって実装された機能によって、少数のスクリプトやカスタムメイドしていた部分も不要になりました。これはとても助かりました。

それに加え、私たちの開発者はシャドウを無効にし、ライティングの設定を修正して、動的ライティングを維持(ただし 1 つのサーフェスを同時に照らすライトがあまり多くならないように)し、コストがかからないようにしました。また、GPU ヒッチを防ぐために物体が出現するタイミングをずらし、ハードウェアのフレーム内でゲームが実行されるようにする一般的なプラクティスを一通り実践しました。テクスチャサイズの縮小、シェーダーの複雑さの低減、高価な ALU での数学演算の削減、テクスチャタップの削減、可能な場合はテクスチャをパックする、スキンメッシュの部分では頂点アニメーションを使う、そして可能な場所では物体をシンプルにする、といったことです。コンソール時代の初期から受け継がれてきた数多くのテクニックが、スタンドアロン型デバイスで体験を動作させるために活用されました。

全体として、高価なオブジェクトは控えめに使うように努めました。高価なオブジェクトを使ったときは、パフォーマンスのオーバーヘッドを無駄にしないようにそれを画面で目立つように配置するようにしました。

ネットワークへの新しいアプローチの構築

スタンドアロン型デバイスへの移行を受けて、私たちはネットワークの設定手法を変化させ、またモデレーションの制御を大きく変更しました。以前は専用の PC がイーサネットで常時接続されていましたが、現代は Wi-Fi 6 ネットワークごしにつながったデバイスを監視するという課題がありました(それと同時に、デバイスのバッテリー残量をリモートで監視し、体験がすべてのデバイスで同時に、正常に立ち上がるようにするという課題もありました)。

Drop in the Ocean』のデプロイについては、他の訪問者向けアトラクションと同じくらい堅牢なものにする必要がありました。常にやってくる視聴者のグループを中断やキャリブレーションのやり直しをすることなく、シームレスに案内することができなければなりません。リード開発者の Gokhan Sivrikaya 氏は、複数の種類のデバイスやさまざまな目的を持つアプリをサポートする単一のオーダーメイドソリューションを開発することから始めました。

この取り組みは私たちにタブレットで動作するモデレーターアプリを追加する機会をもたらし、管理者はデバイスの状態を確認しながら展示エリアを歩き回ることができました。これによって、壁の時計や、ゲーム内のインタラクションがあったときに触覚フィードバックを与えるスタンドアロンデバイスとして動作する他の Wi-Fi デバイスを追加することが容易になりました。

Unity を使うことで、さまざまなデバイスで動作するさまざまなオペレーティングシステムを切り替えたり、またそれらのシステム間で同じコードベースを使ったりすることが最小限の手間で実現できます。

View of particle people inside the Drop in the Ocean experience

空間アンカーとインバースキネマティクスを使って、プレイヤーの位置とインタラクションを決定する

モーションキャプチャシステムを使わないことにしたために、他のプレイヤーの動作や位置と同期する完全な身体を持つアバターを作ることに大きな課題が残りました。私たちのチームでは、インバースキネマティクスを使ってゲーム内のプレイヤーの身体と、現実世界の人間の位置とキャリブレーションを行う必要があるゲーム内のプレイヤーの位置のシミュレーションを行いました。

体験を開始すると、私たちの使っているデバイスは自分の進行方向(前方向のベクトル)を持つので、プレイヤーの初期位置はその座標系の中の任意の位置に置くことができます。普通のマルチプレイヤーゲームでは、他のプレイヤーはどこか遠くに、もしかしたらプレイヤーの自宅にいるので、バーチャル世界でプレイヤーを指定された位置に出現させるためにスポーンポイントが使われることがあります。この体験の場合は、バーチャル世界と現実世界(および両方の世界での人間の位置)は一致しているので、プレイヤーは現実世界で互いにぶつかることなく自由にふるまうことができます。

これを実現するために、私たちは空間アンカーを使いました。すべてのデバイスが同じ現実世界の座標系にアンカーを置き、デバイスはプレイヤーの相対位置をアンカーからサーバーに送ります。それから、サーバーはそれらの相対位置を各デバイスに共有します。そして、すべてのデバイスは各プレイヤーのバーチャル座標システム内でのアンカーに対する相対位置に基づいて、この問題を解きます。このように説明すると複雑に聞こえるでしょうが、Unity のコアライブラリはこの問題を解く上で非常に役に立ちました。

助成金を受けた後の動き

Picture of Drop in the Ocean's display at the Tribeca Film Festival

この体験を完成させて次に出てきた課題は、プロジェクトへのアクセスを広げてより多様な人たちがソーシャル VR 体験に参加する機会を作ることでした。これには継続的に技術を追求し、アクティベーションをより軽快かつより実践的なものにするためのソリューションを見つけ、同時に将来開発するコンテンツにも目を向け、私たちの整えた強固な基盤の上で開発を行い、視聴者をつなぐまったく新しい方法を見つける必要があります。

私たちのチームが受けとった Unity 助成金により、私たちは『Drop in the Ocean』を私たちの地域コミュニティを超えて体験してもらう取り組みを始めることができました。最初のコンセプトの段階から、私たちは常にプロジェクトにとって理想的な 2 種類の視聴者をターゲットにしてきました。すなわち、具体的な方法で私たちの海についての理解を深めることにメリットがある幅広い一般の視聴者と、政府や企業の重要な意思決定者の 2 種類です。

大衆にさらに広くリーチし続けるために、私たちは助成金で得た資金を使って、『Drop in the Ocean』を文化施設や人出の多い場所で上演する手段を探しています。これについて、主要な水族館や科学博物館、北米中のギャラリー、あるいは国外の施設とのパートナーシップのもと動いています。プロジェクトのロケーションベースの上演では、各上演につき 4 ~ 6 人のグループを受け入れることができます。視聴者がデバイスを外しても、彼らはこの新たに作られたつながりを『Drop in the Ocean』の外側でも保ことができ、また私たちの海を守るための活動に加わるための方法を探す機会も持つことでしょう。

前後して、2023 年を通して、環境および気候変動に対する取り組みを扱う最重要の会議やイベントへで『Drop in the Ocean』を上映する機会を模索し、同時に Conservation International の出張活動をサポートします。

Drop in the Ocean』が Marine Protected Areas を通じて、2030 年までに私たちの海の 30% を保護する目標に向けての全世界での活動を支援する上で大きな役割を果たすことを望んでいます。

Still from Drop in the Ocean

Drop in the Ocean』をアジャイルかつロケーションベースのアクティベーションとして立ち上げられたことを誇りに思っています。このプロジェクトは今、あらゆる種類の上演地をカバーできる状態になっています。しかし、私たちはこれらの上演地を訪れるのが困難な視聴者のために体験を持っていく、特に教室に体験を持ち込む方法を模索しています。

スタンドアロン型デバイスに首尾よく移植できた体験をもとに、次に私たちが目指すのは『Drop in the Ocean』で起きるつながりのいいところをすべて残したまま、オンラインで体験を提供し、北米やヨーロッパ以外の地域からでもアクセスしてもらえるようにすることです。

Drop in the Ocean』が達成しうる非常に素晴らしい成果は、地球の裏側にある学校のグループから、オンラインで一緒に体験に参加できる方法を作り上げ、さまざまな文化の学生がより健全な海に対して抱く夢をシェアするようなプラットフォームになることでしょう。

私たちは、私たちの体験の視聴者の多くが VR を初めて使う人たちだということに注意しています。ですから、適切な場合は、やり取りを制限するようなコンポーネントを取り除くことも検討します。VR で植物プランクトンを手の中にとらえるようなシンプルなことでも、視聴者に手に触れる感覚が伝わり、さらに良いことに、こうした行動が『Drop in the Ocean』の体験の一部として他の人の目に触れます。体験の中で社会的に存在しているというこの感覚は自分が包摂されているという感覚を与えるために設計されたものであり、これによってヘッドセットを外したときに、ユーザーは自分が海洋保護のムーブメントの一員であると感じることができるのです。

将来の没入型体験開発はこのコンセプトをさらに深めていく可能性もあります。私たちは私たちの物語を使って、視聴者が遺産を作りだしたように感じさせる方法を引き続き探していきます。

Unity for Humanity Summit 2022 の期間中、11 月 2 日午後 4 時(日本時間 11 月 3 日午前 5 時)から行われるプレゼンテーション「Oceans and XR: Engaging, educating, and empowering marine conservation」で、また Adam の話を聞けます。今すぐ登録して、見逃さないようにしましょう。

2022年10月21日 カテゴリ: ゲーム | 17 分 で読めます

Is this article helpful for you?

Thank you for your feedback!

関連する投稿