はじめに
普段、IT企業で働いてますプログラマー芸人のジンバと申します!
Unity × Immersal SDKでVPSを用いたARアプリを実装できます!現実空間に正確にオブジェクトを配置することができますよ!
通常、スマホを使い専用アプリでマッピングするのですが360度カメラでも可能です!手順を紹介します!
GoProなどで360度動画を撮影
360度動画のタイムラプスで撮影。(普通の動画だと容量が重くなるため。)
撮影の際、蛇上に歩くと良いらしい
を参考に
撮影した360度動画をGoProプレイヤーなどで読み込みmp4ファイルを出力
.360ファイルを選択
ファイル→エクスポート。5.6Kだと失敗したので4Kにした。
動画→画像に
上のリポジトリをダウンロードし、
immersal-python-tools-for-customer-main\mapping\360\フォルダをVSCodeで開く。
先ほど読み込んだmp4ファイル(例:BigRoad360.mp4)を配置し、画像の切り出し先のフォルダ(例:BigRoadOutput)を作成する。
save-frames-from-video.pyのスクリプト内のパスを先ほどのものに修正して実行する。
interval_seondsはタイムラプスの1枚の画像あたりの秒数を指定する。(もし1秒で30枚の画像なら、1/30 = 0.03秒)
するとフォルダに分割された画像とjsonファイルが生成される。
点群データ作成
3D空間データを生成するソフトウェア「Agisoft Metashape(Professional版)」をインストールし、先ほどの画像ファイルをドラッグアンドドロップする。
Reference Settingsが以下画像のようになっているか確認。
Tools→Camera CalibrationでCamera typeをSphericalに変更する。
Workflow → Align PhotosでEstimatedにして実行する。
すると点群が表示される。
Workflow -> Build Model, Workflow -> Build Textureを実行する。
すると3Dモデルが表示される。
y軸上が天井になるように適宜回転させる。
現実世界の距離を反映
この案内板を目印に現実世界の距離を反映させる。高さ、横幅、奥行きを測定できる立方体に近い物体にすること。
この案内板をメジャーなどで高さ、横幅、奥行きを測定する。
Metashapeに戻り、Photosから案内板が映っている写真を選ぶ。そして写真上の案内板の角の点を右クリックする。
AddMarkerする。
以下のように4点追加する。
ほかの画像にも追加されてるので確認。もしpointがずれていたら、ピンの下をドラッグして移動させる。
以下の座標系を参考に先ほど測った現実世界の距離を入力する。
左のマーカー一覧にチェックを入れる。(かなり忘れるので注意)
Model → Transform Object → Update Transformを押す。これで完了。
ファイル出力
Export → Export Modelでfbxやglbモデルを出力。fbxとjpgが出力されるはず。後でUnityで使う。
Export → Export Camerasでxmlファイルを出力
Immersalにデータを送信
VSCodeを開き、先ほど動画を置いた階層にxmlファイルを配置
metashape-xml-to-json.pyのxmlと画像フォルダのパスを修正して実行する。
jsonファイルの中身が変更されていることを確認する。
submit-images-and-json-with-retries.pyのトークンやフォルダパス、マップ名を修正して実行する。
実行後、Immersalデベロッパーページのマップ一覧を見ると追加されている。
点群の編集
編集したい点群のマップのSparse PLYをダウンロードする。
MeshLabでplyファイルを開く。
編集の仕方は調べてください。
編集したplyファイルをエクスポートする。
Immersalのマップ一覧で元のマップにチェックを入れて「Upload edited map」をクリック
編集後の名前を入力し、plyをアップロードすると新たに追加される。このマップを今後参照する。
告知
ご覧いただきありがとうございました!
普段、IT企業で働いてます「プログラマー芸人」ジンバです!
YouTubeもご覧くださいー!↓













































