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 の技術的な所もまとめていけたらなと思います。

お楽しみに!

(株)ライトコードは、WEB・アプリ・ゲーム開発に強い、「好きを仕事にするエンジニア集団」です。
UnityやiOSアプリ開発のご依頼・お見積もりはこちらまでお願いします。
また、Unityまたは、iOSエンジニアを積極採用中です!詳しくはこちらをご覧ください。

※現在、多数のお問合せを頂いており、返信に、多少お時間を頂く場合がございます。

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

ライトコードよりお知らせ

にゃんこ師匠にゃんこ師匠
システム開発のご相談やご依頼はこちら
ミツオカミツオカ
ライトコードの採用募集はこちら
にゃんこ師匠にゃんこ師匠
社長と一杯飲みながらお話してみたい方はこちら
ミツオカミツオカ
フリーランスエンジニア様の募集はこちら
にゃんこ師匠にゃんこ師匠
その他、お問い合わせはこちら
ミツオカミツオカ
   
お気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

書いた人はこんな人

ライトコードメディア編集部
ライトコードメディア編集部
「好きなことを仕事にするエンジニア集団」の(株)ライトコードのメディア編集部が書いている記事です。

関連記事