用途
本技能提供 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:线程化分块加载队列。
黄金路径:
- 创建 MeshLibrary:源场景包含 MeshInstance3D 与 StaticBody3D/CollisionShape3D,转换为 MeshLibrary 后验证
get_item_shapes()。 - 设置 GridMap:一次性设置 cell_size,放置单元格,烘焙 NavigationRegion3D。运行时重建必须使用
gridmap_runtime_builder.gd。 - CSG 灰盒:用 CSGCombiner3D 原型,然后使用
safe_csg_baking.gd或csg_bake_tool.gd烘焙,删除实时 CSG。 - 遮挡与 LOD:室内使用
occlusion_setup.gd,距离切换使用lod_manager.gd。 - 天空/雾/WorldEnvironment 不在范围内,转向 godot-3d-lighting。
适用场景
- 构建模块化 3D 关卡与瓦片集。
- 使用 CSG 进行关卡原型设计并烘焙为最终几何。
- 室内场景的遮挡剔除优化。
- 大型户外场景的 LOD 与流式加载。
- 程序化生成地牢或地形,将单元格写入 GridMap。
- 开放世界、沙盒建造等需要分块流式加载的场景。
限制
- GridMap 不会自动生成导航网格,必须手动烘焙。
- CSG 仅用于原型,最终游戏几何应转换为静态网格。
- 放置瓦片后不可更改 cell_size,否则导致错位。
- MeshLibrary 条目必须验证碰撞,否则玩家会穿透。
- CSG 烘焙前必须等待一帧,否则可能得到空或过时的网格数据。
- 运行时不可动画 CSG 节点,否则性能显著下降。
- GridMap 中不应放置通用逻辑节点,应使用代理瓦片。
- CSG 不支持非流形网格。
- 天空、雾、环境配方不在本技能范围。