tks_yoshinagaの日記

KinectやLeap motion, VRやARなどの技術を使ってやったことのメモとか

HoloKitとGoogleTangoで手軽に光学シースルーAR

手軽に光学シースルーARが実現できるHoloKitを入手したのでレポート。
光学シースルーARというのはカメラで撮影した風景映像にCGを重ねるのではなく、HoloLensのように目で見ている風景の上にCGのみが重畳される方式のARです。
それをGoogleTangoやARKitに対応したスマートフォンと、段ボール製のヘッドセットで実現できてしまうのがHoloKitです。

1.体験

外観は大きめのハコスコといったところ。上部に挿入したスマートフォンの画面に表示された3Dコンテンツが鏡やハーフミラーで反射してユーザーの目に到達する仕組みになっています。

f:id:tks_yoshinaga:20170817172126j:plain

さらにTangoやARKitは端末の位置や向きをリアルタイムに推定することができるのでHoloKitを装着したまま動き回ることで色々な位置・角度でCGを観察することができます(動画参照)。

 
2.開発

HoloKitでは対応コンテンツの開発のためにUnity用のSDKが提供されています。

 
例えばTango対応コンテンツを開発する場合は、まずUnityにSDKを取り込みます。
続けて、Build Settingを開きPlatformをAndroidに切り替えておきます。
※実機インストールだけでなくUnityEditor上での動作確認のためにも必須

上記の準備が済んだら、MainCameraを削除したのちに以下2つのプレハブをHierarchyにドラッグ&ドロップするだけで自己位置推定と左右分割の表示ができるようになります。
(1) TangoManager(TangoSDKが提供)
(2) HoloKitCameraRig(HoloKitが提供)

f:id:tks_yoshinaga:20170817173644j:plain

ただし、画面の表示サイズは端末によって異なるので各種パラメータを各自で設定することで見た目を整える必要があります。その際にはHoloKitのScriptsフォルダ内にあるHoloKitCalibration.csを開き、loadZenTangoCalibration関数の中の記述をいじればOKです。
ちなみにLenovo Phab2 Proの場合は以下のように書き換えるといい感じです。
※正確ではありません

cameraRig.PhoneScreenHeight = 0.145f;
cameraRig.PhoneScreenWidth = 0.08f;

HoloKitを入手された方は参考にしてみてください。
※最新SDKから上記パラメータ設定は不要になりました

 

3.感想

段ボールのケースとスマートフォンだけで光学シースルーARを体験できるのはシンプルに楽しかったです。もちろん、HoloLensのようなハイエンド機と比べれば劣る部分もありますが、この手軽さを活かして教育やエンタメで広まることでARが身近なものになると良いなと思いました。

4.HoloKitの情報

HoloKitの詳細については公式サイトをご覧ください。

holokit.io