Skip to content

3D 场景光照

本页演示 Light3D 组件与 金属-粗糙度 PBR 材质(Cook-Torrance 微表面 BRDF,类似 three.js MeshStandardMaterial)配合:环境光打底、冷色平行光作填充,暖色 聚光灯 绕场景中心轨道运动,三个不同 metallic / roughness 参数的物体便于对比粗糙电介质、抛光金属与光滑电介质。

实现参考 packages/webcomponents/examples/main.ts课程 39 — 3D Mesh 渲染

交互示例

要点

  • 光源类型ambient 只贡献颜色/强度;directionalpointspot 写入场景光源数组(上限 8 盏,见 mesh3d shader)。
  • 自定义光源:spawn 任意 Light3D 后会 替换 默认环境光 + 平行光组合;若未提供 directional,渲染器会自动补一盏弱平行光,避免 mesh 全黑。
  • 坐标系position / direction 使用与 Transform3D 相同的 画布世界单位(linked 模式下约 1 px);direction 指向被照亮的场景,渲染器会归一化。
  • 聚光灯innerConeAngle / outerConeAngle 为弧度;range <= 0 表示不做距离衰减(与 webcomponents 示例一致)。
  • 材质Material3D 采用 金属-粗糙度 工作流。metallic(0 为电介质,1 为金属)与 roughness(0 为镜面光滑,1 为完全粗糙)控制 Cook-Torrance 高光响应,baseColor 为反照率(金属的反射也由其着色)。旧字段 ambient / diffuse / specular / shininess 为向后兼容保留——ambient 仍缩放环境光项,但 diffuse / specular / shininess 不再影响着色。
  • 动画:每帧 spotLight.write(Light3D) 更新位置与方向;MeshPipeline3D 检测到组件变更后重绘。

与立方体示例的差异

项目cube-perspective本页
光源渲染器默认 ambient + directional显式 spawn 多盏 Light3D
物体单个白色立方体三个不同材质参数的立方体
动态效果仅 mesh 旋转mesh 旋转 + 聚光灯轨道
默认工具选择选择(Pick3D 需 Select 工具)

Released under the MIT License.