携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第20天,点击查看活动详情 >
在threejs中,MeshBasicMaterial这种材质不考虑光照的影响,mesh被渲染陈简单的平面多边形,而且也可以显示几何体的线框;
AmbientLight
环境光会均匀的照亮场景中的所有物体。
环境光不能用来投射阴影,因为它没有方向。
下列gif图中的效果都添加的环境光,点亮场景;
AmbientLight( color, intensity)
// color:环境光的颜色,默认为0xffffff
// intensity:光照强度,默认为1
DirectionalLight
平行光是沿着特定方向发射的光。这种光的表现像是无限远,从它发出的光线都是平行的。常常用平行光来模拟太阳光 的效果; 太阳足够远,因此我们可以认为太阳的位置是无限远,所以我们认为从太阳发出的光线也都是平行的。
DirectionalLight( color, intensity)
// color:平行光光的颜色,默认为0xffffff
// intensity:光照强度,默认为1
const directionalLight = new THREE.DirectionalLight(0x00fffc,0.3)
// 修改位置 可以模拟太阳使用
directionalLight.position.set(1,0.25,0)
HemisphereLight
半球光光源直接放置于场景之上,光照颜色从天空光线颜色渐变到地面光线颜色;
HemisphereLight(skyColor,groundColor,intensity)
// skyColor:半球光天空的颜色,默认为0xffffff
// groundColor:半球光地面的颜色,默认为0xffffff
// intensity:光照强度,默认为1
const hemisphereLight = new THREE.HemisphereLight(0xff0000,0x0000ff,)
PointLight
点光源是从一个点向各个方向发射的光源,常用于模拟灯泡发光;
PointLight(color,intensity,distance,decay)
// color:点光源颜色 默认为0xffffff
// intensity:点光源强度.默认为1
// distance:点光源强度为0的距离,默认为0,则永远不会消失
// decay:沿着光源距离的距离的衰退量,默认为1
RectAreaLight
平面光光源,从一个矩形平面均匀的发射光线,该光只适用于MeshStandardMaterial与MeshPhysicalMaterial材质
RectAreaLight(color,intensity,width,height)
// color:平面光光源颜色 默认为0xffffff
// intensity::平面光光源强度.默认为1
// width:平面光光源宽度,默认为10
// height:平面光光源高度,默认为10
// 这个颜色,这个效果,这不是妥妥的光剑变身氛围感拉满,为了该效果,没有添加环境光
new THREE.RectAreaLight(0x4e00ff,5,0.1,1)
// 改变位置
rectAreaLight.position.set(-1.5,0,1.5)
// 改变灯光朝向,在改变为之后设置
rectAreaLight.lookAt(new THREE.Vector3())
scene.add(rectAreaLight)
下篇继续介绍Light
如果有哪里描述不准确或者有问题,欢迎大佬指正!
(≖ᴗ≖)✧