THREE.HemisphereLight 半球光源
1.简介
- 光源直接放置于场景之上,光照颜色从天空光线颜色颜色渐变到地面光线颜色。
- 半球光不能投射阴影。
此光源可以创建出更加贴近自然的户外光照效果。就是为了模拟在户外场景中的反光效果。
案例查看地址:https://threejs.org/examples/#webgl_lights_physical
THREE.HemisphereLight 的优势:
如果不使用 THREE.HemisphereLight,要模拟户外光照,通常是创建一个 THREE.DirectionalLight 来模拟太阳光,并且可能再添加一个 THREE.AmbientLight 来为场景提供基础色。
这样的光照效果看起来并不怎么自然。因为在户外,并不是所有的光源都来自上方 。
2.属性介绍
· color:从天空发出的光线的颜色
· groundColor:从地面发出的光线的颜色
· intensity:光源照射的强度。默认值为:1。
· position:光源在场景中的位置。默认值为:(0, 100, 0)
· visible:设为 ture(默认值),光源就会打开。设为 false,光源就会关闭。
3.样例
创建半球光源就像创建其他光源一样简单,只需要给它指定接收自天空的颜色,接收自地面的颜色,以及这些光线的关照强度即可。、
var hemiLight = new THREE.HemisphereLight(天空的反光颜色,地面的反光颜色,光的强度);
var hemiLight= new THREE.HemisphereLight( 0xffffbb, 0x080820, 1 );
hemiLight.position.set(0, 100, 0); //这个也是默认位置
scene.add(hemiLight);
AmbientLight光源·环境光
- 环境光会均匀的照亮场景中的所有物体。
- 环境光不能用来投射阴影,因为它没有方向。
AmbientLight光源影响整个场景,它的光线没有特定来源但是又无处不在,它不能影响阴影生成,并且不能作为唯一光源。使用其他光源的同时使用AmbientLight,目的是弱化阴影和添加一些颜色
备注:
AmbientLight,PointLight,SpotLight和DirectionalLight是基础光源
HemisphereLight,AreaLight,LensFlare是有特殊用途的光源
创建AmbientLight非常简单,不需要指定位置,只需要指定颜色(十六进制)new THREE.AmbientLight(ambiColor),放到场景中即可;
var ambiColor = "#0c0c0c";
var ambientLight = new THREE.AmbientLight(ambiColor);
scene.add(ambientLight);
光源对比效果
AmbientLight 光源
HemisphereLight 光源
总结:
AmbientLight 物体明暗对比无法呈现。
HemisphereLight 物体明暗对比比较明显。
如果想模拟真实世界,建议用HemisphereLight,如果对三维的展现不是特别苛刻,可以用AmbientLight 和DirectionalLight
如果想制作 如下图的效果,必须用 HemisphereLight 作为基础光
HemisphereLight 和PointLight