iOS 11の新機能ARKitとUnityを使ってARで遊んでみた

iOS 11の新機能

iOS 11ではARKitと画面の録画機能が追加される予定です。
早速試して見ました。
ARKitでお試しアプリを作って、録画機能で録画してみました。

ARKitについて

ARKitを使うとiOSで手軽にAR機能を使ったアプリを作れるようになります。
iPhoneのカメラで見ているリアルな世界にゲームのキャラクターなどのコンテンツを簡単に同居させて今までとはちょっと違ったゲームが作れそうです。
リアルな3Dの世界との合成なので、Unityのような3Dモデルを扱えるゲームエンジンとは相性が良さそうです。
実際すでにUnityではARKitを使うためのプラグインをアセットストアで公開しています。このプラグインはgitでも公開されてます。

アセットストアからインポートするとサンプルとかも入ってくるのでお試しで使ってみるにはいいですが、実際のプロジェクトに使うのはgitから必要なファイルだけ持って来た方がいいかもしれません。
このプラグインでできるのは基本的にAppleがiOSで用意しているARKitとのインターフェースを提供してくれるだけですので、ARKitで何ができるのかといった情報はAppleのデベロッパ向けの情報を調べて、実装の際にはUnityのプラグインの情報を確認するといいと思います。

実際に試してみるには、iOS 11のβ版を入れたiPhoneまたはiPadとxcode9のβ版を入れたMac 、それにunityの5.6.1にARKit Plug-inを入れれば開発環境が出来上がります。
iPhoneなら6s以降ならARKitに対応しているそうです。
今回はiPhone 6s Plusで試して見ました。
ARKit Plug-inにはサンプルプログラムも同梱されているので、わりと簡単にAR機能を体験できます。

ARKitをUnityのアプリで使って録画して見た

とりあえずやって見たのは、カメラでとらえた現実の空間の映像からARKitの機能で平面を検出して、そこにゲームのキャラクタを出現させるっていうのをやってみました。
ちょうどいい素材として、AppStoreで公開中のゾンビ単というゲームがあるので、AR用にアレンジしてみました。
とりあえず動画でどうぞ。
録画にはiOS 11の新機能の録画機能を使っています。
この録画機能はコントロールセンターから簡単にスクリーンの録画を開始できます。
簡単です。誰でもすぐに録画してYoutubeとかにアップロードできますが、動画を見ていただいたらわかる通り、音が入っていません、映像のみです。
音がないとちょっと使い道が限られるかなぁ。
YouTube Preview Image
YouTube Preview Image

ARKitの平面検出について

ARKitを使うとカメラで見ている映像から水平面をリアルタイムで自動的に検出してくれます。
この機能がARKitのキモのようです。
動画中で現れる水色の四角いのがARKitが検出している水平面です。
デバッグ用に検出した平面を表示して確認できるようになっています。
起動してから平面を検出するまでには少し時間がかかるようです。
少しカメラを動かしていた方が検出されやすい気がします。
だいたいカメラを動かしながら数秒すると平面が検出されてきます。
平面と認識されるにはある程度の広さが必要です。
感覚的には50cm四方ぐらいの平面があれば検出されるようですが、画像解析で検出しているようなので、検出しやすい面とか状況があるようです。
状況というのは周囲の明るさとかです。暗いと検出しにくいようです。
また、一度検出した平面も他の平面と統合されたり広がっていったりと、時間とともに変化します。

今回は検出した平面にゲームのキャラクターを出現させてみました。
実世界の映像にこういうゲームのキャラクターが同居しているのは面白いです。
これを作るのはほんの数時間でできちゃいました。
もちろん元となる素材のアプリがあったからですが、色々ググりながら元のゲームをARにアレンジするのはあっという間でした。

ARKitで出来ないこと

ARKitは面白いですが、ちょっと使ってみると、いろいろとまだ発展途上感はあります。
例えば、水平面は検出できるけど垂直方向の面は検出できないみたい。
つまり床は検出できるけど壁は検出できないということです。例えば水平面に置いたキャラクターは水平面からはみ出ると落下しますが、その先に壁があっても認識していないので、壁に当たってもぶつからないです。

また、座標情報を他の端末と共有する仕組みもなさそうです。
あくまでもゲーム内だけの空間内での座標しか持たないようです。多分。
なので例えば複数のiPhoneとプレイヤーで同じゲーム空間内でマルチプレイヤーのゲームを作るのは難しそうです。
また、外部から現実の世界の位置情報を取得してARKitでみている世界にマッピングするとかもできなそうです。

という感じなので、今のところ実用系アプリでの応用範囲は限られそうで、ゲーム用途ぐらいしか思いつきませんが、今までできなかった表現ができるので面白いのではないでしょうか。

ARKitアプリのテストについて

最後にARKitを使ったアプリのテストについても少し。
ARKitのアプリのテストは面倒です。
この点が、アプリを作る上で厄介です。
なぜなら実機で確認しなきゃいけないから、いちいちUnityで作ってxcodeから実機にインストールして確認するので時間がかかります。

救いはxcode9ではリモートでデバッグできるようになったこと。
いままではアプリをデバッグしようと思ったら、ライトニングケーブルでMacと接続した状態で実行する必要がありました。
この状態でARアプリをデバッグするのは結構しんどいです。
Xcode9からは無線LANで実機にアプリをインストールして、そのままワイヤレスでデバッグできます

実はワイヤレスデバッグは昔はできてたんですが、いつの頃からかリモートでデバッグできなくなってたんですよね。
ArKitのテストは有線では難しいので、復活させたんでしょうかね。

さてどうしようかな

ということでiOS 11のARKitについてでした。
秋になったらARの面白いゲームが色々登場するのかなぁ。
僕もなんか面白いの作れるかなぁ・・。
とりあえず、アレンジ前のオリジナルのゾンビ単はこちらからどうぞ。

Tags: , , , ,