CrossRoadスマートフォン用の表示で見るCrossRoadAR、MR、VR、Babylon.jsを中心とした技術ブログ。I/Oで、ARCoreのver1.2が発表されました。Anchorという新機能もありました。Anchorとは、ARCoreによって認識した環境情報をクラウド上にアップロードし、他の端末でも環境情報を共有する機能です。「他の端末」には、iOSも含まれます。Anchorの動作確認をしてみました。公式HPに手順が載っているのですが、ページがあちこち飛んでわかりづらいところもあったので、一通りの手順をまとめてみました。Studioを使用しましたが、どちらもUnityを使うことが可能です。Studioの説明で記載しています。Anchorは、文字通りクラウドを使って環境情報を共有します。共有には、FirebaseのDatabase機能を使います。FirebaseとはFirebaseとは、Googleが提供しているモバイル端末向けのバックエンドサービスです。Service)というカテゴリで分類されることもあります。Firebaseデータ収集したい、プッシュ通知したい、アプリ内で広告を管理したい、など、アプリ開発とは別のサーバサイドで必要になる仕組みが諸々入っています。Databaseを使います。説明は公式HPから引用します。クラウドでホスティングされるデータベースです。して保存され、接続されているすべてのクライアントとリアルタイムで同期されます。Databaseプロジェクトを追加Firebaseにアクセスし、「コンソールへ移動」をクリックします。Firebase「プロジェクトを追加」をクリックし、プロジェクト名と国を設定します。今回はARCore-ios-testというプロジェクト名にしました。プロジェクトを作成するとこのような画面になります。StudioプロジェクトにそれぞれFirebaseを入れる必要があります。Databaseの順番に選択します。Guideに記載の方法に沿って、セキュリティルールでは、「テストモード」を選択します。これでFirebaseの全体設定は完了です。Studioの設定、で解説します。Platformの設定ここまでで設定したのはFirebaseデータベース機能であり、スマートフォンとクラウド側を認証させる仕組みを別に設定する必要があります。Platformを使います。Platformログイン画面からログインします。初期設定の手順は省略します。Platformの中で新しくプロジェクトを作成するだけです。APIの管理画面に移動します。API管理画面に遷移するので、鍵アイコンをクリックします。次の画面で「認証情報を作成」をクリックし、「APIキー」を選択します。キー生成後、キーの名前は任意で大丈夫です。Platform間で通信するための準備ができました。StudioとXCodeプロジェクトの設定時に使います。今回使ったソフトウェアは下記の通りです。11.3公式HPのiOS版の設定手順を参考にして整理しました。下記よりダウンロードまたはクローンしてください。iOSダウンロードしたプロジェクトをXCodeで開き、設定画面のGeneralを開きます。identifierを自分の情報に書き換えます。プロビジョニングファイルも各自で設定します。plistとxconfigファイルが赤色になっていますが、これは後で追加するのでこの時点では対応不要です。consoleを開きます。1-2でこのような画面になっているので、「iOSアプリにFirebaseを追加」を選択します。identifierのみ入力して「アプリを登録」をクリックします。次に、info.plistファイルをダウンロードします。このinfo.plistファイルをXCodeのプロジェクトに追加します。XCodeを開いたときのファイル一覧で「GoogleService-Info.plist」が赤くなっているので、ここを右クリックしてDeleteします。次に、先ほどダウンロードした「GoogleService-Info.plist」ファイルを、Deleteした辺りにドラッグします。groupsを選択してFinishをクリックします。CocoaPodsをインストールする(CocoaPodsインストール済みの場合、3-4へ進んでください)CocoaPodsとは、iOS/Macアプリ開発に必要なライブラリを依存関係を考慮して取得できる仕組みです。SDKをXCodeプロジェクトに追加するために使います。こちらに記載の内容を見ると、コミュニティの善意で運営されているようですね。CocoaPods.orgざっと読んだ限り、利用は自己責任(CocoaPodsを使ったことで何かおきても責任は取れない)、CocoaPodsを悪意を持ってハックしてはならない、などでしたので、今回のようなツール取得には問題ないと思います。(規約が気になる方は必ず確認してください)まず、MacにCocoaPodsをインストールします。ターミナルを開いて以下を入力します。errorが出て失敗しました。Capitan以降で採用されたrootless(rootでもアクセス制限がある)が原因のため、インストール先を/usr/local/binに変更しています。以下の方々の情報を参考にさせていただきました。ありがとうございます。installを実行します。installを実行します。'Firebase/Core'を追加します」、などの記述がありますが、今回はそれらが準備されたXCodeプロジェクトを使っているので不要です。installのみで大丈夫です。podfileとは、このような内容が書かれたテキストファイルです。4.11'今回使ったiOSは11.3でしたが、podfileに記載のiOSバージョンは11.0で問題ありませんでした。install時にXCodeを開いているとこのようなメッセージが出ます。XCodeを閉じてから再度実行すると消えます。missingのエラーも消えます。初期化する」は対応不要です。Keyをソースコードに埋め込みます。具体的には、ExampleViewController.mの68行目です。error:nil];/*省略*/これでXCode側の設定は完了ですので、iPhone実機にデプロイします。デプロイ方法については下記もご参照ください。今回使ったソフトウェアは下記の通りです。Googleをインストール済みです。以下、公式HPのAndroid版の設定手順を参考にして整理しました。下記よりダウンロードまたはクローンしてください。projectで"cloud_anchor_java"のパスを選択して開きます。Firebaseにパッケージ名を登録して、google-services.jsonを取得するFirebaseコンソールを開きます。Databaseプロジェクトを追加」でプロジェクトを追加しているので、「アプリを追加」をクリックします。パッケージ名を登録する画面が出るので、"com.google.ar.core.examples.java.cloudanchor"を登録します。このまま画面にしたがって進めると、jsonファイルがダウンロードできるので取得します。Studioのプロジェクトに追加します。表示を"Android”にして、"app"の箇所にドラッグします。editor"にチェックを入れてからOKをクリックすると追加されます。手動で追加する」は対応済みなので不要です。Studioの場合はGradleを使います。Gradleにはプロジェクト全体とモジュール単位の2種類があります。プロジェクト構成の表示方法」にある通り、「Android」の表示にするとよいです。Technologyプロジェクト全体のGradleを以下のように入力します。rootProject.buildDir}サンプルプロジェクトにはすでにほぼ書かれているので、実際はallprojectsの中にあるmavenだけ追加しました。次に、モジュールのGradleをこのように入力します。Gradleでエラーが出るので、元々書かれていた12.0.1に合わせました。Gradleを実行すると必要なライブラリが追加されます。Keyをマニフェストファイルに入力します下記は抜粋です。Studio側の設定は完了です。Android実機にデプロイします。動作確認AndroidとiPhoneのスマートフォンで、それぞれデプロイしたアプリを起動します。UIはどちらも同じです。画面の上に「HOST」と「RESOLVE」というボタンがあるので、片方はスマートフォンがHOST、もう一方はRESOLVEを選択します。HOSTはAnchorとなるAndyを設置します。RESOLVEはHOSTで設置されたAnchorの情報を取得できます。起動後、しばらく周囲を見回すようにスマートフォンを動かすと、検出された平面がCGで表示されます(これはARKitやARCoreの通常の動作です)。検出後、平面の任意の箇所をタッチするとAndyが表示されます。Andyを表示後、HOSTボタンをタッチすると、Anchor情報が登録されます。これは1,2分かかります。Successと表示されてRoom番号が割り当てられます。下記ではRoom:3となりました。画面右上の「Room」というボタンをタッチします。キーボード画面になるので、Room番号を入力します。ここではHOSTで生成された3を入力します。Successと表示されます。これによって、AnchorのAndyモデルが2つのスマートフォン越しのカメラの同じ位置で表示されます。終わりにこのサンプルはあくまでAnchorを共有するものなので、片方が生成したCGオブジェクトをリアルタイムに共有する、などの機能は自分で作る必要があります。ソースコードの構成も整理する予定でしたが、思ったより長くなったので別の機会にしたいと思います。Viewerの環境構築手...ARCoreが1.9になりました。2018の11日目の投稿です。Imagesで風景をARマーカにするここ最近、ARCore1.2を調べてます。»ProfileAR、MR、VR、Babylon.jsを中心とした技術ブログです。広く色々な技術を勉強するのが好きで、あれこれ書いています。詳細なプロフィールはこちらをご確認ください。2020)■プライバシーポリシー■こちらに記載しておりますのでご確認ください。■お問い合わせ■こちらよりお願いいたします。月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。