关于 threejs-procedural-buildings-and-cities
threejs-procedural-buildings-and-cities 是一项用于在 Three.js 中规划、验证并编译程序化建筑与城市几何的技能。它强调确定性计划、明确的表面与放置归属,并依据可变性和规模选择几何组织方式。
主要功能
- 01生成确定性的建筑计划
- 02验证表面及立面放置
- 03按材质槽输出几何
- 04提供实例化、批处理与空间分页指引
- 05建筑 LOD 与编译检查
适用场景
- 01根据占地轮廓生成程序化建筑
- 02沿共用或受阻边界布置立面
- 03将重复模块编译为几何
- 04验证城市区块及城区级布局
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ linegel/ threejs-complete-set-of-skill --skill threejs-procedural-buildings-and-cities安装后在 Claude Code 中输入/threejs-procedural-buildings-and-cities确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEagents/openai.yamlreferences/grammar-and-mesh-compiler.mdscripts/deterministic-placement-key.mjs详细介绍
程序化建筑与城市
将建筑视为编译器:确定运行时包,生成并验证可序列化方案,然后输出几何体。方案负责建筑体量、外露表面、放置位置、材质槽位和稳定标识。
流程
-
根据可变性和重复程度选择运行时包。
工作负载 包 静态建筑或区块 每个材质槽位使用一个合并的索引 BufferGeometry可编辑的多样化模块 每个兼容材质槽位使用一个 BatchedMesh拓扑相同的重复对象 使用空间分页的 InstancedMesh区域级流式加载 使用带投影误差 LOD 的有界区块 在启用 WebGPU 功能门控之前初始化
WebGPURenderer。建筑规划可以保持 CPU 确定性;只有在测得城市规模的可见性或更新瓶颈后,才添加存储或计算功能。完成条件: 每个建筑元素都对应一个包,并且每个包都有明确的可变性、可见性和身份依据。
-
生成有效的建筑方案。 统一单位和设置,然后按体量算子流程执行:足迹部分 -> 合并/庭院扣除 -> 拉伸/堆叠 -> 内缩/拆分 -> 可选连接体。仅选择预先验证过的备选方案;为每个算子结果分配稳定 ID,并在执行下一个算子之前进行验证。实现这些算子时,请阅读 grammar-and-mesh-compiler.md。序列化足迹、体量、外露区间、放置位置、模块用量、所有权、材质槽位、UV 缩放和预算。
完成条件: 相同输入会复现相同的算子选择和 ID;每个算子输出都通过其拓扑/尺寸/所有权关卡;无需输出几何体即可诊断无效方案。
-
在放置立面之前解析外露边界。 根据垂直重叠部分,扣除共享或阻挡的侧面区域;高度不同的邻近建筑需要按高度带处理,而不是移除整个侧面。将正向保留跨度量化为有界的合法开间数量,并将立面、屋顶、饰条和转角的放置位置关联到这些表面区域。 实现足迹扣除、开间量化、放置所有权或模块局部坐标系时,请阅读 grammar-and-mesh-compiler.md。
完成条件: 没有立面区域位于其高度处的占用体量内部;每个合法区域都有声明的放置内容或语义留白;转角所有权明确无歧义。
-
闭合并验证方案。 为已验证的连接体添加可见封顶面、平台、檐底和封闭表面;通过模块注册表解析每个放置项;然后测试注册表完整性、所有权唯一性、一般重叠、绕序、边界、材质归属和 UV 密度。
对于异构场地组合,将领域资产交由各自所属的技能处理,并为每个废墟、码头、船只、岩石、植被簇或道具注册稳定的放置 ID、所有者、变换/坐标系/缩放、支撑体积与净空体积、锚点和 LOD 策略。应用 grammar-and-mesh-compiler.md 中的确定性异构场地放置规则。实现候选项身份、随机通道或阶段排序时,请导入 deterministic-placement-key.mjs。使用其自反比较器之前,先用
validateWinnerKeys()验证整个阶段的键唯一性。该辅助工具不负责支撑、净空、冲突检测或阶段准入;严格的局部胜出者并不是最大打包算法。光环范围需包含两个候选项的延伸范围。先放置地标,再处理通行、支撑和净空,最后添加重复细节。 完成条件: 每个放置都能解析,每个表面都只有一个所有者,重叠为空或经过明确许可,支撑/净空检查均通过,稳定 ID 的重放不受区块加载顺序和无关族群插入的影响,并且所有输出的几何体或委托生成的资产均可追溯到规划记录。 -
按材质槽和空间边界编译。 保持语义材质身份稳定,同时选择合并、批处理或实例化输出。在 Three.js r185 WebGPU 中,
BatchedMesh会遍历可见的多重绘制条目:它能改进对象和状态管理,但不能证明 GPU 绘制调用已合并。若需要合并绘制调用,请合并兼容的静态几何体,或对拓扑相同的几何体进行实例化。实现槽位写入器、分页、投影误差 LOD 或绘制调用计数时,请阅读 grammar-and-mesh-compiler.md。完成条件: 槽位成员关系完整,索引边界均为有限值,页面可独立剔除且已刷新变换/计数边界和上传标志,LOD 误差已按物理视口像素进行门控,并报告实际后端绘制项。
-
绑定材质并处理呈现。 为每个语义槽使用
MeshStandardNodeMaterial或MeshPhysicalNodeMaterial。保留物理纹理比例以及数据/颜色编码。将最终颜色交由场景唯一的RenderPipeline输出变换处理,然后释放被替换的几何体、批次、纹理和节点资源。完成条件: 平面材质、掠射光和最终输出在几何体与法线方面保持一致;输出转换由一个组件负责;替换和释放操作不会留下过时边界或未释放的资源。
-
验证编译器。 使用简单和复合占地、庭院、桥梁或连接结构(如支持)、最小合法跨度、密集放置、重复模块,以及跨多个种子的城区分页进行测试。检查轮廓、无纹理几何体、角部、开口、退界、屋顶和 LOD 过渡。
完成条件: 每个测试样例都有有效规划,不存在内部立面区间或放置重叠,注册表完整,重放具有确定性,边界和材质槽正确,UV 比例稳定,并且已测量三角形和绘制调用数量。
所有权边界
- 使用
$threejs-procedural-geometry处理可复用的轮廓、扫掠体、拱门、框架和底层网格写入器。 - 使用
$threejs-procedural-materials处理砌体、玻璃、金属、风化、过滤和材质场创作。 - 使用
$threejs-procedural-fields处理城市布局所使用的地形和地块场。 - 使用
$threejs-scalable-real-time-shadows、$threejs-image-pipeline和$threejs-visual-validation管理场景级阴影、输出和验证材料。
此技能负责建筑体量塑造、立面语义、建筑模块和场地放置、规划验证、材质槽编译以及建筑空间 LOD;委托技能仍负责非建筑资产的生成。