イベント
[GDC 2014]Oculus VRがRiftの開発キットで得た知見による「バーチャルリアリティ開発のベストプラクティス」
HMDを使い慣れていないプレイヤーを配慮し,目や脳に優しいアプリを作ることが重要だというのは容易に理解できるが,開発者自身は,「使い慣れてない状態」というのが分からなくなっているおそれがある。つまり,熱心なRiftの開発者ほど,変なアプリを作ってしまう可能性が高いということを言いたいのだろう。たとえば,ニンテンドー3DSの立体視動画の多くが視差最大でレンダリングされているのも似たような問題かもしれない。
VORは日本語で「前庭動眼反射」と訳されるらしいのだが,要するに,頭が揺れた場合などに,眼球が回転して視点がずれないように補正する人体の仕組みのことを指している。これがHMDだとどうなるだろうか。例えば,ゲーム内のスケール設定が現実世界と違う場合,つまり首をちょっと動かすだけで広い範囲を見渡せる仕様のゲームなどでは,頭の動きと要求される眼球の動きに齟齬が生じてしまう。これは数週間で慣れるとのことだが,初めてHMDを使う人にとっては,思ったように視野を補正できないという事態を引き起こすのだ。
これに対しては,「ズレの要因はたくさんあるので調整ツールを用意したほうがいい」「SDKをちゃんと使え」「視野角の切り替えやズーム機能はつけないほうがいい」といったアドバイスがなされている。
IPDというのは,一般的には両目の間隔(interpupillary distance)を意味するのだが,「目は顔の中心から左右等距離に離れていたりはしない」とのことで,IPDは右目用と左目用で別々に考慮する必要があるという。
そこで導入されたのが,仮想的な「第3の目」である。目の基準位置は顔の真ん中,目の高さの部分で取るようにすると非常に有効なのだそうだ。多くのプレイヤーはそこを「自分の視点」として認識するという。
しかし,頭自体の回転軸となる首の付け根とは偏差があるため,頭部のスケーリングを行う場合には,第3の目と首の付け根の両方に処理を行う必要があることが強調されていた。また,ゲーム全体のスケールを縮小すると,両眼視差が小さくなるためか,一部の人には優しい仕様になるとのこと。
逆に大きくした場合,「それもいいぞ」という研究があったらしいのだが,Oculusで試した結果,効果はないか,むしろ悪くなるだけだったそうで,試さないことを強く勧めていた。
次の話題はプレイヤーの身長についてだ。Oculus SDKではプレイヤーの目の高さをもとに計算して処理を行っている。しかし,ゲーム内で違う身長のキャラクターを使ったらどうなるだろうか? これについてはとくに破綻はなく,好みの問題だとしていた。
実際問題として,ゲームプレイ自体は椅子に座って行う人が多いのだが,ゲーム内で立って行動しているキャラクターと脳内で齟齬は生じないのだろうか? リアルワールドでの地面から目までの高さをもとに計算するとおかしなことになりはしないだろうかと,Forsyth氏らは研究を続けているのだが,まだ結論は出ていないとのこと。追加のレポートなども歓迎だそうだ。
続いての話題はTransition Animations,つまりカットシーンのようなものが入った場合の動作についてだ。プレイしている自分のキャラクターが,突然操作不能になって勝手に動き出したら,確かにちょっと混乱しそうだ。そもそもそんなものを入れるなという話にもなりそうだが,ストーリーを進めるためには必要になることもあるだろう。
Forsyth氏の見解は,どうしても使う場合は「少なくとも勝手にカメラを動かしてはいけない」というが大原則とのこと。一度フェードアウトしてシーンをつないだり,開始位置にいる自分をゴーストで残したままカットシーンが始まるようにするなどの工夫が必要だろうと語っていた。
さて,服装などのアバターアイテムは,通常,身体を見下ろしたときくらいしか目に入らないのでさほど重要ではないのだが,Team Fortress 2の例でも出たように,「特定のキャラクターのモーションで視界に入ってくる」というのがポイントなのだそうだ。
そこでどちらかというと,プレイヤーキャラクター自体のアニメーションをどう実装するかという話になるのだが,まず普通にアバターキャラクターのモーションを作る。そして,そこから頭を取り除く。頭部があると視点がめり込んだりして大変なので,首から上は大きさをゼロにするのだそうだ。注意点は,そのまま影を落とすと首なし男になってしまうので,自キャラの影は落とさないようにすることだという。
そうして加工されたキャラクターのモーションデータを,キャラクターの動きは無視して,頭の位置,角度が変わらないように変換して再生するとできあがり。頭の位置を固定してアニメーションを再生すると,足が浮いたりめり込んだり,いろいろおかしなことになりそうなのだが,プレイヤー視点からはそれが正解になるということのようだ。
そこで,オブジェクトの細部やエフェクトを大胆に省略することも必要になるという。Direct3D関係ではお馴染みだが,ゲームの最大の敵はDraw Callである。Riftのような両眼のHMDでは,一般的なゲームと比べても2倍のDraw Callが必要になるのだが,放っておくとどんどん増えるDraw Callをいかにしてまとめるかが重要になる。このあたりの最適化はDirect3Dでは定番なので,開発者は全力を尽くすしかないだろう。これは10年前から変わらない(DirectX 12に期待するのはアリかもしれない)。
そのほか,(Fill Rateがボトルネックになるケースは少ないとしつつ)RiftにおけるFill Rateの最適化として,Virtual Camera Renderの大きさを小さくすることがかなり有効に働くことなども説明された。
Riftの開発キット公開からそれなりに時間が経っていることもあり,どんなコンテンツを開発するかよりも,一歩先のところまで気を遣ったコンテンツ開発をしようという趣旨で行われた今回の講演だが,アプリケーションのほうも,試作段階から製品レベルのクオリティを求められる段階にきていることを示しているように思われる。開発キット2の販売も開始されており,Riftの製品化に向けた動きは今後さらに加速していきそうだ。
「Oculus VR」公式サイト
- 関連タイトル:
Rift
- この記事のURL: