Zum Hauptinhalt springen

Panoramen und Video

Erstellen Sie eine Karte für AR Clip VPS aus 360°-Fotos oder einem stabilisierten Rundgang-Video. Nutzen Sie diesen Weg, wenn Photogrammetrie nicht praktikabel ist.

Einzelbilder extrahieren​

ffmpeg -i hotel-tour.mp4 -vf fps=1 tour_frames/frame_%04d.jpg
  • Bei Video nehmen Sie 1–2 Bilder pro Sekunde.
  • Bei 360°-Kameras wie Insta360 oder Ricoh Theta exportieren Sie equirektangulare JPGs.

Die Einzelbilder mit Python hochladen​

Packen Sie die ausgewählten Bilder in ein Zip-Archiv und laden Sie es über die REST API hoch.

# cluster_frames.py
from pathlib import Path
import zipfile
import os
import requests

API_BASE = "https://api.arclip.app/vps/api/v3"
TOKEN = os.environ["ARCLIP_TOKEN"]
FRAMES_DIR = Path("tour_frames")
ARCHIVE = Path("tour_frames.zip")

with zipfile.ZipFile(ARCHIVE, "w", compression=zipfile.ZIP_DEFLATED) as zf:
for frame in sorted(FRAMES_DIR.glob("*.jpg")):
zf.write(frame, frame.name)

headers = {"Authorization": f"Bearer {TOKEN}"}

init = requests.post(
f"{API_BASE}/pipelines/feature-cluster/import",
json={"name": "Hotel Lobby Tour", "frameCount": len(list(FRAMES_DIR.glob('*.jpg')))},
headers=headers,
)
init.raise_for_status()
cluster_info = init.json()
upload_url = cluster_info["uploadUrl"]
cluster_id = cluster_info["clusterId"]

with ARCHIVE.open("rb") as src:
put = requests.put(upload_url, data=src, headers={"Content-Type": "application/zip"})
put.raise_for_status()

finalize = requests.post(
f"{API_BASE}/pipelines/feature-cluster/{cluster_id}/finalize",
json={},
headers=headers,
)
finalize.raise_for_status()
print(f"Feature cluster {cluster_id} ready")

Die API gibt eine clusterId zurück. Sie brauchen sie im nächsten Schritt.

Aus dem Cluster eine Karte machen​

import os
import requests

API_BASE = "https://api.arclip.app/vps/api/v3"
TOKEN = os.environ["ARCLIP_TOKEN"]
headers = {"Authorization": f"Bearer {TOKEN}"}

payload = {
"name": "Hotel Lobby Tour",
"dataType": "feature_cluster",
"clusterId": "cluster_abc123",
"publish": False
}

resp = requests.post(f"{API_BASE}/maps/import", json=payload, headers=headers)
resp.raise_for_status()
print(resp.json()["mapId"])

Ist die Verarbeitung fertig (Status READY), testen Sie die Route auf einem Smartphone mit dem SDK für iOS, Android oder Unity. Prüfen Sie, ob die Lokalisierung auf dem ganzen Rundgang stabil bleibt.

Tipps​

  • Gehen Sie in gleichmäßigem Tempo und vermeiden Sie abrupte Drehungen.
  • Sorgen Sie für gleichmäßiges Licht. Nehmen Sie Stellen mit ausgefressenen Lichtern neu auf.
  • Gehen Sie mindestens eine vollständige Runde und enden Sie dort, wo Sie begonnen haben.

Weiter: CAD- und BIM-Modelle – ein Gebäudemodell in eine Karte umwandeln.