SuperAPI AI 工具集

bevy-3d-lighting

编程与开发

查看项目

更新于 10-16 06:08

技能介绍

用途

当 3D 场景需要灯光时加载本技能。材质仍由 bevy-3d-materials 处理。本技能负责生成光源实体;光照聚类与阴影提取由引擎自身负责。

主要能力

模块 bevy::light 提供方向光、点光源和聚光灯,以及光照探针、大气、体积光和阴影配置。Cargo 特性 bevy_light 的描述相同。PBR 页面中出现的名称包括:DirectionalLightViewEntities、ExtractedDirectionalLight、ExtractedPointLight、ExtractedRectLight、GpuClusteredLight(点、聚光或矩形)、DistanceFog、LightProbePlugin、ContactShadows。光照聚类与提取由引擎负责,游戏逻辑只生成光源实体。

光源选择

  • 太阳:在一个实体上使用 DirectionalLight 加 CascadeShadowConfig。
  • 局部全向光:PointLight(强度单位为流明,范围单位为米)。
  • 锥形光:SpotLight,使用以弧度表示的 inner_angle 和 outer_angle。
  • 距离雾:在相机实体上使用 DistanceFog。
  • 局部基于图像的光照:LightProbe 配合 EnvironmentMapLight 立方体贴图句柄。

bevy_solari 是实验性的光线追踪光照 Cargo 特性。示例使用 bevy::light 中的光栅光照。

使用方式

依赖声明为 bevy = "0.20"。示例代码展示了如何生成太阳(含级联阴影配置、SunDisk、Transform 旋转)、生成局部光源(点光源与聚光灯)、生成带距离雾的相机,以及通过系统让太阳绕行、按距离保留最近的四个点光源阴影。

ECS 形态方面:数据在单个实体上使用 Component,由某个系统通过 Query 修改,运行于 Update 或 FixedMain;整个应用共享的值使用 Resource,由某个系统修改,在 Startup 插入后由读取它的调度使用;生成使用 Commands,由生成系统负责,初始世界在 Startup,运行时生成在后续调度;不能竞态的排序使用 .chain(),仅约束被链式连接的系统,位于同一调度;插件边界使用 Plugin,build 注册系统与资源,在应用运行前完成。借用规则:两个系统若都可变查询同一组件,必须排序(.chain())或拆分使只有一个写入;无关系统保持并行。

适用场景

适用于需要为 Bevy 3D 场景添加方向光、点光源、聚光灯、级联阴影、距离雾或最近光源阴影预算的场合。相关技能包括前置的 bevy-master(枢纽与调度)、bevy-ecs-composition(组件与系统)、bevy-3d-materials(受光表面)、bevy-camera-systems(受光照影响的相机),以及互补的 bevy-3d-world-building(在关卡中放置光源实体)。

限制

目标为 Bevy 0.20+。不要在文档 URL 中固定 /0.20.0/,链接保持指向最新版本,0.20 目标只在正文中说明一次。不要从两个无序系统可变查询同一组件。不要在此发明物理、导航、网络或 XR crate。不要使用其他引擎的光节点类型。不要在 Bevy 代码中使用外部引擎类型。不要发明 API 或把未命名的第三方 crate 作为选定求解器。bevy-master 上的库固定版本保持 0.20.0。决定光照值是组件还是资源时加载 references/ecs-ownership.md,材质创作时不要加载它。