メインコンテンツまでスキップ

CAD と BIM のモデル

建築用の 3D モデルや合成の 3D モデルを、AR Clip VPS のマップにします。建設、屋内ナビゲーション、デジタルツインに使えます。

ジオメトリーを準備する​

  1. CAD や BIM のモデルを、Blender、Unity などのツールに読み込みます。
  2. インスタンス化されたオブジェクトをまとめ、非表示のジオメトリーや不要なジオメトリーを削除します。
  3. 重要な特徴は残したまま、ポリゴン数を減らします。目安は 500 万トライアングル以下です。
  4. モデルをプレビューしたい場合は、UV を生成し、軽いテクスチャーをベイクします。

アンカーを計画する​

[
{ "name": "lobby", "position": [0.0, 0.0, 0.0] },
{ "name": "elevator_north", "position": [12.4, 0.0, 28.9] }
]
  • 座標の単位はメートルで、モデルの原点から測ります。
  • lobby や loading_dock のように、変わらない名前を付けましょう。SDK のコードでそのまま使えます。

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']}")
  • アンカーは最初のリクエストに含めることも、あとから POST /maps/{id}/anchors で追加することもできます。
  • モデルに地理座標が設定されている場合は、coordinate({"lat": ..., "lon": ..., "alt": ...})を追加します。

マップを確認する​

  • arclip.design でマップをプレビューし、必要に応じてアンカーのオフセットを調整します。
  • Unity SDK でローカライズをテストします。仮想のオブジェクトは、同じアンカー ID を使って位置を合わせます。
  • CAD のモデルが変わったら、もう一度インポートします。新しいマップを作る代わりに POST /maps/{id}/update を呼び出せば、mapId は変わりません。