1. HOME
  2. ブログ
  3. IT技術
  4. UnityのARCoreを使って長さ計測Androidアプリを作ってみる!

UnityのARCoreを使って長さ計測Androidアプリを作ってみる!

Unity で ARcorを使い「長さ測定アプリ」を作る!

今回は「AR(拡張現実)」を用いた、「長さ計測 Android アプリ」を開発をしていきます!

開発については、Unity(ユニティ)上で、「ARCore(エーアールコア)」を用います。

※記事を読む上での注意※

  1. すべてのAndroidでARCoreが使えるわけではありません。ARCore対応端末については以下URLを参照してください。
    https://developers.google.com/ar/discover/supported-devices
  2. 今回の記事ではARCoreのインストール方法についてはサポートしていません。
    ARcoreが公表している、Quickstart for Andoid
    https://developers.google.com/ar/develop/unity/quickstart-android
    を参照していただければなと思います。

ARCore(エーアールコア)とは?

「ARCore」は、Google がアンドロイド端末向けに提供している、ARプラットフォームです。

特別なカメラやセンサーを用いずに、既存のスマートフォンに内蔵されているカメラや、モーションセンサーのみでARコンテンツを構築できます。

技術的には、「VIO(visual inertial odmetry)」が用いられています。

ざっくりいうと、「カメラ画像」+「加速度センサ」+「ジャイロセンサ」で、自己位置推定をしています。

ちなみに、iOS 向けの ARプラットフォームには、Apple が開発している ARKit(エーアールキット)があります。

関連記事

ARcore で長さを計測するための全体の流れ

今回は、ARで計測したい個所の、「始点」と「終点」にオブジェクトを生成して、その間の長さを計算したいと思います。

この記事で紹介する内容はコチラ!

1.ゲームオブジェクトの座標を管理する
2.座標をほかのクラスに引用する
3.引用した座標の間の距離を計算して、UIで表示する。

ARCore のサンプルアプリ「HelloAR」をカスタムする

今回は、ARCore 内のサンプルアプリ「HelloAR(ハローエーアール)」をカスタムしていきます。

HelloAR は、水平面を検出して、その水平面上をタップすることで、「ARオブジェクト」を表示することができるアプリです。

早速 Unity 上で、「HelloAR」のシーンを開いてみましょう。

まず、「Unity Project Window」上で

「Assets」>「GoogleARCore」>「Examples」>「HelloAR」>「Scenes」>「HelloAR」

と選択します。

「HelloAR」のアイコンをダブルクリックすると、HelloAR のシーンが開きます。

ARCoreに長さ測定機能を実装

早速、実装していきましょう!

HelloAR Controller.cs」を元にして作成します。

オブジェクトの座標を管理する

「HelloARController.cs」内で、「座標を格納するリスト」を作成します。

オブジェクトが表示された地点の「ワールド座標」を、リストで管理します。

一旦、「ゲームオブジェクト」をリストに入れて、リストから位置情報を引き出しています。

HelloARController.cs のコード

UIを設定

「2地点座標」から、オブジェクト間の長さを計算します。

位置情報「pos1 , pos2」を HelloARController.cs から引用するため、「名前空間」を取得したり、HelloARcontroller を「script変数」に入れたりしています。

まず、スクリプトを作りましょう。

「Project」ウィンドウ上で、「create」>「C# Script」でスクリプトを作成。

そして、この名前を「UIcontroller」に変更します。

UIcontroller.cs コード

GameObject を作成

次に、「UIcontroller」を動かす「GameObject」を作成します。

「Hierarcy」ウィンドウから、「Create」>「Creat Empty」で作成します。

「GameObject」の名前を、「UIcontroller」に変更して、「UIcontroller」のスクリプトをアタッチします。

最後に Distance

「Hierarcy」ウィンドウから、「Create」>「UI」>「Text」と選択。

名前を「Distance」に変更します。

下の写真の、赤枠部分のようになっていれば問題ありません。

クオリティアップ

上の実装で、長さは計測できるようになりましたが、少し体裁を整えたいと思います!

既存の「prefab」だとビジュアル的に良くないので、「footprint」に変更したいと思います。

こちら「Project」ウィンドウから、「Favorites」>「All Models」>「footprint」で見つけられます。

また、「footprint」はそのままだと大きいので、スケールを「0.1」に変更します。

ARcoreで完成した「長さ測定アプリ」を使ってみる

さっそく計測してみましょう!

試しに「1万円札」を計測してみたいと思います。

画像の上部に、赤字で「15.74cm」と表示されました!

1万円札の一辺は 16cm なので、「誤差2.6mm」での計測となりました。

大体、「誤差1~3mm」ぐらいの精度のようです。

この精度は、「対象のテクスチャ」に依るところが大きいようです。

※例えば、金属は光を反射し計測しづらいなど。

さいごに

今回は、簡易的にできる「長さ計測アプリ」を作成してみました。

今後は、「特徴点」から計算される「記述子」を用いた対応付けを変えたりしていこうと思っています。

また、「物体検出」や AR の技術的な所もまとめていけたらなと思います。

お楽しみに!

こちらの記事もオススメ!

書いた人はこんな人

広告メディア事業部
広告メディア事業部
「好きを仕事にするエンジニア集団」の(株)ライトコードです!

ライトコードは、福岡、東京、大阪の3拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。

システム開発依頼・お見積もり大歓迎!

また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」「WEBディレクター」を積極採用中です!
インターンや新卒採用も行っております。

以下よりご応募をお待ちしております!
https://rightcode.co.jp/recruit

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界を変える…! /

Androidエンジニア

\ みんなが使うアプリを創る /

iOSエンジニア