CAD / BIM / синтетика
Преобразуйте архитектурные модели и синтетические сцены в карты WebAR³ VPS для стройки, навигации или digital twin-сценариев.
Подготовка
- Импортируйте модель в Blender/Unity, схлопните инстансы, уберите скрытую геометрию.
- Снизьте количество полигонов до разумного уровня (≤ 5 млн).
- Сгенерируйте UV и при необходимости лёгкие текстуры для предпросмотра.
Пример файла якорей:
[
{ "name": "lobby", "position": [0.0, 0.0, 0.0] },
{ "name": "elevator_north", "position": [12.4, 0.0, 28.9] }
]
Загрузка через Python REST API
# upload_cad.py
from pathlib import Path
import json
import os
import requests
API_BASE = "https://was-vps.web-ar.xyz/vps/api/v3"
TOKEN = os.environ["WEBAR3_TOKEN"]
MODEL = Path("exports/mall.glb")
ANCHORS = Path("exports/anchors.json")
headers = {"Authorization": f"Bearer {TOKEN}"}
payload = {
"name": "Цифровой твин ТРЦ",
"dataType": "mesh",
"sourceFormat": "glb",
"anchors": json.loads(ANCHORS.read_text()),
"publish": False
}
init = requests.post(f"{API_BASE}/maps/import", json=payload, headers=headers)
init.raise_for_status()
info = init.json()
map_id, upload_url = info["mapId"], info["uploadUrl"]
with MODEL.open("rb") as src:
put = requests.put(upload_url, data=src, headers={"Content-Type": "model/gltf-binary"})
put.raise_for_status()
finalize = requests.post(f"{API_BASE}/maps/{map_id}/finalize", json={}, headers=headers)
finalize.raise_for_status()
print(f"Карта {map_id} поставлена в очередь → {finalize.json()['status']}")
- Анкоры можно передать сразу или позднее через
POST /maps/{id}/anchors. - Геопривязку добавляйте через
coordinate(lat/lon/alt), если модель привязана к местности.
Валидация
- Проверьте карту в space.web-ar.studio (геометрию, тепловую карту, якоря).
- Согласуйте виртуальные объекты в Unity SDK, используя те же ID якорей.
- При обновлении CAD-модели используйте
POST /maps/{id}/update, чтобы сохранить опубликованные идентификаторы.