three.js源码翻译-LightShadow.js

本文档翻译并解析了three.js库中的LightShadow.js源码,重点介绍了three.js中阴影的基础知识,包括阴影是如何通过摄像机投影在场景上的,以及方向光和point/spot光源如何使用正交和透视投影生成阴影。
摘要由CSDN通过智能技术生成

three.js源码翻译-LightShadow.js

说明

该类为three.js中的阴影基类,three.js中的阴影是通过一个摄像机投影出阴影在加到场景中的,在四种光源中有两种是有阴影的分别是方向光和point/spot光源,他们分别采用正交投影和透视投影。

源码位置及翻译

源码位置

src/light/LightShadow.js

源码翻译

/**
 *	光照阴影的基类,
 *
 * @param {Camera} camera 用来生成场景的深度图的摄像机
 */
function LightShadow( camera ) {

	this.camera = camera;
	//设置阴影贴图的偏差
	this.bias = 0;
	//设置模糊值
	this.radius = 1;
	//阴影贴图的尺寸
	this.mapSize = new Vector2( 512, 512 );
	//生成的深度渲染图
	this.map = null;
	//阴影的相机空间
	this.matrix = new Matrix4();

}

Object.assign( LightShadow.prototype, {
	//复制方法
	copy: function ( source ) {

		this.camera = source.camera.clone();

		this.bias = source.bias;
		this.radius = source.radius;

		this.mapSize.copy( source.mapSize );

		return this;

	},

	clone: function () {

		return new this.constructor().copy( this );

	},
	//变成json的方法
	toJSON: function () {

		var object = {};

		if ( this.bias !== 0 ) object.bias = this.bias;
		if ( this.radius !== 1 ) object.radius = this.radius;
		if ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();

		object.camera = this.camera.toJSON( false ).object;
		delete object.camera.matrix;

		return object;

	}

} );
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值