three.js源码翻译-HemisphereLight.js

本文介绍了three.js中的HemisphereLight类,用于模拟户外太阳光,区别于DirectionLight,它更注重散射效果。HemisphereLight不支持阴影,需要设置天空和地面颜色。
摘要由CSDN通过智能技术生成

three.js源码翻译-HemisphereLight.js

说明

HemisphereLight类为半球光,啥叫半球光呢,就是用来模拟户外太阳照射的一种光源,那HemisphereLight和DirectionLight都是模拟太阳光,那有什么不同呢。首先方向光用来模拟那种无限远的平行光,而半球光用来模拟的是那种有散射效果的太阳光,引入的原因也是因为即便是方向光加上环境光模拟出的太阳光也和真正的太阳光照射出的效果相去甚远,半球光就是用来解决这种情况的,虽然效果理真实的还是很远,但是有进步。

源码位置及翻译

源码位置

src/light/HemisphereLight.js

源码翻译

/**
 *  半球光,模拟的室外的日光照射情况,看到这俩属性忽然想起来写VRML的时候的天空盒的设置了,O(∩_∩)O哈哈~
 *	从代码中可以看出,天空颜色是作为灯光的颜色传递的,但是地面颜色就是在渲染的时候另外做设置的了
 * @param {*} skyColor  天空的颜色
 * @param {*} groundColor 地面的颜色
 * @param {*} intensity 光照强度
 */
function HemisphereLight( skyColor, groundColor, intensity ) {
	//继承灯光基类
	Light.call( this, skyColor, intensity );

	this.type = 'HemisphereLight';

	this.castShadow = undefined;

	this.position.copy( Object3D.DefaultUp );
	this.updateMatrix();
	//上面的和方向光的设置一样,不一样的只是多了个地面颜色
	this.groundColor = new Color( groundColor );

}

HemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {

	constructor: HemisphereLight,

	isHemisphereLight: true,
	//复制方法
	copy: function ( source ) {

		Light.prototype.copy.call( this, source );

		this.groundColor.copy( source.groundColor );

		return this;

	}

} );

示例及案例

创建

let hemisphereLight = new THREE.HemisphereLight( 0xff0000, 0x00ff00, 0.6 );
hemisphereLight.position.set( 0, 100, 0 );
scene.add( hemisphereLight );

注意的点

  • 半球光也是没有阴影的
  • 需要传入两个颜色,分别为天空颜色和地面颜色
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值