Fog
和FogExp2
开发Web3D应用有时候需要实现一个雾化的效果,简单说就是场景中越远的位置看起来越模糊,Three.js引擎提供了两个雾Fog
和指数雾FogExp2
两个类。
Three.js场景对象Scene
具有一个雾化属性.fog
,该属性的属性值是雾对象Fog
或指数雾对象FogExp2
。如果你想模拟一个雾化效果只需要在threejs代码中设置场景对象的.fog
属性就可以。
通过构造函数Fog
的参数1设置周围环境雾的颜色,参数2和参数3用来设置雾化影响的范围,在参数2和参数3距离范围的物体雾化效果受环境中的雾Fog
影响,范围外的物体不受影响。
构造函数Fog
参数一0xcc0000表示场景中雾的颜色,具体雾的颜色你可以根据具体环境设置
构造函数Fog
参数二表示受雾化影响的最近距离(以相机位置为准)
构造函数Fog
参数三1000表示受雾化影响的最远距离(以相机位置为准)
注意构造函数Fog
参数三1000设置,太大或太小都看不出明显的逐渐递变雾化效果
var scene = new THREE.Scene();
//设置场景对象Scene的雾化属性.fog来模拟生活中雾化效果
scene.fog = new THREE.Fog(0xcc0000, 1, 1000);
Fog
Fog
类定义的是线性雾,雾的密度是随着距离线性增大的,即场景中物体雾化效果随着随距离线性变化。
构造函数雾Fog(color,near,far)
的三个参数分别对应雾对象Fog
的三个属性.color
、.near
和.far
。
.color
属性表示雾的颜色,比如设置为红色,场景中远处物体为黑色,场景中最近处距离物体是自身颜色,最远和最近之间的物体颜色是物体本身颜色和雾颜色的混合效果。
// 改变雾的颜色为白色
scene.fog.color.set(0xffffff)
.near
属性值表示应用雾化效果的最小距离,距离活动摄像机长度小于.near
的物体将不会被雾所影响
.far
属性值表示应用雾化效果的最大距离,距离活动摄像机长度大于.far
的物体将不会被雾所影响
FogExp2
// 指数雾(FogExp2)
// 参数2:0.001默认值是0.00025,改变的是属性.density
scene.fog = new THREE.FogExp2(0xcc0000,0.001);
FogExp2
类定义的是指数雾。也就是说,雾的密度是随着距离指数增大的。
FogExp2
和Fog
的雾化算法不同,都具有颜色属性.color
,FogExp2
没有.near
和.far
属性,直接设置.density
属性就可以
构造函数格式FogExp2( color, density)
,参数1表示雾的颜色,参数2表示雾的密度将会增长多快
.density
表示雾的颜色,参数2表示雾的密度将会增长多快,默认值是0.00025。
本文转载地址:我的个人技术博客