【ACADEMY】バーチャルな物体を現実世界に説得力を持って配置する方法
拡張現実(AR)は,デベロッパにとって,ビデオゲームを初めて現実の世界に持ち込むという素晴らしい機会をもたらした。しかし,ほかの新たなチャンスと同様に,ARのためのゲーム制作には,これまでにほとんどのクリエイターが直面したことのない,まったく新しい課題が待っている。
プレイヤーの周囲360度に存在する体験をどのようにして作るのか? 室内の障害物をどのように考慮するのか? 現実世界の照明や色を反映させるにはどうすればいいのか?
ARゲームがこれまでのゲームと異なるのは,現実世界と仮想世界の両方を融合させて,意味のある没入感を作り出す必要があることだ。
Resolution GamesでAR(拡張現実)およびMixed Reality(複合現実)のテクニカルディレクターを務める私は,このフォーマットが登場して以来,この問題に豊富な経験を積んできた。そして,幸運なことに,これまでに注目されたすべてのARデバイスの開発に携わってきた。私が学んだのは,ARへの没入感はいくつかの重要なポイントに集約されるということだ。
影
アーティストなら誰でも,影が信憑性のある世界を作るために重要であることを知っている。しかし,デジタルオブジェクトを物理的な空間に置くときには,どのように影について考える必要があるのだろうか? アンビエントオクルージョンは,そのパズルの大きなピースだ。クリエイターは,地面に置かれたオブジェクトの下に小さな塊の影を置くことができる。これにより,影はオブジェクトにくっついているだけでなく,影が落とされている表面にはっきりとつながっているように見える。
アンビエントオクルージョンは,静的なオブジェクトにも動的なオブジェクトにも有効だが,アプローチはそれぞれ少しずつ異なる。
アンビエントオクルージョンは通常,ライトをベイクするなどの方法で自動的に実現するが,スタティックオブジェクトにこの効果を使うためには,プロップの周りにジオメトリを作る。そのジオメトリがアンビエントオクルージョンになる。つまり,静止したプロップの周りには,「アンビエントオクルージョンスカート」と呼ばれるものが付いている。こうすることで,アンビエントオクルージョンを調整して,あらゆる状況で思いどおりの見え方にできるわけだ。
動的なオブジェクトの場合,我々は直交カメラを使ってレベルブロックを下から上に向かって描くことで,アンビエントオクルージョンを実現した。これにより,黒が影を示すデプスバッファが作成される。黒が濃ければ濃いほど,そのブロックが地面に近いことを意味する。
たとえば,32×32ピクセルのテクスチャに影を描き,それを128×128の白黒のテクスチャに変換して,シンプルなブラーをかけた。これで,きれいでソフトなアンビエントオクルージョンシャドウができた。次に,128×128のテクスチャを接地面の透明な四角形に描いた。
自然の光を利用する
ゲームデベロッパなら誰でも知っている照明の話だが,現実世界の照明の実態や,変化する条件に合わせてアプローチを調整する方法については,あまり知られていない。
ARプロジェクトの照明を作成する際には,部屋の中でリアルタイムに起こっていることに基づいて,バーチャルオブジェクトの光の強さを調整する必要がある。明るい部屋でプレイしている人と,暗い部屋でプレイしている人では,ゲームの見え方が違うはずだ。また,照明に限らず,さまざまな要素を考慮する必要がある。
Angry Birds AR: Isle of Pigsでは,指向性ライトとアンビエントライトの2つのライトを使用した。ARKitでは,光の推定値が0〜1の間で示されるが,シーン内のライトに与える前に,我々はこの推定値を少し調整して,正確な光の強さを得るようにした。また,デバイスからの光の温度推定値に基づいて,環境光と指向性光の両方の色を調整している。
このほかにも,ARKitで生成された環境テクスチャをスカイボックスとして利用し,シーンの照明に影響を与えるという照明トリックもある。これにより,オブジェクトが不自然な色で目立ってしまうことなく,環境が反映されたような色を表現できる。
注意点は,環境が非常に明るかったり暗かったりすることがあるので,これを実装するのはかなり難しいということだ。このテクニックは非常に効果的だが,同時に課題も抱えている。
部屋の中に色を加える
ゲームの表現には色が欠かせないが,オブジェクトの色と現実世界の色がどのように混ざり合っているかは,見落としがちだ。
シーンに合わせて現実世界の色合いを映像で変化させることで,我々は違和感を感じさせない色へのアプローチを実現した。これはゲーム開発というよりは,写真共有アプリのようなシンプルなソリューションだが,カラーフィルタが没入感の向上に大きく貢献することは間違いない。
上のAngry Birds AR: Isle of Pigsの例では,ビデオフィードは,YCbCr色空間の2つのテクスチャとしてゲームに提供される。YCbCrからRGBに変換するシェーダがあるが,今回はこのシェーダを修正してこの効果を実現した。
この変換では,YCbCrの色をVector4として受け取り,それに4×4の行列を掛け合わせて,その結果のベクトルがRGBの色になる。
現実世界を拡張する
色でトーンを設定するのもいいのだが,シーンに存在する現実世界のオブジェクトを管理するのはどうだろうか? 同じビデオフィードを使って,屈折シェーダを使ってオブジェクトを修正できる。
まず,背景としてビデオフィードをレンダリングする。次に不透明なオブジェクトをすべてレンダリングし,レンダリングバッファを取得してテクスチャとして使用する。そのレンダリングバッファのテクスチャを,屈折シェーダの入力として使用する。
上の動画で,一番上のアイスブロックが観葉植物の前を通過するときの様子を見てみよう。観葉植物も屈折している。ARは,仮想の物体を現実の環境に置くだけではなく,我々を取り巻く現実の世界にも手を加えることができる。それができれば,あなたのARプロジェクトの信憑性が高まる。
パーティクルによる空間認識
ARへの没入感を高めるには,プレイヤーにカメラの外に探索すべきものがあるように感じさせることが重要だ。パーティクルを使えば,この感覚を非常に効果的に実現できる。たとえば,部屋に降る雪や,夜空に降る星屑などを考えてみてほしい。
このような要素は,プレイヤーに非常に即効性のある効果をもたらし,プレイヤーはもっと見たいと思って動き回りたくなる。あたかもそれらを捕まえることができるかのように。
現実世界には障害物あることを忘れてはならない(それは良いことだ)
せっかくのAR体験が,現実世界と同じように動作しないオブジェクトのせいで台なしになってしまうことがある。家具が下のシーンを遮るようにデバイスを動かした場合,本当は下のシーンを遮る必要がある。それは「オクルージョン」という言葉に集約される。
オクルーダーサーフェスとは,バーチャルなオブジェクトをリアルなオブジェクトの背後や下に隠す方法だ。いつもそうしたいわけではないかもしれないが(たとえば,ゲームをテーブルの下に隠してプレイするのではなく,テーブルの上でプレイしてもらいたい場合など),ユーザーのデバイスが現実世界の表面をスキャンして奥行きを検出できれば,その奥行きをバッファとして使用し,現実世界のあらゆるものをマスクできる。
これはARゲームの黎明期にはできなかったことだが,このような機能を備えたデバイスが次第に増えてきているので,機会があれば活用してみてほしい。
また,AR(拡張現実)の技術は常に進化している。携帯電話と連動したメガネが登場し,QualcommやNiantic(関連英文記事)が新しい開発キットを提供しているため,今後は,部屋の中に飛び込んでくるような没入感のある体験を構築するための新しい方法がたくさん出てくるだろう。
しかし,テクノロジーがどこまで進化するかにかかわらず,上記のヒントは,プレイヤーが楽しみ,体験し,完全に没頭できるARゲームを作るための素晴らしい基礎となるはずだ。
Magnus Runesson氏は,Resolution GamesのAR(拡張現実)およびMixed Reality(複合現実)担当テクニカルディレクターだ。同社は最近,ARプロジェクトに特化した専門部署の設立を発表した。
GamesIndustry.biz ACADEMY関連翻訳記事一覧
※本記事はGamesIndustry.bizとのライセンス契約のもとで翻訳されています(元記事はこちら)