HemisphereLight和AmbientLight 区别

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);

光源对比效果

 

HemisphereLight和AmbientLight

AmbientLight 光源

HemisphereLight和AmbientLight

HemisphereLight 光源

总结:

AmbientLight 物体明暗对比无法呈现。

HemisphereLight 物体明暗对比比较明显。

如果想模拟真实世界,建议用HemisphereLight,如果对三维的展现不是特别苛刻,可以用AmbientLight 和DirectionalLight

如果想制作 如下图的效果,必须用 HemisphereLight 作为基础光

HemisphereLight和AmbientLight

HemisphereLight 和PointLight

 

Guess you like

Origin blog.csdn.net/huhuan123456/article/details/109217496