了解。
ここからは Structure Layer(構造レイヤー)の「部屋グラフ仕様」を、OS 設計として破綻なく・拡張性最大で・Roblox との連携に最適化した形で“完全定義” していくね。
あなたの 意味 → 構造 → 幾何 → 表示 の OS パイプラインに合わせて、Structure Layer は “意味を構造に変換する心臓部” だから、ここを丁寧に設計すると後が全部スムーズになる。
🧩 Structure Layer:部屋グラフ仕様(完全版)
Structure Layer の中心は RoomGraph(部屋グラフ)。
これは「部屋=ノード」「接続=エッジ」で表現される。
以下は 最適な JSON 仕様。
🟦 1. RoomGraph 全体構造
{
"floors": 2,
"rooms": [...],
"connections": [...],
"stairs": [...],
"openings": {
"doors": [...],
"windows": [...]
},
"constraints": {...}
}
🟩 2. rooms(部屋ノード)仕様
部屋は 意味の残滓を持ちながら、構造として確定した状態。
{
"id": "r1",
"name": "living_room",
"purpose": "living",
"floor": 1,
"bounds": {
"x": 0,
"y": 0,
"width": 6,
"depth": 4,
"height": 3
},
"portals": {
"doors": ["d1", "d2"],
"windows": ["w1"]
}
}
✔ ポイント
- bounds は Structure Layer で確定(Geometry では座標化される)
- portals は部屋に属するドア・窓の ID
- purpose は Meaning Layer の名残(後で消える)
🟧 3. connections(部屋間エッジ)仕様
部屋同士の接続(廊下・ドア・開口部)を表す。
{
"from": "r1",
"to": "r2",
"type": "door",
"door_id": "d1"
}
✔ type の種類
"door""open_space"(リビングとダイニングのような仕切りなし)"stairs"(階段で接続)
🟫 4. stairs(階段ノード)仕様
階段は部屋とは別ノードとして扱う。
{
"id": "s1",
"floor_from": 1,
"floor_to": 2,
"position": [3, 4],
"size": [2, 1],
"connects": ["r1", "r3"]
}
🟨 5. openings(ドア・窓)仕様
🔹 doors(ドア)
{
"id": "d1",
"room_a": "r1",
"room_b": "r2",
"wall": "north",
"offset": 2.0,
"width": 1.0,
"height": 2.0
}
🔹 windows(窓)
{
"id": "w1",
"room": "r1",
"direction": "south",
"offset": 3.0,
"width": 2.0,
"height": 1.2
}
🟪 6. constraints(構造制約)仕様
Meaning Layer の意図を Structure Layer に持ち込む部分。
{
"max_width": 12,
"max_depth": 10,
"entrance_direction": "south",
"stairs_required": true
}
🧭 Structure Layer の役割まとめ
Structure Layer は 意味を構造に変換する“中間 OS”。
- 部屋の用途 → 部屋ノード
- 部屋の関係 → グラフ
- 日当たり → 窓の方向
- 動線 → connections
- 階数 → stairs
- 制約 → constraints
- 外観 → 内部構造から導出(まだ生成しない)
Roblox に渡す前の 最も重要なレイヤー。
🔥 あなたのプロジェクトに最適化された最終仕様
Meaning → Structure → Geometry → Render
このうち Structure Layer は:
- 部屋ノード
- 接続エッジ
- 階段ノード
- ドア・窓ノード
- 制約
- 外壁の導出前の内部構造
これらをすべて JSON で表現する。
🌱 次に進むなら…
どれを深掘りする?
- 外壁(外観)を Structure Layer から導出するアルゴリズム
- 部屋グラフの自動生成ロジック(Python)
- Flask API の設計(/generateStructure)
- Roblox 側の HttpService 受信コード
- Geometry Layer の座標生成アルゴリズム
どこからでも進められるよ。