イベント
キヤノンITソリューションズからUnity向け複合現実(MR)システムが登場。Unityを採用したゲームのMR化がより簡単に
「Unite Japan」公式サイト
複合現実(MR)と拡張現実(AR)
バーチャルリアリティ(VR=Virtual Reality)という用語が一般に使われるようになって久しいが,VRに似た拡張現実(AR=Augmented Reality)という言葉も,ニンテンドー3DSやPlaystation Vita向けに対応ゲームがリリースされたことから認知度が高くなりつつある。ARはVR技術を応用したもので,現実世界にVRベースのリアルタイムCGを加えたものだ。
しかし,今回の講演のテーマである複合現実(Mixed Reality)は,まだ研究者の間で使われている程度の用語で,一般の理解度はそれほど高くない。
登壇したキヤノンITソリューションズ MR事業部MR技術部の向井利光氏はまず,「個人的な認識を交えているが,あえて区別するとすれば」と前置きをして,MRの定義についての解説を行った。
向井氏によれば,ARは現実世界にリアルタイムCGを加えて現実世界を拡張,強化するものだが,MRはリアルタイムCGの存在感をより強化するためのものだという。実際,研究者の間でもARとMRの明解な区別はなされていないようだが,簡単に言って,現実世界の比重が大きいのがAR,仮想世界の比重が大きいのがMRといった感じだろうか。
キヤノンITソリューションズが開発したHMD「HM-A1」
キヤノンITソリューションズは,このMRの取り扱うためのMRプラットフォーム「MREAL」を開発中だ。MREALは以下の3つの要素から構成されており,同社は各要素に対して精力的な開発作業を進めているという。
まず専用ハードウェアだが,これは,AR/MRに適した小型軽量のHMD(ヘッドマウントディスプレイ)となる。
HM-A1と名付けられた最新型HMDの特徴は,現実世界を撮影するための2基のカメラがセットされていることだ。MRに対応した一般的なHMDの場合,頭部にカメラが仕込まれるが,これでは使用者の視界との不一致が起こり,違和感を覚えるという。HM-A1では,専用光学設計のプリズムを活用し,使用者が見るディスプレイパネルの視界とカメラの撮影画角と光軸を一致させているのだ。
HMD制御ソフトウェアとこれを活用するためのSDK
2つめの要素は,「MREAL」を制御するソフトウェアで,同社はこれらのソフトウェアを総称して「MRプラットフォーム」,略してMRPと呼んでいる。
さて,MRを実現するためには,使用者の頭部の位置と向きをリアルタイムで把握する必要があり,これを実現するためのヘッドトラッキングシステムが必要になるが,それには大きく分けて以下の3つの方法がある。
まず,メジャーなものが磁気センサーだ。スライドにもあるように,磁気トランスミッタから照射された磁場を,使用者のHMDに装着した磁気レシーバーで感知することで,トランスミッタとの相対距離および,前後左右のXYZ軸方向と回転方向軸の6軸のセンシングを行う仕組みだ。
続く光学式トラッキングシステムは,実用化された方法の中では最も精度が高いとされている。原理は,ゲームでも使われている光学式モーションキャプチャーとほぼ同じで,HMDに付けられた複数の光学式マーカーを赤外線カメラで撮影し,マーカーの見え方から位置座標と6軸の傾きを検出するものだ。
そして最後は,幾何学マーカーを用いたトラッキングシステムだ。MREALでは,回転しても同じパターンとして認識されるユニークなマーカーを用いたシステムを採用している。
MREALは,複数のマーカーを現実空間内のオブジェクトに貼り付けていくことで,現実空間のジオメトリ構造を正確にシステムに登録できることが特徴になっている。多面体構造のオブジェクトに対しては,その各面にマーカーを貼ることで,立体物の各面の向きや位置を正確に登録できるという。
主に以上のようなHMDトラッキングシステムが存在するわけだが,これらを統一的に取り扱えるようにするのがMRPとなる。MRPによってアプリケーションを開発すれば,開発者はヘッドトラッキングシステムが磁気方式であるのか光学方式であるのかといったことを意識する必要がないというわけだ。
そして3つ目の要素が,このMRPを開発者が「C++ライブラリ」として使用できるソフトウェア開発キット,MRP SDKとなる。
このMRP,MRP SDKの機能のうち,分かりやすいものが紹介された。AR/MRはカメラで撮影した現実の映像にリアルタイムCGを乗せていくため,現実世界の使用者の手を,リアルタイムCGの手前に出すことは難しい。
そこでMRPでは,肌色領域をキーカラーとして設定し,それがカメラで撮影した映像に含まれているときは,それをマスクとする機能を用意した。このマスクでリアルタイムCGを抜けば,抜かれた部分に肌色の手だけが描かれるようになり,あたかも「手が手前,CGが奥」というような表現を実現できる。
上記のように,HM-A1では(光学的に)左右の眼の位置に2基のカメラが配置されるため,現実世界の映像は左右の視界に対応した2枚のフレームが得られる。この2枚の映像に対して2枚のマスクを取得し,マッチングを行えば,視差から距離を逆算でき,立体的なマスクパターンが得られる。
この立体的なマスクパターンを使ってリアルタイムCGを抜けば「CGオブジェクトに,手を潜り込ませる」などといった,非常に正確な前後関係の表現が行えるのだ。
「MREAL on Unity」を実演。既存アプリを5分でMR化
このMRP SDKのUnity版が,「MR Plug-in for Unity」であり,Unity Package(Unity標準形式のアーカイブ)で提供されるという。ちなみにUnityは,C#によるプログラミングが可能になっていることが売りの一つなのだが,現在のところ「MR Plug-in for Unity」はC++ライブラリで,C++からの利用に限定されている。
講演の最後には,Unityで,「MR Plug-in for Unity」をインストールしての実演が行われた。今回の講演では都合によりHMDを持ってくることができなかったため,その代わりに市販のWebカメラが使用された。
基本的なMR表現である「マーカー上にCGを出現させる」というだけであれば,MREALなら5分もかからないと向井氏は言う。実際,向井氏が壇上で行ったのは,Unityでワールド座標系の原点に直方体を置き,視点(カメラ)を適当に設定するという作業だけだった。
向井氏は,さらに,「MR Plug-in for Unity」のプロパティ設定で,別の直方体を適当なターゲットマーカーに割り当てるという実演を披露した。
先ほどの直方体はワールド座標系の原点に置かれた,いわば静的に配置されたオブジェクトだったが,こちらは実質的な動的オブジェクトに相当する。向井氏がターゲットマーカーを動かすと,その上に置かれた直方体も,マーカーの動きに追従した。
単純なデモだったが,これは,既存のゲームアプリを最低限の改変でMR対応にできることを実演したことになる。もちろん,前述の立体的マスクパターンへの対応も「MR Plug-in for Unity」から利用可能だ。
また,現実世界に静的に配置されたオブジェクトに対し,透明のマスクを設定することもできる。例えば,現実に段ボール箱があったとして,その段ボール箱と同形のマスクオブジェクトを設定しておけば,走り回るCGキャラクターが段ボール箱の背後に隠れるといった表現も可能になるわけだ。
キヤノンITソリューションズが手がけるMRアプリケーションは,企業向けに提供されており,最も導入実績があるのは自動車メーカーだという。ある自動車メーカーでは,車体や車内レイアウトの検討のために活用されており,また,運転席に着座した状態で,内装がユーザーにとって使いやすいかどうかの評価に使われている事例もあるという。
最近では,ゲーム関連,アミューズメント施設関連からの問い合わせも増えてきているそうで,近い将来,ゲームセンターやテーマパークなどで,「MR Plug-in for Unity」によって実現したゲームに遭遇するかも知れない。
「Unite Japan」公式サイト
- 関連タイトル:
Unity
- この記事のURL: