LoginSignup
17
6

複合現実を使って部屋をコムウェアカラーで一杯にする!

Last updated at Posted at 2023-11-30

この記事はNTTコムウェア Advent Calendar 2023 1日目の記事です。

はじめに

NTTコムウェアの掛内です。

今年は翔泳社様から動かして学ぶ!Flutter開発入門を出版させて頂いたり、生成系AIで画像や文章を作っていたりしたので、これらのネタにしようかとも思ったのですが、約2ヶ月前にMetaQuest3が発売され、新しいおもちゃを手に入れてしまったので、MetaQuest3もUnityも使ったことが無いのですが、MR(複合現実)についての記事を書いてみたいと思います。

デモ

まず、最初に今回作成したもののデモをお見せしたいと思います。
※Qiitaに直接動画を埋め込めないため、Xへのリンクとなっております。

複合現実を使って、自分の部屋に球や立方体をたくさん発射して一杯にしてみました!

今回は、これを何もない状態から作っていきたいと思います!!

基本用語

まず、基本的な用語を確認します。

MR

MRはMixed Realityの略で、複合現実と呼ばれます。
MRは、現実空間上に仮想空間のオブジェクトなどを配置する技術で、現実と仮想の両方が複合されて可視化されます。
実現には、MRに対応したヘッドセットを用います。ヘッドセットが現実世界の空間の形状を認識し、ホログラムを合成して投影することで実現します。

似たような技術にVRとARがありますが、MRはVRとARを組み合わせた中間のような位置づけです。

  • VR(Virtual Reality) : 仮想現実
    • 現実世界の情報は利用せずに、仮想空間を作りその中で情報を可視化します。
  • AR(Augmented Reality):拡張現実
    • 現実世界をベースに、情報の付与を行います。

MetaQuest

MetaQuestは、Meta社が開発したVRヘッドセットです。
MetaQuestには、MetaQuest2、MetaQuest3、MetaQuestProという種類があり、公式サイト で比較情報が提供されています。

MetaQuest3は2023/10/10に発売され、MetaQuest2と比べてMR機能が大幅に強化されています(もちろんVRも使えます)。
MetaQuestには、パススルー(周囲の環境をリアルタイムに見ることができる機能)があり、これを使い現実世界の情報をヘッドセットに投影し、なおかつホログラムを合成することで、MRが実現できます。

Unity

Unityは、UnityTechnologiesが開発しているゲームエンジンです。2D/3DのゲームをC#を用いて開発することができます。
PC/モバイル/VR・MRデバイスなどのクロスプラットフォームに対応しており、MetaQuestにUnityで開発したアプリケーションをインストールすることで、MRアプリを作ることもできます。
なお、類似製品には、Unreal Engineがあります。

アプリの作成

概要

今回は自身初めてのMRということで、初歩的なところで、MetaQuest3を使って何かオブジェクトを部屋に置けるところを目指しました。具体的には、コムウェアカラーの球と立方体にカウンタを付けて発射し、自分の部屋を何個で一杯にできるかやってみました。
※完成したものは、記事冒頭のXの動画になります。

記事執筆のタイミングにおいて、製品そのものが発売されたばかり、かつ、インターネット上にノウハウが少ない先進的なものを取り扱っているため、最新の正確な情報は、公式サイト等でご確認ください。

1.MetaQuest3を動かす

まず、公式サイトでMetaQuest3を購入します。
※私の場合は、10/20に注文し商品到着予定日が10/31になっていたのですが、10/25に予定より早く届きました。

開封後に、ヘッドセットの初期設定と公式アプリ(Meta Quest)のインストールを行います。購入した箱に、QRコードが付いており「Scanして開始」とありますので、読み込んで表示される手順に従ってセットアップします。

2.開発環境を準備する

まず、UnityHubをダウンロードしインストールします。
その後、UnityHubのサイドメニューのインストールを選択し、「エディタをインストール」をクリックして、Unityをインストールします。

なお、開発時の環境のバージョンは、下記のとおりです。

  • UnityHub:3.6.0
  • Unity:2022.3.12f1

続いて、スマホアプリの方でヘッドセットの設定から開発者モードを選択し、有効にします。

さらに、MetaQuestの開発者になるために、組織を作成しアカウントと紐づけます。こちらのURLから作成ができます。

なお、Meta Quest Developer Hubを利用すると、ヘッドセットの状況が詳しく確認できるため、インストールしておくと良いかと思います。

3. MetaQuest3とPCをつなぐ

MetaQuest3とPCを繋ぐ方法は、有線(QuestLink)と無線(AirLink)の両方があります。
デスクトップアプリ(Windows)をインストールし、ペアリング画面まで進めたあとに、MetaQuest3側でクイック設定からQuestLink(またはAirLink)を有効にします。

自分の環境ではQuestLinkもAirLinkもどちらも認識がされず、困った状態になりました。

QuestLinkの方では、かろうじてPC側でドライブとしては認識できていたので、接続自体はできていたようでした。
そのため、SideQuest というツールを使って接続とアプリの転送を行いました。
※今回は、本流からそれるためSideQuestについては掘り下げません。

4. Unityでアプリを作る

今回は、ゼロから作るにはあまりに時間がかかりそうだったため、こちらのテンプレートを利用させて頂きました。
Githubからクローンした後に、README.mdに従って、Unityで該当プロジェクトの設定や必要なライブラリのインポートを行います。

元々のプログラムでは、カラフルな無地の球と立方体が飛び出るようになっていますが、下記の修正を入れます。

  1. 色を指定する
    • Assets/App/ObjectLauncher/ObjectLaunchers.csで球と立方体の色をコムウェアのロゴに使われている、白と緑のカラーコードに固定します。
    • UnityのColorは、0-255ではなく、0-1でRGBを指定するのに気がつくまで、意図した色がでず一瞬躓きました。
  2. カウンタの文字を入れる
    • TMP(TextMeshPro)を使ってballとCubeに、カウンタの文字を貼ります。
    • 緑のオブジェクトには白、白のオブジェクトには緑のカラーコードを指定します。
    • 球のカウンタは、きれいに文字を貼るためには曲げたほうが良いのですが、やってみたらそこまで違和感はなかったので、今回は妥協しました。
    • ObjectLaunchers.csの中でカウンタを持ち、発射のタイミングでカウンタをインクリメントしてTMPの文字を更新して表示します。
  3. サイズを変更する
    • 小さいとなかなか部屋がいっぱいにならないので、Assets/App/ObjectLauncherのballとCubeのサイズをデフォルトより大きくしました。

5. 動作確認をする

作ったアプリを、Androidアプリ(APKファイル)としてビルドします。
その後、(今回は直接転送ができなかったので)SideQuestを使って、apkファイルをPCからMetaQuest3に転送します。
MetaQuest3側では、アプリライブラリから、提供元不明アプリの該当のアプリを選択すると起動できます。

所感

  • MetaQuestやUnityを全く使ったことがなくても、1週間もあればこういうのができることに感動しました
  • オブジェクト間や部屋(境界線)との物理演算も思った以上にいい感じ
  • 途中QuestLink/AirLinkが使えない部分があるなど、うまく行かない時のトラブルシュートの情報がまだまだ少ないので、困ったときの解決に時間がかかりそう
  • VR/MRに慣れていないのか、終わったあとに眼精疲労っぽい症状がたまにでました。
    • 単に遊びすぎかもでしれません(笑)

記載されている会社名、製品名、サービス名は、各社の商標または登録商標です。

17
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
6