探索three.js中的各种光源

探索three.js中的各种光源

这里写图片描述

1.AmbientLight 环境光

  • AmbientLight( color : Integer, intensity : Float )
    color:颜色值;
    intensity:光的强度,默认值为1。

  • 属性
    .castShadow:boolean 是否投射阴影
    这在构造函数中设为undefined,因为环境光不能投射阴影。

    .isAmbientLight:boolean 是否为环境光
    用于检查此类或派生类是否为环境光,默认值为true。
    不该修改该属性。

  • 使用方法:

var ambientLight = new THREE.AmbientLight(0xcccccc,0.8);//创建一个环境光。
//var ambientLight = new THREE.AmbientLight(0xcccccc);//intensity可不设置,默认为1。
scene.add(ambientLight);//将环境光添加进入场景中。

2.DirectionalLight 方向光

  • DirectionalLight( color : Integer, intensity : Float )
    color:颜色值;
    intensity:光的强度,默认值为1。

  • 属性
    .castShadow:boolean 是否投射阴影
    如果设置为true,则会投射阴影。默认值为false。

    .isDirectionalLight:boolean 是否为方向光
    用于检查此类或派生类是否为方向光,默认值为true。
    不该修改该属性。

    .position:Vector3 位置
    设置光所在的位置,即发光点。

    .shadow:DirectionalLightShadow 阴影
    用来计算阴影。

    .target:Object3D目标位置
    设置光的投射位置。默认为(0,0,0)。
    ps:要将目标的位置更改为默认值以外的任何位置,必须将其添加到场景中,这样可以使目标矩阵自动更新。也可以将目标设置为场景中的另一个对象(具有position属性的任何对象)。
    即:scene.add(light.target);

  • 使用方法

var directionalLight = new THREE.DirectionalLight(0x3c3c3c,0.8);//创建一个方向光。
directionalLight.castShadow = false;//不投射阴影。
directionalLight.position.set(200,200,200);//为方向光设置位置。
scene.add(directionalLight);//将方向光添加进入场景。

3.HemisphereLight 半球光

  • HemisphereLight(skyColor:Integer,groundColor:Integer,intensity:Float)
    skyColor:天空十六进制颜色,默认值为0xffffff;
    groundColor:地面十六进制颜色,默认值为0xffffff;
    intensity:光的强度,默认值为1。

  • 属性
    .castShadow:boolean 是否投射阴影
    这在构造函数中设为undefined,因为半球光不能投射阴影。
    .color : Float 天空色
    设置skyColor,默认值为0xffffff。

    .groundColor : Float 地面色
    设置groundColor,默认值为0xffffff。

    .isHemisphereLight : Boolean 是否为半球光
    用于检查此类或派生类是否为半球光,默认值为true。
    不该修改该属性。

    .position : Vector3 位置
    设置光所在的位置,即发光点。

  • 使用方法

var hemisphereLight = new THREE.HemisphereLight(0xffffbb, 0x080820, 1);//创建一个半球光。
scene.add(hemisphereLight);//将半球光添加进入场景。

4.PointLight 点光源

  • * PointLight( color : Integer, intensity : Float, distance : Number, decay : Float )*
    color:十六进制颜色,默认值为0xffffff;
    intensity:光的强度,默认值为1;
    distance:距离光的强度为0的长度,若设为0,则光一直强度不变,默认值为0;
    decay:灯光沿光线距离变暗的量。默认值为1,对于物理上的光照,请将其设置为2。

  • 属性
    .decay : Float 衰减量
    光线沿光线距离变暗的量。在物理校正模式下,衰减= 2会导致物理上逼真的光线衰减。默认值为1。

    .distance : Float 距离
    如果非零,则光线将从光线位置处的最大强度线性衰减到距离光线此距离处的零点。默认值为0.0。

    .isPointLight : Boolean 是否为点光源
    用于检查此类或派生类是否为点光源,默认值为true。
    不该修改该属性。

    .power : Float 光的功率
    功率=强度×4π,改变功率也会改变到强度。默认值为4π。

    .shadow : LightShadow 阴影
    用来计算阴影。

  • 使用方法

var light = new THREE.PointLight( 0xff0000, 1, 100 );//创建一个点光源。
light.position.set( 50, 50, 50 );//为点光源设置位置。
scene.add( light );//将点光源添加进入场景。

5.RectAreaLight 面光源

  • * RectAreaLight( color : Integer, intensity : Float, width : Float, height : Float )*
    color:十六进制颜色,默认值为0xffffff;
    intensity:光的强度,默认值为1;
    width:光的宽度,默认值为0;
    height:光的高度,默认值为10。

  • 属性
    .isRectAreaLight : Boolean 是否为面光源
    用于检查此类或派生类是否为面光源,默认值为true。
    不该修改该属性。

  • 使用方法

var rectLight = new THREE.RectAreaLight( 0xffffff, 1,  10, 10 );//创建一个面光源。
rectLight.position.set( 5, 5, 0 );//为面光源设置位置。
rectLight.lookAt( 0, 0, 0 );//为面光源设置看向。
scene.add( rectLight );//将面光源添加进入场景。

6.SpotLight 聚光灯光源

  • * SpotLight( color : Integer, intensity : Float, distance : Float, angle : Radians, penumbra : Float, decay : Float )*
    color:十六进制颜色,默认值为0xffffff;
    intensity:光的强度,默认值为1;
    distance:距离光的强度为0的长度,若设为0,则光一直强度不变,默认值为0;
    angle:最大光散射角,上限为Math.PI / 2。
    penumbra:由于半影而衰减的聚光锥的百分比。取值介于0和1之间,默认值为0。
    decay:灯光沿光线距离变暗的量。

  • 属性
    .castShadow : Boolean 是否投射阴影
    如果设置为true,则会投射阴影。默认值为false。

    .decay : Float 衰减量
    光线沿光线距离变暗的量。在物理校正模式下,衰减= 2会导致物理上逼真的光线衰减。默认值为1。

    .distance : Float 距离
    如果非零,则光线将从光线位置处的最大强度线性衰减到距离光线此距离处的零点。默认值为0.0。

    .isSpotLight: Boolean 是否为聚光灯光源
    用于检查此类或派生类是否为聚光灯光源,默认值为true。
    不该修改该属性。

    .penumbra : Float

    .position : Vector3位置
    设置光所在的位置,即发光点。

    .power : Float 光的功率
    功率=强度×4π,改变功率也会改变到强度。默认值为4π。

    .shadow : LightShadow 阴影
    用来计算阴影。

    .target : Object3D目标位置
    设置光的投射位置。默认为(0,0,0)。
    ps:要将目标的位置更改为默认值以外的任何位置,必须将其添加到场景中,这样可以使目标矩阵自动更新。也可以将目标设置为场景中的另一个对象(具有position属性的任何对象)。
    即:scene.add(light.target);

  • 使用方法

var spotLight = new THREE.SpotLight( 0xffffff );//创建一个聚光灯光源。
spotLight.position.set( 100, 1000, 100 );//为聚光灯光源设置位置。
scene.add( spotLight );;//将聚光灯光源添加进入场景。

猜你喜欢

转载自blog.csdn.net/JaRiS_jade/article/details/81235011