スマホで2次元と出会える 夢のGoogle Tangoを触ってみた

※本稿は個人開発者である青木そらす氏の寄稿になります。

皆さんこんにちは、青木そらす(@open_sorasu)です。エンジニアとして働きつつ、VRで金魚を見ることのできる『VR Aquarium -雅-』(HTC Vive)を開発し、現在配信しています。

今年のゴールデンウィーク、皆さんは如何お過ごしだったでしょうか?
私は、Tango搭載端末であるLenovoのPhab2Proを手にする機会があり、ゴールデンウィークの期間にちょっとしたアプリ開発をしていました。

触ってみると、Unityに慣れている人であればすんなりと分かるような構成になっていました。どんな感じだったか、Tangoを使って何ができるのかを皆様にお伝えできればいいなと思っています。

そもそもTangoって何?まずはアプリを遊んでみよう!


Tangoとは、グーグルが提供しているARプラットフォームです。搭載端末では空間を認識することができます。

Tango搭載端末には予めTangoアプリのマネージャーが入っており、幾つかのアプリを遊んでみました。

Dinosaurs Among Us

現実世界に恐竜を呼び出すことができるARアプリです。

Tangoを搭載していない端末では、平面を検出するためにマーカーを用意したり、地面を撮影してマーカーを作成する必要がありました。
しかし、GoogleTangoでは地面が検出できます。ARマーカーや、動的にマーカーを作成する必要がなく、認識した地面に合わせて恐竜を立たせることができます。また、モーショントラッキング機能も入っているので、カメラを動かしても恐竜が一緒に動くことはありません。 別の方向に向けて、再度同じ方向に向き直すと、同じ位置に恐竜が居ます。

https://www.youtube.com/watch?v=_w1V0VyVsPM

Domino World

地形を認識してドミノを並べることができるARドミノ倒しアプリです。
これも地面を認識しているので、高低差を考慮してドミノを並べることができます。

https://www.youtube.com/watch?v=GV8NuGcOu1w

このように、Tangoの機能を使えば空間測位と自己測位を行うことができます。

実際に開発!

では、実際に開発をする場合は、どんなことができるのでしょうか。
TangoのSDKはUnityパッケージが用意されており、これを入れるだけで簡単に作ることができます。また、基本的なサンプル用のExamplesも入っており、上記のアプリのモックアップであれば、簡単に作ることができます。

今回は、空間測位と自己測位を分かりやすく表現するARキャラクター召喚にチャレンジしてみました。

使用したのは、AugmentedRealityとExperimentalMeshBuilderWithPhysicsのサンプルです。

キャラクターを立たせるだけならAugmentedRealityのサンプルだけでも十分です。

AugmentedRealityは、現実空間を測位してタッチした場所にGoogleMapのマーカーを出現させることができます。
このマーカーを出現させる箇所を出現させたいキャラクターに差し替えるだけで、現実世界に召喚することができます。

ここから、歩かせたり地形で何かをする場合は、ExperimentalMeshBuilderWithPhysicsを見るといいでしょう。

ExperimentalMeshBuilderWithPhysicsは、地形をメッシュ化して記録します。画面をタップするとボールが飛び出て、記録した地形メッシュにぶつかって跳ねさせることができます。

この生成された地形メッシュに対してデプスマスクを加えてあげると、キャラクターを物陰に隠してあげることができます。

また、影を落としてあげたり、FinalIKのGrounder機能によって足の接地を制御してあげると、よりリアルに感じられるのではないでしょうか。

経路探査にはNavMeshを用いています。下記資料を参考にして、動的にNavMeshを作ってあげます。

(参考)HoloLensで実現する動的経路探索
http://qiita.com/morio36/items/d75228d2ccdb9c24574b

NavMeshによる経路探査、IKによる接地制御、影、召喚を実装してあげると、階段を上ったり、下りたりすることができます。

ゴールデンウィークの期間に触ってみてできたのはここまででした。

Tangoの使い道


実際に触ってみるまでは「『ソードアート・オンライン オーディナルスケール』みたいなものを作れるのではないか!?」という気持ちでいましたが、Tangoで長所と短所が見えてきました。

Tangoでやりやすかったこと
・位置測位ができるので、近寄ったりすることができて楽しい。(所謂スマホVRではできないことができ出来る)
・SDKに参考資料が入っていて、制作自体は簡単に行うことができた。

Tangoで苦手なこと

・空間測位をする場合、何もない空間だと認識することができない(屋外は辛い)
・地形のメッシュ生成は細かすぎると生成に時間が掛かり、大雑把にするとメッシュがガタガタになってしまうので調整が難しい。

まとめ

このアプリ自体は、床を認識しているだけで「階段」だとか「椅子」だとかを判断していません。 例えば、「椅子があったら座る」みたいな動きをしたら面白いかもしれませんね。
また、ライティングも間に合っていないので、動的にライティングができれば、より馴染ませてあげられるのではないでしょうか。

いかがでしたでしょうか。GoogleTangoには夢が詰まっています。記事執筆時点ではLenovoのPhab2 Proのみ販売されており、夏にはASUS Zenfone ARが発売予定です。対応端末が2機種と限られていますが、今後Tango搭載端末が増えていくことにも期待したいところです。

今回開発に使用したもの

開発環境・Unity 5.6.0f3
TangoSDK・Version 1.53, May 2017
使用端末・Phabe2Pro

関連記事はこちら

この記事を書いた人

  • DK1に出会ってからVR沼にハマったプログラマ。VRに限らず、ARやMRで現実の代替となりうるリアリティを求めて日々アプリを開発しています。

    Twitter:@open_sorasu

【お知らせ】

世界のVR業界の最新動向を把握するための1冊!Mogura VRが日本語翻訳・監修を担当。
「VRインダストリーレポート(2017年春版)」予約受付中。4割引になる早割は5月20日までです。

Mogura VR編集部では、ライター・編集者を募集しています!
詳しくは募集ページをご覧ください。

募集ページへ