Перейти к основному содержимому

Фотограмметрия (DSLR / беззеркалки)

Используйте этот процесс, когда снимаете фотографии на зеркалку, беззеркальную камеру или дрон и хотите превратить их в карту AR Clip VPS.

Как снимать

  • Добивайтесь перекрытия 70–80 % между соседними кадрами.
  • Снимайте с нескольких высот и включайте в кадр легко узнаваемые ориентиры.
  • Держите экспозицию постоянной, избегайте смаза.
  • По желанию: разложите наземные маркеры размером с QR-код, чтобы проверить масштаб.

Реконструкция

  1. Загрузите набор фотографий в Metashape, RealityCapture, Meshroom или свой любимый пакет для фотограмметрии.
  2. Выполните выравнивание и плотную реконструкцию.
  3. Экспортируйте получившееся облако точек в LAS/LAZ/PLY с цветовыми атрибутами. Держите разрешение текстур в разумных пределах (≤8K).

Загрузка через Python REST API

Приведённый ниже фрагмент повторяет процесс из arclip.design: запросить слот для загрузки, передать файл LAS/PLY потоком и финализировать карту, чтобы началась серверная обработка.

# upload_photogrammetry.py
from pathlib import Path
import os
import requests

API_BASE = "https://api.arclip.app/vps/api/v3"
TOKEN = os.environ["ARCLIP_TOKEN"] # создайте личный токен в arclip.design
DATA_PATH = Path("outputs/cathedral.las")

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

payload = {
"name": "Old Town Square",
"dataType": "point_cloud",
"sourceFormat": "las",
"coordinate": {"lat": 50.08746, "lon": 14.42125, "alt": 194.2}
}

init = requests.post(f"{API_BASE}/maps/import", json=payload, headers=headers)
init.raise_for_status()
info = init.json()
upload_url = info["uploadUrl"]
map_id = info["mapId"]

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

finalize = requests.post(f"{API_BASE}/maps/{map_id}/finalize", json={"publish": False}, headers=headers)
finalize.raise_for_status()
print(f"Map {map_id} queued → status: {finalize.json()['status']}")
  • ARCLIP_TOKEN — bearer-токен, создаваемый в Console → Settings → API tokens.
  • dataType и sourceFormat описывают содержимое, чтобы бэкенд выбрал правильный конвейер.
  • Поставьте publish в True, если хотите автоматически опубликовать карту после обработки; иначе сначала посмотрите её в Console.

Как следить за обработкой

import os
import requests

API_BASE = "https://api.arclip.app/vps/api/v3"
TOKEN = os.environ["ARCLIP_TOKEN"]
MAP_ID = "map_12345"

resp = requests.get(f"{API_BASE}/maps/{MAP_ID}", headers={"Authorization": f"Bearer {TOKEN}"})
resp.raise_for_status()
print(resp.json()["status"]) # например, PROCESSING → READY → PUBLISHED

Как только статус станет READY, откройте arclip.design → MapsPreview и осмотрите геометрию, тепловую карту и якоря. Если заметите дыры или зеркальную геометрию, повторите шаг фотограмметрии.