前回の記事では、ARクラウドと組み合わせ、リプレイデータを使ってローカライズを行う手法を紹介しました。

今回はより現実空間に紐付いた環境でAR開発を行うために、空間をスマホでスキャンし、キャプチャできた3Dデータを使ってUnity MARS上でSimulation Environmentkを構築し、ARの開発やデバッグに活用できないか検討しました。

Unity MARSとは

〜記録したARデータで位置を復元し、テスト/デバッグに活用する〜

前回の記事では、AR開発におけるテスト/デバッグの効率化のために、ARの入力データを記録・エディタ上で再生し、テストを行うアプローチについてご紹介しました。先日、この技術を、x gardenさん(XRメディア新規事業支援クリエイターコミュニティを手掛けるXR業界のクリエイティブ共創 …

Introduction

Is everyone excited about developing AR apps?
They can recognize objects and make virtual objects appear, display information, and manipulate virtual objects with gestures. In games, you can shoot monsters that fly into the real world, or you can recognize your actions and play them in multiplayer.
By the way, how do…

前回の記事では、ARアプリのテストやデバッグは大変だという話題をとりあげました。 今回は、ARアプリ開発でCI/CDを回せるようにすることを目標に、どのようにすればARアプリのテストを省力化できるのか深堀りしていきたいと思います。 また、PoCとして開発環境やGithub Actionsを使ったCI環境でARの挙動をテストする仕組みを作りましたの …

WebXRとはウェブブラウザ上でXRを可能にするためのプロジェクトです。 XRアプリに対し以下のような機能を提供するのをゴールにしています。
・デバイスのXR機能が利用可能か検知する
・XRデバイスの機能(XRSession)を呼び出す
・XRデバイスや入力デバイスの状態(ポーズ等)をポーリングする
・適切なフレームレートでXRデバイスに画像を描画する(WebGL API利用)

これらの機能を実現していくにあたり、センサやヘッドマウントディスプレイを含めたAR/VRデバイスにアクセスするための標準的な仕様がWeb XR Device APIとして策定されています。

XR関連の標準化には、OpenGL等のグラフィックス関連の標準化団体であるKhronos Groupが2016年から推進しているOpenXRというのがありますが、W3Cが2018年にImmersive Web WGを発足してGoogle, Microsoft, Mozillaなどのメンバーが中心となって推進しているのが、JavaScript APIによるXRの標準化仕様であるWebXRとなっています。(WebXR以前にもWebVRというVR向けの仕様がありましたが、現在はARやMRにも対応すべくWebXRの中に統合されています。)

OpenXRがネイティブ(ハードウェアに直接アクセス)向けであるのに対し、WebXRはブラウザ向けに抽象化するAPIを策定しているといったイメージになります。

WebXRでは、ハードウェアを限定していませんが、以下のようなハードウェアに搭載されているブラウザで利用が可能となっています。

ARCore対応デバイス、Google DaydreamHTC ViveMagic Leap OneMicrosoft HololensOculus RiftSamsung Gear VRWindows Mixed Reality headsets
(iOSのSafariは非対応ですが、MozillaがProject WebXR Viewerというのを立ち上げているようです)

また、WebXR Device APIをサポートするOSSのライブラリとして、three.jsA-FrameAR.jsなどがあります。

WebXRのユースケース

WebXRによってウェブブラウザでXRアプリが動くようになるため、XRコンテンツの裾野を広げ、ロングテールな形での展開が期待されます。一般的に各プラットフォームごとにソフトウェアを開発するとなると開発コストが膨大になります。効率的な開発を行うにはデバイスに依存しない開発環境(APIやデバッグ環境など)が求められます。

WebXRのユースケースとして、Immersive WebのAPIの説明には以下のような例が紹介されています。
・映像配信:360°ビデオでの自由な視点移動
・構造物やデータの可視化:ショッピング、検索
・アート体験:現実空間をキャンバスにしたアート

WebXRアプリの実装

WebXRのsamplesで公開されているコードをもとに、実装を見ていきたいと思います。ここでは、最近Chrome 81でサポートが発表されたWebXR Hit Test APIを用いて、現実空間に仮想オブジェクトを配置するXRアプリの実装を見ていきたいと思います。

Hit Testが使えるようになったことで平面などを認識し、仮想オブジェクトを配置するなど、より現実空間とリンクしたXR体験が可能になります。

WebXRアプリの大まかな処理の流れは以下のようになります。
1. XRデバイスが利用できるかチェック
2. XRデバイスが利用できる場合、XRセッションを要求
3. XRセッション内でのRender loopの実行
4. Render loop処理(各XRフレームでの描画処理)
5. XRセッションの終了

  1. XRデバイスが利用できるかチェック

2. XRデバイスが利用できる場合、XRセッションを要求

3. XRセッション内でのRender loopの実行

4. Render loop処理(各XRフレームでの描画処理)

仮想オブジェクトの配置に関しては、onSessionStarted関数内で、sessionに対しselectのEventListenerをセットしておき、イベント発生時に、reticle.visibleであれば、addARObjectAt関数をコールして、オブジェクトを配置するという処理を行っています。

こんにちは、NTTの牧野です。
皆さん、ARアプリの開発盛り上がっていますか?
オブジェクトを認識してバーチャルなオブジェクトを出現させたり、
情報を表示したり、 バーチャルなオブジェクトをジェスチャーで操作したり。
ゲームなら現実空間に飛び出すモンスターをシューティングしたり、
プレーヤーのアクションを認識してマルチプレーヤーで対戦したり。

ところ …

こんにちは。NTTの牧野です。今回は2019年2月26日、Docker Tokyoコミュニティが主催するDocker Meetup Tokyo #28のレポートをお届けします。

場所は前回と同じ、NTTソフトウェアイノベーションセンタの田町オフィスを使って開催されました。

今回のイベントはいつもと雰囲気を変えて、Docker初心者も歓迎のライトニングトー …

Hiroyuki Makino

XR Metaverse Researcher, R&D Engineer at NTT, Japan. Excited for the future of AR and what amazing people create.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store