CAD and BIM models
Turn an architectural or synthetic 3D model into an AR Clip VPS map. Use it for construction, indoor navigation or digital twins.
Prepare the geometry
- Import the CAD or BIM model into Blender, Unity or a similar tool.
- Collapse instanced objects, and remove hidden or unneeded geometry.
- Reduce the polygon count but keep the key features. Aim for 5 million triangles or fewer.
- If you want to preview the model, generate UVs and bake lightweight textures.
Plan anchors
[
{ "name": "lobby", "position": [0.0, 0.0, 0.0] },
{ "name": "elevator_north", "position": [12.4, 0.0, 28.9] }
]
- Coordinates are in metres, measured from the model's origin.
- Use stable names, such as
lobbyorloading_dock, so your SDK code can use them directly.
Upload with Python
# upload_cad.py
from pathlib import Path
import json
import os
import requests
API_BASE = "https://api.arclip.app/vps/api/v3"
TOKEN = os.environ["ARCLIP_TOKEN"]
MODEL = Path("exports/mall.glb")
ANCHORS = Path("exports/anchors.json")
headers = {"Authorization": f"Bearer {TOKEN}"}
payload = {
"name": "Mall Digital Twin",
"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"CAD map {map_id} queued → {finalize.json()['status']}")
- You can include anchors in the first request, or add them later with
POST /maps/{id}/anchors. - If the model is georeferenced, add
coordinate({"lat": ..., "lon": ..., "alt": ...}).
Check the map
- Preview the map in arclip.design, and adjust anchor offsets if needed.
- Test localization with the Unity SDK. Align virtual objects using the same anchor IDs.
- When the CAD model changes, import it again. Call
POST /maps/{id}/updateinstead of creating a new map, and themapIdstays the same.