トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

ARCore Geospatial APIためす【失敗編】

スキャンなしで周りの景色の情報をもとにARコンテンツ表示ができるAPIがARCoreに含まれたらしい!VPS!

www.moguravr.com

GoogleMapアプリのAR道案内で使われているのと同じ

 

この記事は2週間ぐらい前に書きましたが、結局ビルドかAPIかがうまく行ってなくて動いてません。

吉永先生のスライドどうりにやればうまくいきそうなので、後日試すかも・・・

 

使用例

Twitterでいろいろみかける

 

 

Unityで触る

こちらの記事通りにやってみる!

zenn.dev

公式の説明はここ

developers.google.com

API作成

ブラウザからAPI作成した。昔触った時のがあった

Unity環境設定

Unity2021.2

Windows

ARCore

 

ARのテンプレートで新規プロジェクト作成

PackageManagerでARCoreExtentionsとその中にあるGeoSpatial Sampleを入れた

https://github.com/google-ar/arcore-unity-extensions.git

AndroidにSwitchPlatformする。iOSも入れておくと後でエラーが出ない

XR Plug-in ManagementでARCoreにチェックを入れる

Unity再起動してからARCore ExtentionsでAPIKeyを入れてGeospatialにチェック入れる

iOSのPlatform入れてないとエラーが出るので入れた

GeospatialConfigのGeospatialをEnabledにする

 

サンプルビルド

Geospatialシーンをビルドしたらいいらしい

GeospatialController.csの612、613行目をコメントアウト。これでエラーが出たときにアプリ終了しない

Androidビルドはできた

 

(横道)NDKない

このPCでAndroidビルドするの初めてかもしれない。NDKが正しくないって言われてビルドできない;;

UnityHubで入れたのに;; Cドライブが枯渇してたせいか?

手動でダウンロード。r21dを選べって言われたけどないよ~

github.com

同じ質問あった

www.reddit.com

あった。でもダウンロード方法がよく分からない

android.googlesource.com

よく分からないのでUnityのバージョンを上げたものをインストールして開きなおした。

スクリプトで配置

自分で配置したいけど、サンプルのコードを読み解けない・・・

latitudeあたりは自分で数値を入れるんだろうけど

こちらの記事に書いてあった!

webar-lab.palanar.com

あとGeospatialController.csを参考にしてできた!

using UnityEngine;
using Google.XR.ARCoreExtensions;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;
public class GeoSetting : MonoBehaviour
{
 public GameObject GeospatialAssetPrefab;
 public ARAnchorManager AnchorManager;
 public AREarthManager EarthManager;
 public double latitude;
 public double longitude;
 public Quaternion quaternion;

    void Start()
    {
        var cameraGeospatialPose = EarthManager.CameraGeospatialPose;
        var earthTrackingState = EarthManager.EarthTrackingState;
        double altitude = cameraGeospatialPose.Altitude;

        if (earthTrackingState == TrackingState.Tracking)
        {
            var anchor =
                AnchorManager.AddAnchor(
                    latitude,
                    longitude,
                    altitude,
                    quaternion);
            var anchoredAsset = Instantiate(GeospatialAssetPrefab, anchor.transform);
        }
    }
}

これってどこに置けばいいんだろう。サンプルシーンに追加で置いてもケンカしないかな?

Startでうまく動くのかな。上の記事みたいにボタン押したらにしたほうが良いのか?

動かない

WiFiで部屋のベランダからAndroidで試したらうまくいかない。参考にした記事にWiFiじゃうまく動かないから4Gにしたって書いてた。

iPhoneに使ってるsimをAndroidに入れ替えて家の近くで試したけど、動かない。

 

仕方がないのでmacで1から環境構築して、iPhoneにビルドしようとしたのに、Xcodeでフレームワークのエラーが出てビルドできなかった;;

 

もうやだ・・・

サンプル動かした

こちらで配布されれいるAndroid版のサンプルのビルドデータならWiFiで動きました

xr-fukuoka.connpass.com

アプリ起動時の場所にマーカーが出現。

歩き回って戻ってきても表示されているのは普通のARの機能かな・・・