SuperAPI AI 工具集

godot-3d-world-building

编程与开发

查看项目

更新于 10-15 18:29

技能介绍

用途

本技能提供 Godot 引擎中 3D 世界搭建的专家指导,专注于关卡设计中的 GridMap、CSG 烘焙与遮挡剔除,不涉及光照与氛围创作。适用于构建 3D 关卡、模块化瓦片集或 BSP 风格几何体。触发关键词包括 GridMap、MeshLibrary、set_cell_item、get_cell_item、map_to_local、local_to_map、CSGCombiner3D、CSGBox3D、CSGSphere3D、CSGPolygon3D、OccluderInstance3D、bake CSG。

主要能力

技能覆盖以下核心能力:

  • GridMap 与 MeshLibrary:设置 cell_size、放置单元格、验证碰撞形状。
  • CSG 原型与烘焙:使用 CSGCombiner3D 进行布尔原型设计,然后安全烘焙为静态网格并添加碰撞。
  • 遮挡剔除与 LOD:室内房间使用 OccluderInstance3D,大型户外场景使用距离切换的 LOD 管理。
  • 运行时 GridMap 构建:批量瓦片放置、分块重建与自动导航烘焙。
  • 世界流式加载:使用 ResourceLoader 线程化请求实现无卡顿分块实例化。
  • 代理瓦片模式:用不可见代理瓦片标记生成点/触发器,在 _ready 时替换为逻辑场景。

使用方式

技能提供多个脚本,需在实现对应模式前阅读:

  • collision_gen.gd:从网格自动生成碰撞形状。
  • gridmap_runtime_builder.gd:运行时 GridMap 构建的唯一入口,用于批量放置、分块重建与自动导航烘焙。
  • csg_bake_tool.gd:编辑器脚本,将 CSG 几何烘焙为带材质和碰撞的静态网格。
  • safe_csg_baking.gd:安全 CSG 烘焙技术,等待帧结束再提取网格。
  • lod_manager.gd:基于相机距离的 LOD 切换。
  • occlusion_setup.gd:手动遮挡剔除配置。
  • grid_map_logic_manager.gd:代理瓦片模式实现。
  • world_streamer.gd:线程化分块加载队列。

黄金路径:

  1. 创建 MeshLibrary:源场景包含 MeshInstance3D 与 StaticBody3D/CollisionShape3D,转换为 MeshLibrary 后验证 get_item_shapes()。
  2. 设置 GridMap:一次性设置 cell_size,放置单元格,烘焙 NavigationRegion3D。运行时重建必须使用 gridmap_runtime_builder.gd。
  3. CSG 灰盒:用 CSGCombiner3D 原型,然后使用 safe_csg_baking.gd 或 csg_bake_tool.gd 烘焙,删除实时 CSG。
  4. 遮挡与 LOD:室内使用 occlusion_setup.gd,距离切换使用 lod_manager.gd。
  5. 天空/雾/WorldEnvironment 不在范围内,转向 godot-3d-lighting。

适用场景

  • 构建模块化 3D 关卡与瓦片集。
  • 使用 CSG 进行关卡原型设计并烘焙为最终几何。
  • 室内场景的遮挡剔除优化。
  • 大型户外场景的 LOD 与流式加载。
  • 程序化生成地牢或地形,将单元格写入 GridMap。
  • 开放世界、沙盒建造等需要分块流式加载的场景。

限制

  • GridMap 不会自动生成导航网格,必须手动烘焙。
  • CSG 仅用于原型,最终游戏几何应转换为静态网格。
  • 放置瓦片后不可更改 cell_size,否则导致错位。
  • MeshLibrary 条目必须验证碰撞,否则玩家会穿透。
  • CSG 烘焙前必须等待一帧,否则可能得到空或过时的网格数据。
  • 运行时不可动画 CSG 节点,否则性能显著下降。
  • GridMap 中不应放置通用逻辑节点,应使用代理瓦片。
  • CSG 不支持非流形网格。
  • 天空、雾、环境配方不在本技能范围。