Metaから10月に発売された新型VRゴーグル「Quest 3」の最大の特徴は「MR」への対応である。筆者はこれまで、従来機「Quest 2」で日常的にVRは使っていたので(主にVRChat)、MRについては「VRの背景をリアル映像にしただけでしょ?」というくらいの認識でいて、それほど重視はしていなかった。が、それは大きな間違いだった。

  • Metaの「Quest 3」

    Metaの「Quest 3」。筆者は128GBモデルを購入した

VRの楽しさは「やってみないと分からない」とよく言われる。PC上の平面的な画像や動画だけでは、どうやっても人体の感覚で得る3D体験は伝えきれないのだ。それと同じく、MRの楽しさもまた、やってみて初めて分かることが多かった。

Quest 3を入手してからのこの2カ月で、筆者はいろいろMRアプリを開発して、楽しんでみた。開発方法について詳しく説明しようとするとかなりの長編連載になってしまうため、本記事では簡単な概要のみ、紹介することにしたい。「面白そうだ」と思ったら、具体的なやり方は各自で調べてもらえれば幸いだ。

  • MRならば6畳間からロケットを打ち上げることも可能だ

    MRならば6畳間からロケットを打ち上げることも可能だ

VRとARとMRは何が違う?

Quest 3の性能については、すでにいろんなレビューで紹介されているので省略するが、ざっと概要だけ確認しておこう。従来機からの特に大きな変更点は、カラーカメラと深度センサーを搭載したこと。この2つの搭載により、従来は数十万円する業務用機が必要だった本格的なMR体験が、コンシューマ機で可能になったのだ。

  • カラーカメラは両目のところに設置

    カラーカメラは両目のところに設置。深度センサーは中央にある

これについて触れる前に、まずは用語について補足しておこう。VR、AR、MRなどは、まとめてXRとも呼ばれる。これらの技術は、何が違うのか。人によって解釈が違うところもあるだろうが、筆者は以下のように考えている。

VR(仮想現実)は分かりやすいだろう。これはすべてがCGで描かれており、バーチャル内ですべてが完結している。AR(拡張現実)は、リアル映像をベースに、CGを加えたものだ。そういう点ではMR(複合現実)も近いのだが、MRの大きな違いは、壁やテーブルの位置など、現実世界の3D情報も活用するということである。

  • これは筆者が作ったVRChatのワールド

    これは筆者が作ったVRChatのワールド。先日、バトル大会「ニソコンVR」が開催された

たとえば、CGのボールを投げたら、現実世界の壁面で跳ね返る(ように見える)。これだけでも、CGのボールの存在感がグンと上がる。また、CGのボールがテーブルの向こう側に落ちたら、テーブルに隠れて見えなくなる。現実世界では当たり前のこういった処理をすることで、CGの存在がより自然に感じられるようになる。

こういった3D情報の取得に威力を発揮するのが深度センサーである。事前に室内を3Dスキャンする手間が必要なものの、Quest 3を装着して室内を見渡すだけなので、面倒ではない。壁、床、天井の面の位置も、自動で取得してくれる。

マイナビの会議室を借りて、その室内を3Dスキャンした様子。ガラス張りの廊下側だけ壁と認識されなかったので、そこだけ手動で追加している

実は、従来のQuest 2でも、簡易的なMRは可能だったのだが、Quest 2の外部カメラはモノクロで解像度も粗かった。Quest 3はフルカラーに進化し、しかも解像度が大幅に向上。本格的なMR機として、十分実用レベルとなったのだ。

MRアプリ開発には何が必要?

Quest 3のMRアプリ開発には、ゲームエンジンとして「Unity」または「Unreal Engine」が正式に対応している。これは慣れている方を選べば良いと思うが、筆者はずっとUnityを使っていたので、今回もUnityで開発した。バージョンはとりあえず、2022以上を選んでおけば問題無いだろう。

  • 「Unity」の開発画面

    「Unity」の開発画面。個人利用なら無料でダウンロードして使える

最初に1つ補足しておきたいのは、プログラミングの知識が無くても、MRアプリの開発は可能だということだ。もちろん、プログラミングができた方がやれることは増えるし、プログラムを書いた方が早い場合も多いのだが、Unityの機能は豊富なので、プログラム無しでもかなりのものは作れる。もし知らなくても諦める必要は無い。

また3Dモデルを作るスキルはあった方が良いが、これも無ければ無いなりになんとかなる。Unityのアセットストアには、様々なエフェクトや3Dモデルなどがあり、これらをうまく活用するだけでも結構いろんなものが作れる。全てを自分一人で作るのは大変なので、有り物を活用するのは時間の節約にもなる。

  • たとえば後述の「花畑を出す魔法MR」では、5.5ドルの花のアセットを使った

    たとえば後述の「花畑を出す魔法MR」では、5.5ドルの花のアセットを使った

  • このイプシロンSロケットは、フリーソフト「Blender」で自分で作りました

    このイプシロンSロケットは、フリーソフト「Blender」で自分で作りました

Unity用のSDKとしては、今回、「Oculus Integration」を使った。現在は新しいSDKとして「Meta XR SDK」が提供されており、Oculus Integrationは非推奨となっているのだが、両方試してみたところ、Oculus Integrationの方がサンプルが充実しており、初めて開発するときの参考にはしやすかった。

  • Oculus Integrationで慣れてからMeta XR SDKに移行するのもアリだろう

    Oculus Integrationで慣れてからMeta XR SDKに移行するのもアリだろう

やはり、文章で作り方を説明されるより、実際のサンプルプロジェクトを見て、どう実装されているのか直接確認した方が手っ取り早い。Meta XR SDKは新しいため、まだWEB上の情報も少ない。業務で使うならともかく、個人レベルで楽しむ分には、提供され続けている限り、Oculus Integrationを使うのもアリだろう。

  • ARアプリのサンプル

    ARアプリのサンプル。これをビルドするだけでARアプリの基本機能が試せる

Unityでビルドすると、拡張子がapkのファイルが出力される。それをQuest 3にインストールする方法はいくつかあるが、筆者は「Meta Quest Developer Hub」という公式アプリを使っている。ドラッグ&ドロップで簡単にインストールできるほか、Quest 3のスクリーンショットを取得する機能もあったりして便利だ。

  • 「Meta Quest Developer Hub」の画面

    「Meta Quest Developer Hub」の画面。アカウントの登録が別途必要だ

実際にアプリを開発してみた

では、実際にQuest 3でどんなMRアプリが作れるのか。筆者が開発したものを簡単に紹介しよう。

最初に作ったアプリは「はやぶさ2#MR」だ。これは、公開されている小惑星探査機「はやぶさ2」の軌道情報を読み込み、探査機や各天体の動きを再現したものである。ベースとなったプログラムはすでにVRChat用に作ってあったので、基本的にはそれを単独のMRアプリとして移植することを目指した。

「はやぶさ2#MR」の実行画面。本当の速度だと移動が全く分からないので、100万倍速くらいがちょうど良い。速度やスケールは調整できるようにした

VRもMRも基本的な作り方は、それほど変わらない。3Dスキャンした現実の壁やテーブルなどの面は、UnityからはCGのオブジェクトと同じように扱われるため、たとえばCGのボールをテーブルの上に落としたとき、下に突き抜けずにテーブル上で止まるようにすることなどは、簡単にできる。

ただ、MRらしさを出すためには、いくつか特有の機能がある。筆者がまず実装しようとしたのは、以下の機能だ。

  1. 現実世界の映像を表示するパススルー機能
  2. 現実とCGの前後関係を正しく表示する機能
  3. 現実の壁・天井・床を操作する機能
  4. コントローラではなく手で操作する機能

最も基本となるのは(1)のパススルー機能で、これはすぐに実現できた。やや苦労したのが(2)の実装なのだが、この機能のおかげで、たとえば探査機や天体が壁の向こうに行ったときはちゃんと隠されていて、違和感が無い。

このアプリでは、パススルーをオフにする機能も実装した。この表示モードにすると、部屋の3D情報がどのように取り込まれているのか分かりやすい

(4)はQuest 3のハンドトラッキング機能で実現できる。これはMR特有というわけではないのだが、MRは現実の映像が見えているので、現実と同じように手でUIのボタンを押せるようにした方が違和感が無い。この機能も、Oculus Integrationの中にサンプルがあったので、それを改良して使っている。

次に作ったのは、「花畑を出す魔法MR」というアプリだ。これは、『葬送のフリーレン』という作品の中で、エルフの魔法使い・フリーレンが一番好きという魔法を再現したもの。筆者はこの作品が好きすぎてつい作ってしまったのだが、実際に試せるのはMRならでは。周囲を花で囲まれるのは、なかなか楽しかった。

「花畑を出す魔法MR」の実行画面。魔法の杖を振ると、その先の床やテーブル天板に花が出現する。ちゃんと“宝箱”も用意しました

  • 編集部の若手・T氏に体験してもらったところ、気に入ってもらったようで良かった

    編集部の若手・T氏に体験してもらったところ、気に入ってもらったようで良かったのだが、取り憑かれたようにひたすら花を出していた(下のPCの画面が彼の視点)。お疲れなのね……

上記(3)の機能は、「イプシロンS打ち上げMR」で実装した。これは、部屋の中でロケットを打ち上げたくて作ったアプリなのだが、どう考えてもロケットは室内に収まらない。そのため、秘密基地のように床と天井をスライドさせ、地下からロケットをリフトアップし、打ち上げるギミックを実現した。こういう演出もMRとしては定番だ。

「イプシロンS打ち上げMR」の実行画面。室内にロケットを置くというのがそもそも無茶なのだが、MRならなんでも可能だ

「月面MR」は、タカラトミーの「SORA-Q」製品レビューを書くために開発したもの。このアプリでは天井と床ではなく、壁を動かしているが、技術的には同様だ。月面の風景の代わりに、海底にして魚を泳がせれば、水族館のような感じにもできるだろう。自宅でリラックスするのに良さそうだ(というか現在これを開発中)。

「月面MR」の実行画面。周囲の壁を下げるだけなのでギミックとしてはシンプルだが、月面でSORA-Qを動かしている気分になる

最後は「栗饅頭MR」。ご存じ『ドラえもん』で、ふりかけたモノの数を5分ごとに2倍に増やせるという道具「バイバイン」の話があるのだが、増やしすぎて食べきれなかった栗饅頭を宇宙に投棄処分するというラストシーンに、当時子供だった筆者は恐怖を覚えた。その恐怖感を実感するために作ったのだが、部屋の中が栗饅頭で埋まっていって圧迫されるのはマジで怖い。

「栗饅頭MR」の実行画面。栗饅頭のサイズや倍速周期を調整できるようにしたのだが、1,000個を越えるとフレームレートがガタ落ちになる

これらのアプリは、筆者のWEBサイトで公開しているので、Quest 3を持っているようなら、インストールして試すことが可能だ。

注:これらのアプリをインストールし、使用したことによる結果については、筆者および編集部は一切の責任を持てないため、あくまで自己責任であることを了解した上でお試しください。

Quest 3は「買い」か?

各誌で掲載されているQuest 3のレビュー記事を見ると、MR機能を高く評価しつつも、MRアプリの少なさを欠点として指摘している人が多かった印象なのだが、筆者の場合、自分で開発するのが何より好きな人間なので、これは全く問題にならない。「無ければ作る」というのが、X68000以来の伝統である。

筆者はQuest 3を仕事でも活用している。北海道取材ではこんな動画も撮影した

しかし、人に勧めにくいのは、その価格である。本格的なMR機種として安くなったとは言え、7万4800円からというのは、普通に考えて財布に優しくない。個人的には、それでもぜひMRを体験して欲しいと思っているのだが、もしVRだけで良いと割り切るようなら、Quest 2を選択するのも十分アリだろう。

Quest 3は画質も向上しているものの、そこまで劇的に見え方が変わるわけではない。Quest 2はセール時には4万円を切る場合もあり(公式サイトでの原稿執筆時の価格は3万9600円)、2倍近い価格差は大きい。新旧モデルのどちらを買えば良いのか、しばらくは悩ましい状況が続きそうだ。

  • Quest 3とQuest 2の比較

    Quest 3(左)とQuest 2(右)の比較。Quest 3の方が本体は薄い

ただ、やはりMRは楽しい。VRは仮想空間がベースであるのに対し、MRは現実世界がベースであり、体験としてはまったくの別物だった。現実では難しいようなことでも、現実の枠内でできる。それが筆者が感じたMRの面白さである。自分で作ったMRアプリを楽しむためのデバイスとしてなら、7万4800円は絶対に「買い」だ。