bb34641bfe
- sketch.html: 双击命名弹窗增加高度(m)输入和连通多选 - sketch.html: 新增defaultHeightForType()按画笔类型设默认高度 - sketch.html: 连通关系双向同步,JSON输出增加height_m/connections - sketch.html: restoreScene恢复新字段,保存/加载流程不受影响 - SKILL.md: 步骤3从vision分析PNG改为读取JSON结构化数据 - SKILL.md: 布局解读文档模板增加高度和连通列 - README.md: 画笔图例增加默认高度,更新JSON示例和AI流程说明 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5.6 KiB
5.6 KiB
name, description
| name | description |
|---|---|
| world-sketcher | 世界布局草图工具。当需要"画布局"、"世界草图"、"分析布局草图"、"layout sketch"、 "interpret sketch"、"world layout"、"世界布局"、"布局草图"时使用。 引导用户使用绘图工具画出世界布局,分析草图 PNG 产出结构化布局数据 Markdown, 作为关卡执行案的前置输入。 |
世界布局草图工具 (World Layout Sketcher)
三级层次化布局绘图 → AI 解读 → 结构化布局文档 → 关卡执行案前置输入
触发条件
- 用户主动触发:用户说"画布局"、"世界草图"、"layout sketch"、"world layout"等
- 策划关卡执行案前置:策划需要产出关卡执行案,但不存在对应的布局解读文档
- 用户提供草图分析:用户提供了草图 PNG 要求分析
工具位置
tools/world-sketcher/
sketch.html # 绘图工具(浏览器打开)
README.md # 使用说明、画笔图例
output/ # 草图输出目录
三级层次
| 层级 | 范围 | 绘制内容 |
|---|---|---|
| L1 场景总览 | ≤1km | 大区域、主干道、河流 |
| L2 区域详图 | ≤300m | 建筑、内部道路、绿化、水体 |
| L3 建筑内部 | 预留 | 拖放细节资产(未实现) |
画笔颜色 → 材质映射
| 画笔 | 颜色 | 地形 | UE 材质 | 默认高度 |
|---|---|---|---|---|
| 道路 Road | #909090 灰 |
道路 | MI_DevGray | — |
| 建筑 Building | #E07020 橙 |
建筑物 | MI_DevOrange | 3m |
| 水域 Water | #40A0D0 天蓝 |
河流/水塘 | MI_DevSkyBlue | — |
| 植被 Greenery | #40B040 绿 |
树木/草地 | MI_DevGreen | 2m |
| 不可通行 Blocked | #A07040 棕 |
山体/围墙 | MI_DevBrown | 3m |
| 区域 Zone | #D04040 红 |
区域划分 | MI_DevRed | 3m |
工作流
步骤 1:检查现有草图
检查 tools/world-sketcher/output/ 目录下是否有当前场景的草图文件。
- 如果存在:跳到步骤 3
- 如果不存在:进入步骤 2
步骤 2:引导用户绘图
- 告诉用户打开
tools/world-sketcher/sketch.html - 说明画笔含义:不同颜色代表不同地形类型
- 建议先画 L1 场景总览(大区域、主干道、河流),用区域画笔画出各区域轮廓
- 双击已画区域命名(如"城郊小街"),勾选"可进入"创建 L2 详图
- 进入 L2 后用建筑、道路等画笔细化区域内部
- 完成后点"保存全部",将文件保存到
output/目录
步骤 3:AI 读取布局数据
数据源以 JSON 为准,不依赖 PNG 像素分析。
- 读取 JSON 布局数据(
*-scene.json):elements(含height_m、connections)、regions(含bounds_world_m)、层级关系 - 交叉参考场景设计案
场景-v<XX>-<名称>.md的氛围描述,将 JSON 区域与场景设计案的区域描述建立映射 - 如需视觉确认,可参考预览 PNG(非必须,仅用于核对区域形状)
说明:PNG 文件仍保存在 ZIP 中用于保存/加载画布,但 AI 分析流程以结构化 JSON 为准。
步骤 4:产出布局解读文档
产出文件:docs/design/<场景名>-layout-v<XX>.md
文档结构:
# <场景名> 世界布局解读 v<XX>
> 基于 `tools/world-sketcher/output/` 中的草图分析产出。
## 草图参数
| 参数 | 值 |
|------|-----|
| 世界尺寸 | ... |
| 坐标系 | 原点西南角,X+东,Y+北 |
| 比例 | 1px = ... |
## L1 场景总览
### 识别区域
| 区域编号 | 名称 | 推测坐标范围 (cm) | 推测尺寸 | 地形类型 | 高度 (m) | 连通到 | 标识色建议 |
|---------|------|-------------------|---------|---------|---------|--------|-----------|
### 识别道路/河流
| 编号 | 名称 | 类型 | 走向 | 长度 |
### 区域连通关系
| 连接 | 方式 | 说明 |
## L2 区域详图(如有)
### <区域名>
| 编号 | 名称 | 类型 | 推测坐标 | 尺寸 | 高度 (m) | 连通到 |
## 待确认问题
1. ...
## 待细化项
- ...
数据来源说明:
- 区域坐标、尺寸:来自 JSON 中
regions[].bounds_world_m,乘以 100 转为 cm - 高度:来自 JSON 中
elements[].height_m,直接采用(无需 AI 推断) - 连通关系:来自 JSON 中
elements[].connections,直接采用(无需 AI 推断) - 地形类型和标识色:来自 JSON 中
elements[].type→ brush_legend 映射
步骤 5:用户确认
将解读文档呈现给用户,等待用户确认或修正。确认后,该文档作为关卡执行案的前置输入。
与关卡执行案的衔接
布局解读文档产出并经用户确认后,策划产出关卡执行案时:
- 区域坐标:直接采用解读文档中的推测坐标范围作为起点
- 区域连通:采用解读文档中的连通关系
- 标识色:采用解读文档中的标识色建议(与画笔颜色一致)
- 需细化:解读文档中"待细化项"的内容在执行案中必须给出精确数据
注意事项
- 画笔颜色是强制预定义的,不允许自由拾色,保证颜色→材质的映射一致
- 坐标系与
zone_config.py一致:原点西南角,X+ 东,Y+ 北,单位 cm - AI 解读时如有不确定之处,必须列入"待确认问题",不要自行假设
- L3 建筑内部本期不实现,仅预留
has_interior标记 - 高度 (
height_m):由用户在双击命名时输入,AI 直接采用,不做推断 - 连通关系 (
connections):由用户在双击命名时勾选,双向同步,AI 直接采用