技术美术 · 程序化内容生成
AIPCG · 文本驱动的 UE 场景生成工具
在 UE 编辑器面板写一句场景描述,生成地形分区、建筑布局与植被, 输出可继续用 PCG 图表调整的场景。大模型负责理解空间意图, Python 完成几何规划与质量检查,UE PCG 负责场景装配。
一句话架构
UE 编辑器面板(C++ / Slate)启动外部 Python 进程;Python 先调用模型得到 scene.json 与 layout.json, 再完成栅格化、建筑规划与地块修整并导出 CSV;最后通过编辑器内置 MCP 服务导入 DataTable、复制模板地图、执行三张 PCG 图并保存关卡。
| 使用入口 | UE 插件面板:多行提示词框、生成世界按钮、百分比进度与结果提示 |
| 输入 | 文字描述;显式指定时使用鸟瞰参考图;UE 中已有的建筑资产及其实测 Bounds |
| 场地规格 | 256 m × 256 m,以 1024 × 1024 像素表达道路、建筑用地、绿地与水体 |
| 中间数据 | scene.json、layout.json、四色 Mask、建筑 Transform、地形轮廓 CSV |
| 输出 | 地形与建筑 DataTable、分层地形网格、建筑实例、植被、完整生成记录 |
| 调整方式 | 改布局输入、改资产表、改 PCG 图表设置,再重新生成对应内容 |
| 适用范围 | 编辑器内的平面地块与村落生成;地形为二维轮廓加分层挤出 |
模型只处理语义,数值全部交给代码。
模型负责
代码负责
资产尺寸、Pivot、单位与轴向纳入同一套变换约定;规划图与 UE 实例消费同一份最终 CSV,避免预览与实际落位不一致。
在模型输出、建筑规划与 UE 导入之间保留互相独立的检查,可分别定位布局问题、几何问题与引擎装配问题。
保留请求、各轮候选布局、模型配置、调用回执、输入哈希与检查结果,能复原某一次生成用了什么输入、产出了什么。
九个阶段,每一步都有明确的输入与产物。实线为主数据流,右侧为该阶段的配置来源或回执。
Slate 多行提示词框 → 写入请求目录 → CreateProc 启动外部 Python;编辑器 Tick 轮询进度与结果文件。
读取提示词模板、输出 Schema 与运行配置;安排模型调用、候选检查、数据准备与 UE 导入,并持续写出进度与 manifest。
先把一句话补全为空间描述,再生成几何布局;通过 --output-schema 约束返回格式,默认 gpt-6-sol / 推理强度 medium。
scene.json:水体、组团、道路与绿地的空间描述。layout.json:组团多边形、道路控制点与全宽、河流中心线与左右半宽。
平滑曲线、变宽廊道、自交与容量检查;渲染 1024 × 1024 四色 Mask。检查不通过则把错误与上一版几何回传模型重试。
建设域 + 道路引导 + 资产实测 Bounds → 预留院落与接入通道 → 生成候选 → 加权贪心落位 → 导出建筑 CSV 与预留空间。
保护建筑足迹、院落、通道与容量见证,按实际落位修整建设域边界;提取轮廓与孔洞、平滑共享边界,导出七张输入 CSV。
导入 DataTable 并核对行数,复制模板地图,回读 PCG 图参数,依次执行地形 / 建筑 / 植被三张图。
保存地图,写出导入报告;重新加载地图后按固定 45° 相机截图,核对实例数量与图执行结果。
面板按 0.25 s 读取 progress.json 的百分比;result.json 状态为关卡就绪才算成功,各阶段耗时另存日志。
运行配置 + 提示词文档 + 输出 Schema 三者共同约束模型;布局候选默认最多 2 次,可配 1 至 5 次。
manifest 保留各轮候选、调用回执、输入与图像哈希、几何审计、导入报告与产物路径。
| 层 | 组件 | 职责 |
|---|---|---|
| 交互 | AIPCGEditor Editor 模块 / Slate |
面板 UI、启动编辑器 MCP 服务、启动与监控 Python 子进程、轮询进度与结果 |
| 语义 | 模型 CLI 非交互模式 |
描述补全、结构化布局输出、候选修正,以及可选的视觉审核 |
| 几何 | Python 管线 | 校验、栅格化、容量检查、建筑规划、地块修整、坐标转换、CSV 导出 |
| 引擎桥接 | MCP 客户端与导入器 | 通过编辑器 Toolset 导入表、管理地图、回读参数、执行 PCG 图 |
| 装配 | 三张 PCG 图 | 地形分层挤出、建筑实例化、植被散布与密度筛选 |
| 数据结构 | GeometryMetadata Runtime 模块 |
以 FTableRowBase 派生结构体定义地形轮廓行与建筑 Transform 行 |
生成请求目录,写入提示词文件,禁用按钮避免重复提交。
用引擎自带 python.exe 启动管线,附带结果、进度与耗时文件路径及 MCP 地址。
按固定间隔读取进度与结果文件,更新百分比与状态文本。
编辑器主线程不承担几何计算,面板保持可响应。
启动前检查:解释器与入口脚本是否存在、编辑器 MCP 服务是否在运行(未运行则自动启动并取实际端口)。
| 1 | 校验 manifest 状态,拒绝重复导入 |
| 2 | 导入七张 DataTable 并逐张核对行数 |
| 3 | 按高度阈值筛出高大植被,生成植被资产表 |
| 4 | 复制模板地图为本次关卡并加载 |
| 5 | 记录模板 PCG 体的变换,再删除模板体 |
| 6 | 依次生成实例 → 回读参数核对 → 执行三张图 |
| 7 | 按地表高度与实时 Mesh Bounds 回写建筑 Z |
| 8 | 保存关卡,状态改为关卡就绪 |
规划计算运行在外部解释器中,不受编辑器 Python 环境约束,也不阻塞主线程; 所有引擎副作用通过工具调用完成,便于逐步核对与写入报告。
进度单调不减;表导入阶段多张表共享同一区间,避免百分比回退。
颜色是数据编码,不是展示材质。四种基础颜色互斥,合成时按优先级覆盖,所以源几何必须单独检查。
| 颜色 | 含义 | 优先级 | 说明 |
|---|---|---|---|
| 蓝 | 水体 | 1 | 河流中心线加左右半宽,或闭合水面 |
| 黄 | 建筑组团 | 2 | 可建设域,不等于已有建筑 |
| 红 | 道路 | 3 | 控制点加全宽 |
| 绿 | 绿地 | 4 | 底色,承载植被散布 |
另有支路与中心绿地两个叠加通道,覆盖在建设用地底面上,用不同高度表达,不占用基础四色。
道路与河流的宽度语义不同,必须分开定义,否则下游会误用。
字段、类型与取值范围由 JSON Schema 约束;自交、面积、容量与真实资产落位由代码检查。
1 px = 25600 cm / 1024 = 25 cm WorldX = (PixelX - 512) × 25 WorldY = (PixelY - 512) × 25 图像向右 / 向下 = 世界 +X / +Y 建筑落位 World = 规划点 - R(yaw) · BoundsCenter.xy 初始高度 WorldZ = -BoundsMin.Z 导入后回写 Position.Z 以地表顶面与实时 Mesh Bounds 为基准
规划中的建筑落点代表 Bounds 中心,而 UE 实例使用 资产 Pivot。 写入实例前减去旋转后的局部 BoundsCenter,才能让规划图与引擎落位一致。 坐标适配器同时处理历史 Y 轴约定与轮廓绕序,建筑 yaw、足迹逆算和规划图沿用同一转换规则。
接地不靠固定偏移收尾:导入完成后按地形顶面与实时 Mesh Bounds 再回写一次 Z。 本批四个场景共 65 行建筑,全部只有 Z 发生变化,统一下移 80 cm 后贴合 20 cm 的地形顶面。
| 数据 | 关键字段 |
|---|---|
| 资产快照 | Mesh、BoundsMin / Max / Size / Center、Pivot 相对 Bounds 中心的偏移 |
| 建筑 CSV | BuildingIndex、AssetKey、Mesh、PixelX / Y、WorldX / Y / Z、Yaw、Scale |
| 地形轮廓表 | Layer、RingId、HoleIndex(外环 −1)、VertexIndex、Position |
| manifest | 输入与产物路径、哈希、运行配置、各轮候选、检查项、耗时、状态 |
规划预览图由最终建筑 CSV 重绘,UE 导入同一批 CSV。 两边不各算一次,避免出现“图上没问题、场景里重叠”的情况。
导入时按 RingId / HoleIndex 区分外环与孔洞, 按 VertexIndex 恢复顶点顺序。相邻层的公共边界先做同步平滑, 再按层分别挤出,避免出现缝隙或穿插。
| 通道 | Z 偏移 | 挤出 | 顶面 | 材质取向 |
|---|---|---|---|---|
| 道路 | 0 | 20 | 20 | 石板 / 碎石 |
| 建筑用地 | 0 | 20 | 20 | 草地 A1 |
| 绿地 | −100 | 115 | 15 | 草地 A |
| 水体 | −100 | 1 | −99 | 河流水体 |
| 支路 | 0 | 30 | 30 | 石板 / 碎石 |
| 中心绿地 | 0 | 40 | 40 | 草地 A |
地形 · 分层轮廓表 → 按环分组排序 → 带洞多边形 → 挤出子图。可调区域数据、高度与材质。
建筑 · Mesh 与最终 Transform → 直接实例化。图里不做任何规划,点数据自带位置、旋转与缩放。
植被 · 区域表 → 带洞多边形 → 表面采样 → 团簇噪声 → 密度筛选 → 随机资产与随机变换。
| 外围绿地密度 | 0.80 | 团簇强度 | 0.65 |
| 缩放区间 | 0.4 – 1.0 | 中心绿地密度 | 0.20 |
| 宅间树密度 | 0.08 | 宅间树净距 | 6 |
| 冠幅半径 | 290 cm | 接地基准 | 20 cm |
宅间树按建筑足迹与冠幅生成排除区,避免树冠穿进屋顶;高大植被按 Bounds 高度阈值单独成表。
| 现象 | 优先核对 |
|---|---|
| 规划图与 UE 出现镜像或偏移 | 像素到世界换算、相机方向、yaw 与 Pivot 补偿 |
| 图上可放置,UE 中重叠 | 资产 Bounds 快照、最终 CSV、实例 Transform 与连续几何审计 |
| 地形孔洞或轮廓连接异常 | RingId / HoleIndex 分组、VertexIndex 顺序与闭合环 |
| 生成提前结束 | manifest 中的调用返回码、候选布局、几何错误与重试次数 |
方法为 语义槽位生成 + 按尺寸配比加权的约束贪心放置。 把尺寸、临街、院落与占用关系拆成可单独检查的规则,再用独立几何审计复核结果。 建筑全部使用资产原始尺寸,scale = 1.0。
对黄色建设域做四邻域连通域标记得到组团,从边界起多源 BFS 计算内部深度,取较深点作为院落中心。
在组团内部留出院落,并开出通向最近道路的接入通道;预留空间先写入占用掩码,建筑候选必须避让。
按资产 XY 面积等数量三分位分成小 / 中 / 大三档,每档取面积接近该档中位数的代表资产。
沿临街边界与院落四周生成槽位,继承引导方向;槽位与候选资产组合后计算建筑中心与旋转角。
按“已放数量 / 目标权重”选进度最小的档;档内临街优先、重复次数少的资产优先;接受第一个不冲突的候选并更新占用。
从资产 Bounds 与最终 Transform 重建足迹,用 SAT 检查相交、用点到线段距离检查净距,与放置时的栅格判定互相独立。
目标权重 小 : 中 : 大 = 1 : 2.5 : 1 进度 = 已放置数量 / 该档权重 每轮取进度最小且候选池非空的一档
这是调度偏好,不是硬约束:某档没有可行候选时,调度无法创造新位置。
放置用位掩码做栅格占用判定,建筑每侧预留 50 cm, 对应相邻建筑至少 100 cm 净距。
离散精度下的判定可能与连续几何有差异,所以旋转后的最终变换必须再做一次连续复核。
默认随机种子 17。冻结布局输入、资产快照、种子与代码版本后, 算法阶段可复算;模型重新生成的布局单独记录。
| 场景 | 组团 | 槽位 | 初始候选 小 / 中 / 大 | 落位 | 实际档位 小 / 中 / 大 | 配比总偏差 |
|---|---|---|---|---|---|---|
| 河畔市集 | 4 | 358 | 733 / 413 / 135 | 16 | 5 / 9 / 2 | 9.7 pp |
| 海湾渔村 | 4 | 300 | 504 / 308 / 42 | 14 | 5 / 8 / 1 | 15.1 pp |
| 温泉宿场 | 4 | 257 | 437 / 215 / 13 | 15 | 7 / 7 / 1 | 24.4 pp |
| 运河商港 | 5 | 350 | 814 / 607 / 110 | 20 | 7 / 10 / 3 | 12.8 pp |
贪心只检查当前选择是否可行,不比较后续组合收益:若一个沿街段先放下一栋大建筑, 之后发现换成两栋小建筑更合适,程序不会撤回。当前没有全局评分函数,也没有回溯与交换机制; 早期选择可能把后续空间切碎。代价是可解释性与检查成本都很低,而且每一步都能留下审计记录。
| 算法 | 解决的问题 | 实现时关注的边界 |
|---|---|---|
| 向心 Catmull–Rom | 把道路与河流控制点连成平滑中心线 | 控制点间距、转弯半径与曲率;长直段会被判为不自然 |
| Chaikin 角切割 | 平滑组团闭合轮廓 | 平滑后的面积与可建容量会变化,需要重新测量 |
| 扫描线填充 + 奇偶规则 | 把多边形转换为地形 Mask | 外环、孔洞与边界像素的归属 |
| 四邻域连通域标记 | 识别独立建筑组团 | 窄连接会把两片地连成一组,或被拆成两组 |
| 多源 BFS | 计算地块内部深度,辅助安排院落 | 得到的是栅格路径距离,不是欧氏距离 |
| 变宽廊道构造 | 从中心线与左右半宽生成河岸 | 宽度突变、自交、急弯与画布边界开口 |
| 共享边界 Laplacian 平滑 | 同步移动相邻地形层的公共边界 | 限制总位移,平滑后重新测面积与容量 |
| 分离轴定理(SAT) | 复核旋转矩形足迹是否相交 | 连续几何判定,不受栅格精度影响 |
| 点到线段距离 | 测量建筑之间的实际净距 | 与相交判定互补,用来验证 100 cm 要求 |
| 位掩码占用 | 候选冲突与越界的快速判定 | 离散精度;需要连续几何二次确认 |
只移动两层之间的公共边界 迭代 16 次 · 强度 0.5 单点总位移上限 50 cm
相邻层各自平滑会产生缝隙或重叠,所以把公共边界当成一条共享折线统一处理, 再把结果写回两层,并限制位移避免破坏已验证的容量。
固定四色地形与建筑占用用 bytearray、整数位运算与标准库实现, 不引入 NumPy、OpenCV 或 Shapely。
动机是部署与调试便利:引擎自带的解释器无需额外装包即可运行。 代价是尚未与成熟几何库做系统性能对照,若后续迁到大世界分区,这一取舍需要重新评估。
每一步都把“看起来对”换成“能测量”:曲线是否过直有偏差阈值,组团是否够用有试排见证, 建筑是否冲突有净距数值。
| 检查层 | 检查内容 | 仍需关注 |
|---|---|---|
| 布局源几何 | 自交、区域冲突、廊道宽度变化下限、长直段偏差、锚点间距、水体面积、组团容量 | 最终四色图会按合成优先级覆盖,源几何必须单独检查 |
| 容量试排 | 每个组团能否放下三栋原尺寸小建筑(0° / 90° 有界搜索,每侧留 50 cm),并保留落位见证 | 正式规划还要预留院落与通道,实际栋数会少于试排上限 |
| 候选占用 | 离散位掩码判定越界、与已放建筑冲突、侵入预留空间 | 旋转后的最终变换需要连续几何复核 |
| CSV 独立审计 | 从资产 Bounds 与最终 Transform 重建二维足迹,SAT 检查相交,点到线段距离检查净距 | 门向、入口可达性与三维接地需要另行验证 |
| UE 回读 | 七张表行数核对、PCG 图参数回读、128 × 128 采样检查覆盖与缝隙、保存后重新加载再截图核对实例数 | 最终视觉质量仍需结合截图人工判断 |
按输出 Schema 返回组团、道路与水体几何。
先尝试自动修复:去除重复锚点、在小位移范围内打弯过直的廊道。
栅格化并执行水体面积、组团容量与面积占比检查。
写出布局与审计文件,继续几何与引擎阶段。
把上一版几何与具体错误写进下一轮指令;次数用尽则记录失败原因并结束。
模型调用本身失败(进程错误)不计入几何重试,会直接结束本次运行, 以便区分“调用失败”与“几何不合格”。
文件生成、几何通过、UE 回读与人工视觉认可是四件事。 当前默认运行在 preview 模式、视觉审核关闭, 因此可以产出完整关卡但仍标记为“未验收”,不把保存成功当成质量达标。
运河商港第一轮候选中,沿河店铺组团过于狭长, 三栋原尺寸小建筑的有界搜索失败。
错误连同上一版几何回传后,第二轮加宽该组团并通过,最终落位 20 栋。 这条布局是模型两轮候选的结果。
河畔市集的河流中心线出现长直段,采样点偏差约 1.8 px, 低于“自然河道”的阈值。
修整在锚点位移不超过 4 px 的范围内自动打弯,无需重新调用模型; 同一轮还清理了一条道路上的重复锚点。
早期一次运行的两轮候选分别因“长直段偏差不足”与“锚点过密、缺少宽缓弯”被拒绝。
重试次数用尽后运行以失败结束,并保留两轮候选与各自原因, 可以直接定位是提示词约束不足还是检查过严。
模型可以给出看起来合理的布局,但未必能放下真实尺寸的资产。 把“组团够不够用”变成一次带落位见证的试排,把“建筑有没有撞上”变成可测量的净距数值, 失败就能在布局阶段被拦住,而不是等到 UE 里看见穿模再回头找原因。
原神风格化展示 · 基于 UE 45° 鸟瞰截图制作
河流自左下进入、向东北斜穿场地,中段向南形成宽缓主弯,从右侧中上部流出。 北岸中央偏北为面积最大的市集组团,西北一片住宅,东北沿岸一片狭长码头仓储; 南岸东南一片较小的码头住宅。北岸东西向主街串联各组入口,市集向北有路通画布顶边, 南岸道路沿岸向东离开。外围连片林地,保留市集公共留白与连续临街肌理。
原神风格化展示 · 基于 UE 45° 鸟瞰截图制作
东侧为连续海湾水面,岸线自顶边中部向右下弧形延伸,形成向西凹入的大湾, 南段有一处岩石岬角向海突出。水体以闭合水面表达,在顶、右、底边保持开放,不画河流。 临湾中部为面积最大的渔市组团并保留开阔公共空间;西北与西侧中部各一片住宅, 南部岬角内侧一片小型渔屋。沿岸主路由北向南串联各组入口,另一条路从渔市西侧离开画布。
原神风格化展示 · 基于 UE 45° 鸟瞰截图制作
北部一条河流自左上进入、向东蜿蜒流经上部,从右侧中上部流出,两侧半宽在原方案基础上整体加宽。 中部偏南一条东西向宽主街贯穿画布。主街与河流之间为面积最大的旅店组团, 中部保留开阔的温泉公共庭院;主街南侧一大一小两片商铺,西南一片小民居。 各组沿主街展开,轮廓带肩部与凹湾,主次分明;外围为竹林与树林绿地。
原神风格化展示 · 基于 UE 45° 鸟瞰截图制作
顶边为横贯场地的港池,中右侧一条近直的人工运河向南伸至约四分之三处收头; 港池与运河盆地合为一个连续水面并保留人工水岸。运河西侧一条南北向石板主街自底边进入、 北端停在港池岸前;街西三片大小不同的商铺住宅,街与运河之间一片狭长沿河店铺, 东岸一片最大的仓储码头组团,东岸道路自南绕至其东侧。外围水田与林地归为绿地。
本场景的布局是模型两轮候选的结果:第一轮沿河店铺组团未通过三栋容量检查, 错误回传后第二轮加宽该组团并通过。它同时是四个场景中组团占比与足迹占比最高的一例。
| 场景 | 组团 | 建筑 | 组团占比 | 水面占比 | 最小净距 | 足迹占比 | 含间距环 | 植被实例 | 表行数 |
|---|---|---|---|---|---|---|---|---|---|
| 河畔市集 | 4 | 16 | 30.8% | 12.7% | 141.5 cm | 37.0% | 41.6% | 852 | 14 414 |
| 海湾渔村 | 4 | 14 | 28.2% | 23.1% | 201.3 cm | 29.6% | 33.5% | 734 | 13 852 |
| 温泉宿场 | 4 | 15 | 28.2% | 6.5% | 123.2 cm | 30.0% | 34.1% | 1 012 | 7 255 |
| 运河商港 | 5 | 20 | 38.1% | 20.8% | 142.8 cm | 40.0% | 44.8% | 643 | 6 410 |
| 合计 / 区间 | 17 | 65 | 28 – 38% | 6 – 23% | ≥ 123 cm | 30 – 40% | 34 – 45% | 3 241 | 41 931 |
模型重新生成不保证得到相同布局,所以可复算范围从“冻结布局之后”开始。 本批四个场景即以最终布局为固定输入,重新执行了栅格化、建筑规划、地块修整、 数据导出与 UE 生成全过程,用来验证管线后段的稳定性。
任何一次生成都能回答三个问题:用了什么输入、哪一步被拒绝过、最终场景与规划是否同源。
四个阶段的主线是把人工往返逐步换成可检查的数据交接。每一版都先打通链路,再收紧约定。
阶段目标:跑通资产数据、空间规划与引擎实例之间的交接。
这一阶段必须先把数据协议说清楚:资产标识、位置、旋转、缩放、单位与坐标轴。 Houdini 默认米、Y 向上、右手坐标,UE 用厘米、Z 向上、左手坐标; 官方插件提供转换,但自定义 CSV 交接要自己实现并避免重复转换。
单位与轴向的转换约定、以真实 Bounds 参与规划的思路,被后续版本完整继承。 该路线保留为历史方案,正式入口已转为 Python 与 UE PCG。
阶段目标:把日常生成集中到 Python 与 UE PCG,减少工具之间的往返。
| 环节 | Python 的工作 | UE 的工作 |
|---|---|---|
| 地形 | 解析语义区域、提取轮廓与孔洞、平滑边界、导出 CSV | 读表构造带洞多边形并生成分层网格 |
| 建筑 | 用真实 Bounds 生成候选,计算位置 / 旋转 / 缩放 | 按最终变换生成实例 |
| 植被 | 提供可散布区域与通道数据 | 区域采样、筛选并生成植被 |
轮廓、孔洞、共享边界与几何健壮性从此由项目代码负责, 不再依赖成熟工具的内部实现。好处是链路可控,代价是边界情况要自己兜住。
阶段目标:打通从原画到 UE 单体资产的自动化流程。
这一阶段把图像生成、资产识别、三维生成与引擎导入串成一条数据链; 导入后的尺寸归一化,让新资产能按统一尺度参与后续场景组合。
属于资产侧的并行探索。新生成资产要先通过单位、Pivot、朝向、材质与碰撞检查, 才能进入资产表与 PCG 流程。
阶段目标:由 Python 直接调度单个 Agent 执行具体任务,而不是让模型驱动整条流程。
| 任务 | 输入 | 输出与后续处理 |
|---|---|---|
| 描述补全 | 一句场景提示词 | 水体、组团、道路与绿地的空间描述 |
| 布局生成 | 补全后的描述与布局规范 | 多边形、控制点与宽度等几何数据 |
| 布局修正 | 上一版几何与检查错误 | 新候选,重新执行几何检查 |
| 视觉审核 | 参考图与四色图(可选) | 空间关系反馈;当前默认关闭 |
模型只产出结构化数据,不生成代码、不直接操作引擎。 调度、检查与引擎副作用全部留在代码侧,失败点因此可定位、可复算。
支持美术手绘 Mask 直接指定道路、建筑用地、绿地与水体; 统一图层颜色、分辨率与世界坐标,支持锁定已确认区域、局部重生成与人工修改后继续生成。 模型只补未明确的空间关系,算法负责细化排布。
把布局规划、工具执行与视觉审核拆成不同职责,共享同一份场景数据、修改记录与检查报告。 审核结合多角度截图与几何结果输出问题位置与修正建议,几何约束继续由代码复核。
从单块 256 m 场地扩展到分区生成:先规划全局道路、水系与区域关系,再按分区生成内容。 重点处理跨分区边界衔接、稳定区域标识、局部重生成与资源预算。
从建筑外部排布延伸到室内:房间划分、门窗与通道连接、家具布置。 以房间关系和通行需求约束布局,检查碰撞、通行宽度、入口可达性与物体贴合。
研究 PCG 的节点输入输出、属性传递与执行机制, 把 Mask 处理、区域划分、建筑落位与质量检查提炼为自定义节点或子图, 统一参数与调试信息;再按耗时分析决定哪些计算值得迁到 C++。
把生成能力封装为可调用工具与参数化模板,围绕 “生成草案 → 人工编辑 → 局部修改 → 测试与回滚 → 交付”组织工作流, 让创作者能持续修改与复用生成结果,并明确资产依赖与性能预算。
结论一
把大模型限制在“输出结构化空间意图”这一件事上, 再用几何代码兜住全部数值约束,是目前更稳的分工方式。
结论二
生成质量的关键不在模型,而在能不能把“好看”翻译成可测量的检查项, 并让失败在尽量早的阶段被拦住。
结论三
跨工具链路的真正成本在数据协议:单位、轴向、Pivot 与绕序一旦定清楚, 后面的工具就可以替换。