# 自作部品の取り込み（実装仕様 v0.1）

architecture/TOWN_PART_SPEC.mdの草案をもとに、完成版1では次の範囲を実装しています。architecture側の仕様書は変更していません。

- 「自分の部品をいれる」でpart.jsonとmodel.glbを同時に選択します。フォルダ・ZIP取り込みは未対応。
- 同じフォルダ内のGLBファイル名をmodelに記載します。サブフォルダ参照は今回未対応。
- specVersionは文字列0.1。単位m、右手座標系、Y上、＋Z正面、敷地中心が原点、モデルの底面はY=0。
- id・name・category・model・dimensions・siteが必須です。入口は省略可。黄色い目印で表示します。
- GLB 2.0の標準メッシュ。画像とバッファはGLB内部に埋め込んでください。外部URL、外部画像、必須拡張（圧縮など）は拒否します。
- 初期の動作上限：GLB30MB、JSON256KB、敷地幅・奥行き・モデル高さ240m以下。端末での快適さを保証する数値ではありません。
- モデルは敷地内に収めます。寸法の照合は5%または0.2m、接地は0.2mの許容差。自動拡縮はしません。
- 同じIDの部品の上書きは未対応。更新時は別IDで取り込んでください。
- thumbnailは表示に使用せず、共通アイコンを表示します。
- 配置は10m単位、回転は90度単位。矩形敷地同士の重なりを防ぎます。橋は水路込みの標準部品で、川の上への重ね置きはまだできません。
- 広域道路への接続・入口までの経路・水流は自動シミュレーションしません。近くの道の有無だけを気づきの文章に使います。

## architecture側で最初に確認すること

単純な建物1棟でGLBとJSONを書き出し、取り込み・実寸・正面・接地・入口を確認してください。図面の寸法や用途が不明な場合は推定として扱い、確定値と区別してください。

共通仕様の例：

```json
{"specVersion":"0.1","id":"my-building","name":"わたしの建物","category":"building","model":"model.glb","dimensions":{"width":20,"depth":16,"height":8},"site":{"width":26,"depth":24},"entrances":[{"id":"main","position":[0,0,8],"direction":[0,0,1]}]}
```

## 保存

街のJSONには配置と使用した自作GLBを含めます。BIMの元データは含めません。「街をひらく」で戻せます。自動保存はありません。読込上限は100MB・500配置・50自作部品です。未使用の自作部品は街ファイルに含まれません。
