关于 bake-lighting
bake-lighting 是一项用于在引擎场景中烘焙静态光照的技能,可降低静态几何体每帧的光照与阴影开销。内容涵盖 Lightmapper 设置、网格和光源配置、UV 要求及离线烘焙的适用时机。
主要功能
- 01Lightmapper 设置与烘焙控制
- 02光照贴图模式与环境光遮蔽
- 03第二套 UV 要求
- 04运行时与离线烘焙选择指南
- 05动态物体阴影注意事项
适用场景
- 01为静态场景几何体烘焙光照
- 02检查导入网格的光照贴图 UV
- 03选择运行时或离线光照烘焙
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ playcanvas/ skills --skill bake-lighting安装后在 Claude Code 中输入/bake-lighting确认已加载。
详细介绍
烘焙静态光照
光照贴图可为静态几何体上的静态光源消除逐帧阴影和光照开销。
Application会注册Lightmapper;手动AppOptions启动配置需设置lightmapper = Lightmapper。- 在光源上设置
bake = true;一旦它照亮的每个网格都完成光照贴图,就设置affectDynamic = false。 - 在每个网格上设置
render.lightmapped = true,否则一旦affectDynamic关闭,它就会变为不受光照。用lightmapSizeMultiplier调整其大小;castShadowsLightmap可让网格相互投射阴影。 - 在
scene.lightmapMode上设置模式:平坦漫反射用BAKE_COLOR,或使用默认的BAKE_COLORDIR,它会为法线贴图或高光贴图材质添加方向信息。 - 不用光源烘焙 AO:使用
scene.ambientBake、ambientBakeNumSamples,以及ambientBakeOcclusionBrightness和ambientBakeOcclusionContrast。 - 引擎会在第一个渲染帧烘焙一次。仅对之后添加的节点或需要重新烘焙时,才调用
app.lightmapper.bake(null, mode)。
需要第二套 UV
只有当每个网格实例都具有 SEMANTIC_TEXCOORD1 时,节点才会被烘焙。否则它会被跳过,仅在调试构建中记录一条日志,并保持动态光照。图元具有该集合;导入的 GLB 通常没有。请检查,然后展开或重新导出。
设备端或离线
在目标设备上为 bake() 计时。仅当它超出启动预算,或需要运行时 lightmapper 无法生成的细节时,才改为离线烘焙并仅以纹理形式交付,并说明额外的下载大小。
穿过烘焙光照的动态对象需要近似遮挡和接触阴影,否则它们看起来像被贴上去一样。比较 verify-pixels 在烘焙阴影内外的截图。
评论
支持 Markdown