0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Immersal×360度カメラでVPSマッピング

Last updated at Posted at 2025-08-05

はじめに

普段、IT企業で働いてますプログラマー芸人のジンバと申します!
Unity × Immersal SDKでVPSを用いたARアプリを実装できます!現実空間に正確にオブジェクトを配置することができますよ!

通常、スマホを使い専用アプリでマッピングするのですが360度カメラでも可能です!手順を紹介します!

GoProなどで360度動画を撮影

360度動画のタイムラプスで撮影。(普通の動画だと容量が重くなるため。)

3d3324d9-3b18-4082-80cf-93e9da0eee09.jpeg

撮影の際、蛇上に歩くと良いらしい

ba412996-9878-4fbf-8f9a-93012e02c236.png

を参考に

撮影した360度動画をGoProプレイヤーなどで読み込みmp4ファイルを出力

.360ファイルを選択

7efc674f-d79d-4475-aa66-58f30b120604.png

ファイル→エクスポート。5.6Kだと失敗したので4Kにした。

3236bf04-4a52-44cb-9d0d-b356d31c0a3d.png

動画→画像に

上のリポジトリをダウンロードし、
immersal-python-tools-for-customer-main\mapping\360\フォルダをVSCodeで開く。
先ほど読み込んだmp4ファイル(例:BigRoad360.mp4)を配置し、画像の切り出し先のフォルダ(例:BigRoadOutput)を作成する。

0a0af348-f9d0-4ab0-ad05-c3938b8eaa4b.png

save-frames-from-video.pyのスクリプト内のパスを先ほどのものに修正して実行する。
interval_seondsはタイムラプスの1枚の画像あたりの秒数を指定する。(もし1秒で30枚の画像なら、1/30 = 0.03秒)

10d1377e-c631-432f-b940-eb36bb9975a0.png

するとフォルダに分割された画像とjsonファイルが生成される。

edf0baad-3d51-4064-9db6-46bacc04be5e.png

点群データ作成

3D空間データを生成するソフトウェア「Agisoft Metashape(Professional版)」をインストールし、先ほどの画像ファイルをドラッグアンドドロップする。

Reference Settingsが以下画像のようになっているか確認。

84a9b70e-19b0-4c43-9319-628a8ad9e638.png

Tools→Camera CalibrationでCamera typeをSphericalに変更する。

bb96982a-ba41-4e1d-9fc1-ce861f453a4a.png

60338af7-72bb-4ffe-a1ae-97093df8a35d.png

Workflow → Align PhotosでEstimatedにして実行する。

0137a66f-a39b-44ec-a7ca-db9d9c6e0dbf.png

c8164a97-0c2f-477d-8dd0-6095ce61e43b.png

すると点群が表示される。

994c8dd1-6d52-40fb-a988-5298ee9a78bb.png

Workflow -> Build Model, Workflow -> Build Textureを実行する。

234b939a-1fb7-4b40-99a5-06e036d247c2.png

07c3feb2-0b5f-4d3a-830d-243b951fe0f6.png

すると3Dモデルが表示される。

7b733adc-d6c5-4032-b22e-e988425cee65.png

y軸上が天井になるように適宜回転させる。

image.png

image.png

現実世界の距離を反映

この案内板を目印に現実世界の距離を反映させる。高さ、横幅、奥行きを測定できる立方体に近い物体にすること。
この案内板をメジャーなどで高さ、横幅、奥行きを測定する。

image.png

Metashapeに戻り、Photosから案内板が映っている写真を選ぶ。そして写真上の案内板の角の点を右クリックする。
AddMarkerする。

image.png

以下のように4点追加する。

image.png

ほかの画像にも追加されてるので確認。もしpointがずれていたら、ピンの下をドラッグして移動させる。

image.png

以下の座標系を参考に先ほど測った現実世界の距離を入力する。

image.png

image.png

左のマーカー一覧にチェックを入れる。(かなり忘れるので注意)
Model → Transform Object → Update Transformを押す。これで完了。

image.png

ファイル出力

Export → Export Modelでfbxやglbモデルを出力。fbxとjpgが出力されるはず。後でUnityで使う。

e303cfcd-c06c-4a00-8bec-cdba03b0926d.png

a0ecd599-05c6-4536-a106-835183023ee4.png

Export → Export Camerasでxmlファイルを出力

bd3693e5-d116-40a7-9022-e3a090322ee4.png

caaca75c-729e-4679-8c94-971a69c2c910.png

Immersalにデータを送信

VSCodeを開き、先ほど動画を置いた階層にxmlファイルを配置

96cd9374-7b9c-458e-be8a-9a5ffcd282f1.png

metashape-xml-to-json.pyのxmlと画像フォルダのパスを修正して実行する。

86a096ef-afd5-47df-a55e-c59d1a03466e.png

jsonファイルの中身が変更されていることを確認する。

9a50f1e0-281f-4e3a-b0a7-69ba20780a5e.png

submit-images-and-json-with-retries.pyのトークンやフォルダパス、マップ名を修正して実行する。

77bd5cbd-8259-43ab-9855-afd39134f1c3.png

実行後、Immersalデベロッパーページのマップ一覧を見ると追加されている。

7ff65487-3610-4966-a3b3-b5b509d93967.png

点群の編集

編集したい点群のマップのSparse PLYをダウンロードする。

image.png

image.png

MeshLabでplyファイルを開く。

image.png

編集の仕方は調べてください。

image.png

image.png

編集したplyファイルをエクスポートする。

image.png

image.png

Immersalのマップ一覧で元のマップにチェックを入れて「Upload edited map」をクリック

image.png

image.png

編集後の名前を入力し、plyをアップロードすると新たに追加される。このマップを今後参照する。

image.png

image.png

告知

ご覧いただきありがとうございました!
普段、IT企業で働いてます「プログラマー芸人」ジンバです!
YouTubeもご覧くださいー!↓

初テレビ.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?