mcpField
B
bake-lighting

bake-lighting

github.com/playcanvas开发31282 次安装1 周前更新
代码仓库

关于 bake-lighting

bake-lighting 是一项用于在引擎场景中烘焙静态光照的技能,可降低静态几何体每帧的光照与阴影开销。内容涵盖 Lightmapper 设置、网格和光源配置、UV 要求及离线烘焙的适用时机。

主要功能

  1. 01Lightmapper 设置与烘焙控制
  2. 02光照贴图模式与环境光遮蔽
  3. 03第二套 UV 要求
  4. 04运行时与离线烘焙选择指南
  5. 05动态物体阴影注意事项

适用场景

  1. 01为静态场景几何体烘焙光照
  2. 02检查导入网格的光照贴图 UV
  3. 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