three.js源碼翻譯-LightShadow.js

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;

	}

} );
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章