ARCoreを簡単にUnityで始める


はじめに 

こんにちは。Life is Tech! Tokai Mentors Advent Calendar 2018の7日目は、自分だすが書かせてもらいます。

VRやらARすごく来てますよね。ポケモンを捕まえたり、自分の部屋でアイドルが踊ったり、夢が広がりまくりですね〜!!

で、最近ARCoreに触れる機会があってその手軽さに感動したので、共有したいと思います。
細かいこと抜きに、なんとなくARやってみたいなーって思った人とかに向けて書きます。

ARCoreを簡単にUnityで始める

ARCoreとは?

ARCoreは、Googleが提供するAR(拡張現実)環境を構築するためのプラットフォームです。ちなみに、AppleがiOS用に提供しているのがARKitです。

ARCoreができること

  • モーショントラッキング
  • 水平・垂直の表面の検出
  • 環境光推定
  • Augmented Images(マーカー画像認識)
  • Cloud Anchor(AR空間の共有)

この記事でやること

この記事では、UnityにARCoreを導入して、モーショントラッキングとARで検出した平面に衝突判定を付けるところまでやります。
ここまで用意すれば、あとはここにオブジェクトを置くだけでも楽しそうですよね。

環境

導入

準備

ARCoreをダウンロードして、自分でわかるところに置いといてください。

その1 プロジェクト作成

まず、プロジェクトを新規作成して、Assets → Import Package → Custom PackageからARCoreのパッケージをインポートしてください。

その2 カメラとライト

Sceneを開いたら中に入ってるカメラとライトは全部消してください。
代わりに、GoogleARCore → PrehabsにあるARCore DeviceとEnvironment Lightを入れてください。


ScenesにCreateからGoogleARCore → SessionConfigを追加してください。
そして、ARCore DeviceのSession Configに置いてください。

その3 Controller

次に、Controllerという名前でGameObjectを作成。
そこに、Add ComponentよりDetected Plane Generatorを追加します。
そして、そのDetected Plane Prefabという項目に、GoogleARCore → Examples → Common → PrefabsのDetectedPlaneVisualizerを置きます。

その4 コード

最後に、DetectedPlaneVisualizer.csに数行コードを加えます。

DetectedPlaneVisualizer.cs
private void _UpdateMeshIfNeeded()
{
//---------------省略---------------//
//平面のメッシュにコライダーを加えるコード
GetComponent<MeshCollider>().sharedMesh = null;
GetComponent<MeshCollider>().sharedMesh = m_Mesh;
}

その5 ビルド

ビルド設定は、Androidを選択します。
Other Settingsより、Multithreaded Renderingチェックを外し、Minimum API LevelをAndroid7.0以上にします。
XR Settingsより、ARCore Supportedのチェックを入れます。

完成!

これだけで終わりです!
実行してみて壁や床を検出してたら完成です!
あとは自由に作りましょう!

楽しい!

自分は、ここにピンを並べてボールを転がすコードを足して、ARボーリングができました!
現実世界に表示できるってだけでかなり楽しい!


終わりに

自分でもこんな簡単にAR開発を始めれると思ってなかったんで、ぜひ皆さんも体験してみてください。そして、ヴァーチャル世界に進出していきましょう。