Godot 3D 场景基础
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/godot-3d-essentials-rweg。
技能介绍
要解决的问题
新建的 Godot 4.3+ 3D 场景常常是一团乱麻:场景树里没有相机,画面全黑;灯光忘了加,材质等于白设;GridMap 摆了半天格子里什么都没有。Godot3dessentials 把「从零拼出一个能渲染、能看、能摆关卡的 3D 场景」拆成一条可照做的主线,覆盖变换、相机、灯光、WorldEnvironment、材质与网格块体化。
技能如何工作
核心思路是一条六步流水线:
- 一切 3D 都是 Node3D:靠
Transform3D(position / rotation basis / scale)定位,移动用global_position,旋转用rotate_y(angle)或look_at(target)。 - 先放 Camera3D:标记 current(或调用
make_current()),设好 fov / near / far;要跟随或环绕就把它挂到 rig 父节点上。 - 再补光:
DirectionalLight3D当太阳,OmniLight3D/SpotLight3D做局部光源,逐个开阴影。 - 接着上
WorldEnvironment:挂一个Environment资源,配背景(天空或纯色)、环境光、色调映射与后处理(glow、SSAO、雾、adjust)。 - 给网格贴材质:在
MeshInstance3D上用StandardMaterial3D或ShaderMaterial。 - 用
GridMap块体化关卡:它相当于 3D 版 tilemap,在网格上投放MeshLibrary里的物件。
同时内置四种代码模式:第三人称平滑跟随相机、代码里搭太阳与环境、代码里赋值 StandardMaterial3D、向 GridMap 填格子。
适用边界与坑
它只负责「搭场景」,不越界:空间着色器交给 godot-shaders,3D 物理体与 raycast 交给 godot-physics,角色动画混合交给 godot-animation,完整 FPS 模板交给 fps-shooter。
几个高频踩坑:
- 画面全黑:缺光又缺环境光。新场景默认两者都没有,必须加
DirectionalLight3D和/或带 ambient/sky 的WorldEnvironment。 - 什么都不显示:没有当前相机。同一视口只有一个相机会渲染,记得
current = true。 - 局部与全局变换混用:
position相对父节点,global_position是世界空间;父节点有旋转时结果会很奇怪,而look_at用的是全局坐标。 - 非等比缩放:会让子级碰撞体和灯光变形,优先缩放网格资产或保持等比。
look_at忘了传 from/up:target 与自身位置重合、或 up 与视线平行,会产生 NaN 或翻转。GridMap没配MeshLibrary:什么都不会放;set_cell_item(cell, -1)可清格。- HDR/glow 过曝:检查
tonemap_mode与 glow 阈值,filmic 下自发光值过大会糊成一片。
Transform3D 数学、相机投影模式、光照与阴影参数、完整的环境与后处理选项、MeshLibrary 创建、ReflectionProbe / LightmapGI 等细节见 references 文档。
使用场景
- 刚创建 Godot 4.3 项目,场景树里只有 MeshInstance3D,需要快速补齐相机、灯光和环境才能看到渲染结果。
- 第三人称 3D 游戏原型运行时相机跟不上角色,需要在代码里实现一个平滑跟随的 rig 相机。
- 关卡白盒阶段,想用 GridMap 按网格投放墙壁和地板模块,但不清楚如何创建并关联 MeshLibrary。
- 角色材质在编辑器预览中显示为黑色,需要排查是否缺少 DirectionalLight3D 和 WorldEnvironment 设置。
适合人员
- 使用 Godot 4.x 开发 3D 独立游戏的个人开发者,需要在没有后端或工具链团队支持下独自完成场景搭建。
- 刚从 Unity 或 Unreal 迁移到 Godot 的客户端工程师,熟悉 3D 概念但需要快速对齐 Godot 4.3 的节点与资源 API。
- 负责关卡白盒和原型搭建的关卡设计师,希望用 GridMap 快速放置模块而不深入底层图形 API。
- 正在学习 Godot 3D 开发的学生或自学者,需要一个按步骤拆解的渲染管线清单来避免常见黑屏错误。