当前位置: > > > Three.js - 光源使用详解1(环境光 AmbientLight、点光源 PointLint)

Three.js - 光源使用详解1(环境光 AmbientLight、点光源 PointLint)

Three.js 中有许多不同种类的光源,每种光源都有特别的行为和用法。下面通过一个系列文章介绍它们的用法。

一、THREE.AmbientLight(环境光)

1,基本介绍

  • 在创建 THREE.AmbientLight 时,颜色会应用到全局。
  • 该光源并没有特别的来源方向,并且 THREE.AmbientLight 不会产生阴影。

2,使用建议

  • 通常,不能将 THREE.AmbientLight 作为场景中唯一的光源,因为它会将场景中的所有物体渲染为相同的颜色,而不管是什么形状。
  • 在使用其他光源(如 THREE.SpotLight 或者 THREE.DirectionLight)的同时使用它,目的是弱化阴影或给场景添加一些额外的颜色。

3,使用样例

由于 THREE.AmbientLight 光源不需要指定位置并且会应用到全局,所以我们只需要指定个颜色,然后将其添加到场景中即可。
var ambientLight = new THREE.AmbientLight(0x523318);
scene.add(ambientLight);

4,效果图

(1)下面是场景中只使用 AmbientLight 这一种光源的情况(颜色分别为:0x5233180xffffff

(2)下面场景中除了 AmbientLight 光源外(颜色分别为:0x5233180xffffff),还添加了个 SpotLight(颜色:0xffffff

(3)下面是场景只使用一个 SpotLight 光源(颜色:0xffffff)的效果,大家可以比较下。

二、THREE.PointLight(点光源)

1,基本介绍

  • THREE.PointLight 是一种单点发光、照射所有方向的光源(比如夜空中的照明弹就是一个点光源例子)
  • THREE.PointLight 不会产生阴影。因为它会朝所有的方向发射光线,在这种情况下计算阴影对 GPU 是个沉重的负担。

2,属性介绍

  • color:光源的颜色
  • distance:光源照射的距离。默认值为 0,意味着光的强度不会随着距离的增加而减少。
  • intensity:光源照射的强度。默认值为 1
  • position:光源在场景中的位置。
  • visible:设为 ture(默认值),光源就会打开。设为 false,光源就会关闭。

3,使用样例

这里我们只指定了光源的颜色和位置(其它属性使用默认值),并将其添加到场景中。
var pointLight = new THREE.PointLight("#ccffcc");
pointLight.position.set(0,10,10);
scene.add(pointLight);

4,效果图
(1)上面样例中我们往场景中添加了个绿色的点光源,效果如下:

(2)我们如果将光源的 intensity 属性设为 2.4,表示亮度为默认的 2.4 倍,效果图如下:
pointLight.intensity = 2.4;

(3)光源的 distance 属性决定了在光线强度变为 0 之前光线的传播距离。默认为 0,表示光线强度不会随着距离的增加而减弱。
这里我们接着把 distance 属性设为 22,表示光线在距离为22的地方慢慢地减少为 0
pointLight.distance = 22;
评论0