Skip to content

LightManager

灯光管理器类,负责管理3D场景中的各种灯光,包括环境光、半球光、平行光等。提供统一的灯光管理接口,支持阴影控制和自定义灯光添加。

类定义

javascript
class LightManager extends EventManager

属性

shadow

获取灯光阴影状态,控制平行光是否投射阴影。

类型: {boolean}
只读: true

示例:

javascript
// 获取阴影状态
const isShadowEnabled = lightManager.shadow;
console.log('阴影状态:', isShadowEnabled);

lightGroup

获取灯光组,返回包含所有灯光的Group对象,可以添加到场景中。

类型: {THREE.Group}
只读: true

示例:

javascript
// 获取灯光组并添加到场景
const lightGroup = lightManager.lightGroup;
scene.add(lightGroup);

hemisphereLight

获取半球光源,返回半球光源实例,提供天空和地面的环境光照。

类型: {THREE.HemisphereLight}
只读: true

示例:

javascript
// 获取半球光源并调整强度
const hemisphereLight = lightManager.hemisphereLight;
hemisphereLight.intensity = 0.5;

directionalLight

获取平行光源,返回平行光源实例,提供主要的方向性光照,支持阴影投射。

类型: {THREE.DirectionalLight}
只读: true

示例:

javascript
// 获取平行光源并调整位置
const directionalLight = lightManager.directionalLight;
directionalLight.position.set(1, 1, 1);
directionalLight.intensity = 1.0;

ambientLight

获取环境光源,返回环境光源实例,提供整体的环境光照,无方向性。

类型: {THREE.AmbientLight}
只读: true

示例:

javascript
// 获取环境光源并调整强度
const ambientLight = lightManager.ambientLight;
ambientLight.intensity = 0.4;

directionalLightShadow

设置平行光的阴影范围,设置平行光阴影相机的范围,影响阴影的覆盖区域和精度。

类型:

示例:

javascript
// 设置较大的阴影范围
lightManager.directionalLightShadow = 1000;

// 设置较小的阴影范围(更精确)
lightManager.directionalLightShadow = 200;

lightMap

获取灯光映射表,返回内部存储的灯光映射Map对象,包含所有灯光的键值对。

类型: {Map<string, THREE.Light>}
只读: true

示例:

javascript
// 获取灯光映射表
const lightMap = lightManager.lightMap;

// 遍历所有灯光
for (const [name, light] of lightMap) {
    console.log(`灯光名称: ${name}, 类型: ${light.type}`);
}

方法

setLight(name, light)

添加自定义灯光到管理器,将自定义的灯光添加到灯光管理器中,灯光会被添加到灯光组中。

参数:

  • name {string} - 灯光的唯一名称标识
  • light {THREE.Light} - 要添加的灯光实例

示例:

javascript
// 添加聚光灯
const spotLight = new THREE.SpotLight(0xffffff, 1, 100, Math.PI / 4, 0.25, 1);
lightManager.setLight('spotLight', spotLight);

// 添加点光源
const pointLight = new THREE.PointLight(0xffffff, 1, 100);
lightManager.setLight('pointLight', pointLight);

// 添加区域光
const rectAreaLight = new THREE.RectAreaLight(0xffffff, 1, 10, 10);
lightManager.setLight('rectAreaLight', rectAreaLight);

使用场景

基础光照

  • 提供环境光、半球光、平行光的基础配置
  • 支持阴影效果
  • 提供良好的默认光照设置

自定义灯光

  • 支持添加各种类型的自定义灯光
  • 提供灯光的统一管理
  • 支持灯光的动态添加和移除

阴影控制

  • 控制平行光的阴影效果
  • 调整阴影范围

灯光管理

  • 提供灯光的统一访问接口
  • 支持灯光的批量操作
  • 提供完整的资源清理功能

相关链接

文档内容为北京逆维悦动科技有限公司版权所有,禁止未授权转载