Agent Skills
返回列表
💻

Three.js 材质与光照

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md 指南,安装规范名 @user_3c6cb52e/threejs-materials-lighting-ryvw 对应的技能。

技能介绍

解决什么问题

three.js 场景里最常见的渲染翻车场景:模型全身纯黑或灰平平毫无立体感。典型原因是给网格用了 MeshStandardMaterial 却没有加任何光源,也没有设置 scene.environment;或者照着五年前的教程调光照强度,结果整个场景暗得像没开灯——r155 之后 three.js 默认使用物理光照模型,旧教程的强度值已经不适用。

另一个高频痛点是阴影不生效:明明加了光,影子死活不出来,或者影子被截断、呈块状、伴随 shadow acne。这些都不是 three.js 的 bug,而是配置开关没有全部打开。

核心能力与工作流

这个技能覆盖从材质选择到光照验证的完整链路:

  • 按需求选材质:MeshStandardMaterial(PBR,受光照和环境反射影响)用于写实场景;MeshPhysicalMaterial 支持 clearcoat 和 transmission;MeshBasicMaterial 不发光不受光,适合 UI 或调试;MeshNormalMaterial/MeshDepthMaterial 用于排障。
  • 光照搭建:受光材质必须有光源或环境贴图。推荐 AmbientLight/HemisphereLight 做柔和补光,配合 DirectionalLight 做主光(r155+ 强度建议 1–3)。
  • 阴影三开关:renderer.shadowMap.enabled = true、光源 castShadow = true、网格的 castShadow/receiveShadow 缺一不可,之后还要调好光源的正交相机范围。
  • 环境光照(IBL):给 scene.environment 赋 equirectangular 或 PMREM 处理后的 HDR 贴图,PBR 材质自动拾取反射,无需额外代码。
  • 真实光照验证:确认高光随主光移动、影子位置正确、反射合理。

适用边界

  • 渲染器/相机/循环的搭建属于 threejs-scene-setup,加载 GLTF 模型属于 threejs-gltf-loading——这个技能专注材质与光照本身。
  • 自定义 ShaderMaterial/GLSL 不在此范围内,可参考 shader-programming。
  • 附件 references/materials-lights-table.md 提供材质速查表、光源参数/单位、透明度与 alphaTest 顺序,以及不用 HDR 文件通过 PMREMGenerator/RoomEnvironment 生成环境光的路线。

使用场景

  • Three.js场景里模型全身纯黑或灰平无立体感,需要排查是缺光源、缺环境贴图还是材质选错。
  • 加了DirectionalLight但阴影死活不出来,需要确认三个开关是否全部打开并调好阴影相机范围。
  • 照着旧教程设置光照强度结果场景太暗,需要按r155+物理光照标准调整参数或补充环境光。
  • PBR材质想要真实的环境反射,需要给scene.environment挂载HDR贴图或通过PMREM生成环境光。

适合人员

  • 前端工程师,正在用three.js开发Web 3D可视化项目,遇到模型渲染发黑或平淡需要排查材质与光照配置。
  • Three.js初学者,照着教程搭场景但结果总是太暗或没有阴影,需要理解r155+光照变化和阴影三开关机制。
  • 技术美术,负责优化游戏或三维产品的PBR材质表现,需要环境光照和阴影的正确配置方法来提升画面真实感。
  • 3D Web开发者,在产品页面嵌入3D模型展示,需要材质看起来真实而不是塑料感。