three.js模型不清晰,灯光很重要

源自 https://blog.csdn.net/huhuan123456/article/details/109217496

https://blog.csdn.net/u013113491/article/details/124358056(解决图标看不清思路,先放大再缩小)

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 物体明暗对比无法呈现。

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

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

如果想制作稍微有明暗细节纹理的效果,必须用 HemisphereLight 作为基础光。

posted @ 2023-05-18 16:18  热心市民~菜先生  阅读(489)  评论(0编辑  收藏  举报