【Threejs学习】材质灯光投影

一、光源分类

  1. 环境光(AmbientLight):会均匀的照亮场景中的所有物体。无方向,不能投射阴影。
  2. 平行光(DirectionalLight):沿特定方向散发的光,发出的光线都是平行的。例如太阳光,可投射阴影。
  3. 点光源(PointLight):从一个点向各个方向发散的光源。例如火柴、灯泡,可投射阴影。
  4. 聚光灯(SpotLight):光线从一个点沿一个方向射出,例如顶灯、手电筒,可投射阴影。
  5. ……

以下三种是常见光:
【Threejs学习】材质灯光投影_第1张图片

二、环境光 - AmbientLight

环境光: 会均匀的照亮场景中的所有物体,环境光不能用来投射阴影。
环境光结合其他常见的光和材质使用可以打造更真实立体的效果。

1.构造器

AmbientLight( color : Color, intensity : Float)

参数:颜色(默认0xffffff)、光照强度(默认为1,数值越大物体越亮)

2.代码示例

const light = new THREE.AmbientLight(0xffffff, 1) // 柔和的白光
scene.add(light)

三、点光源 - PointLight

点光源: 从一个点向各个方向发射的光源,例如火柴、灯泡,可以投射阴影。

1.构造器

PointLight( color : Color, intensity : Float, distance : Number, decay : Float )

参数:

  1. 颜色:默认0xffffff
  2. 光照强度:默认值为 1
  3. 光源照射的最大距离:默认值为 0(无限远)
  4. 沿着光照距离的衰退量:默认值为 2

属性:

  1. castShadow:此属性设置为 true 灯光将投射阴影。需要通过调整让阴影看起来正确。
  2. ……

2.代码示例

const pointLight = new THREE.PointLight(0xffffff, 100, 100)
pointLight.position.set(5, 3, 5)
// 让灯光投射阴影
pointLight.castShadow = true
scene.add(pointLight)

四、材质、灯光(环境光+点光源) 阴影效果示例

1.效果图:

【Threejs学习】材质灯光投影_第2张图片

2.实现步骤:

【Threejs学习】材质灯光投影_第3张图片
【Threejs学习】材质灯光投影_第4张图片

  1. 设置阴影:
    1. 让物体能够接收光源,呈现阴影效果: cube.castShadow = true
    2. 开启灯光投射阴影: pointLight.castShadow = true
    3. 地面要设置可接收光源: meshFloor.receiveShadow = true
    4. 设置渲染器开启阴影贴图: renderer.shadowMap.enabled = true

3.完整代码:




你可能感兴趣的:(前端学习笔记,学习,前端,3d)