6D.aiとは?
6Dが開発しているARのSDKです。
特徴として、「普通のスマホの単眼カメラ」で、空間情報を高速に解析して、その情報の保存や共有が非常に簡単にできるようになっています。
公式デモ動画
https://youtu.be/EWK2pKInCWU
空間情報を認識するのに、HoloLensやTangoは、赤外線を使った深度センサーを用いています。iPhone Xシリーズのフロントカメラで顔の凹凸を正確に認識できるのも深度センサーの恩恵です。
ただ、深度センサーはコストが高く、全てのスマートフォンに搭載するわけにはいきません。なので、普通のRGBカメラで空間認識を行う技術が増えてきました。ARKitやARCoreが代表的なものです。
ところが、ARKitもARCoreも、現状は部屋の形を正確に認識できるところまでは実現できておらず、「ここに垂直もしくは水平な平面がある」ところまでしかわかりません。
6D.aiは、同じく単眼カメラしか使わないのですが、ニューラルネットワークの力を使って、空間情報を正確かつ高速に把握することができるのが特徴です。
現状はiOSでしか動作しませんが、今後他のデバイスに向けても開発が行われているようです。
6D.aiのベータ版を申請する
6D.aiのベータ版のSDKを入手するには、申請をしてからしばらく待たないといけません。僕が申請したときには2週間程度かかりましたが、現状は不明なのでまずは申込みをしてみてください。費用などは発生しません。
対応機種
対応しているデバイスは、ARKitより少なくなっています。
iPhoneなら7以降、iPadなら第1世代のPro以降と、無印iPadの第6世代以降となっています。
相応のCPUパワーが要求されるためのようです。
サンプルプロジェクトを動かす
6D.aiは、現状はUnity用とXcode用(SceneKit)のSDKとサンプルプロジェクトを提供しています。今回はUnity用ものを使用しました。
ベータ版の利用申請が通ったら、ログイン後にUnity用のプロジェクトをダウンロードして解凍します。また、APIのキーを設定する必要があります。
Downloads > Download Your API Keys を選択すると、「SixDegreesSDK.plist」がダウンロードされてきますので、サンプルプロジェクト内の下記に配置してください。
Assets/Plugins/iOS/SixDegreesSDK.plist
あとは、通常通りUnityからiOSプロジェクトを書き出してXcodeで実行する流れになります。
サンプルシーン
Basic Sample scene
空間認識を行い、認識された空間の床にオブジェクトを配置するデモになります。クラウドへのセーブ/ロード機能がついています。
Ball Pit Sample scene
空間認識を行い、そこにボールを放り投げて挙動を見ることができます。カメラで見回すとだんだんメッシュが作成されるのですが、作成されていない場所にボールを放り投げると奈落の底に落ちていきます。
少し改造して、カメラが近づくとボールが移動するようにしてみました。
BallBehaviour.csのUpdate()内に下記を追加します。
if (Vector3.Distance(this.transform.position,Camera.main.transform.position) < 0.5f)
{
GetComponent<Rigidbody>().AddForce(Camera.main.transform.forward * 180);
}
動画
https://twitter.com/torikasyu/status/1073959003409924102
Drawing Sample scene
空間にお絵かきができるサンプルです。
Drawing Sample Photon sceneでは、お絵かきをPhotonで共有しています。
感想
空間メッシュの生成速度が速くて正確で、HoloLensやTangoに遜色ない感じでした。空間への固定能力も優れていて、ARKitで起きるドリフトも比較的少ない感じがしました。
赤外線センサーを使用しないということは、HoloLensが苦手な直射日光下の屋外でも、赤外線が届かない広大な場所や遠くの場所でも使用できるということですので、かなり用途は広がるのではないかと思います。