three.js 原始碼註釋(四十二)Light/AreaLight.js
阿新 • • 發佈:2019-02-06
俺也是剛開始學,好多地兒肯定不對還請見諒.
以下程式碼是THREE.JS 原始碼檔案中Light/AreaLight.js檔案的註釋.
/** * @author MPanknin / http://www.redplant.de/ * @author alteredq / http://alteredqualia.com/ */ /* ///AreaLight方法根據設定燈光的顏屬性color, 強度屬性intensity 建立平面光(面光,區域光).AreaLight物件的功能函式採用 /// 定義構造的函式原型物件來實現,區域光和其他光源不同,是一種二維面積光源,他的亮度不僅和強度有關,而且還和他的面積大小有關. /// 通過變換燈光的width,height,normal屬性,區域光可以模擬窗戶射入光線.\ /// TODO: AreaLight型別燈光在這個版本內還沒有實現陰影.??? /// Example: /// var light = new THREE.AreaLight(0xff0000,1); //建立平面燈光物件 /// light.position.set(50,50,30); //設定位置 /// light.rotation.set(-0.3,0.3,0.002); //設定角度 /// light.width = 10; //設定寬度 /// light.height = 1; //設定高度 /// scene.add(lignt); //加入場景 */ ///<summary>AreaLight</summary> ///<param name ="color" type="THREE.Color">燈光的顏色屬性</param> ///<param name ="intensity" type="Number">燈光的強度,預設是1</param> ///<returns type="AreaLight">返回AreaLight,區域光.</returns> THREE.AreaLight = function ( color, intensity ) { THREE.Light.call( this, color ); //呼叫Light物件的call方法,將原本屬於Light的方法交給當前物件AreaLight來使用. this.normal = new THREE.Vector3( 0, - 1, 0 ); //面光的法線.可以設定或者獲得面光的單位向量,確認燈光照射面正確.這是在區域性空間計算. this.right = new THREE.Vector3( 1, 0, 0 ); // this.intensity = ( intensity !== undefined ) ? intensity : 1; //燈光的顏色屬性,如果不指定,初始化為1. this.width = 1.0; //區域光的寬度,初始化為1.0 this.height = 1.0; //區域光的高度,初始化為1.0\ //WebGL是通過光強乘以衰減係數來計算衰減光照的, //attenuation (衰減係數) = 1`/ (this.constantAttenuation + this.distance * this.linearAttenuation + this.quadraticAttenuation * this.distance * this.distance ) this.constantAttenuation = 1.5; //常量衰減係數,係數值越大,衰變越快。 this.linearAttenuation = 0.5; //線性衰減係數,係數值越大,衰變越快。 this.quadraticAttenuation = 0.1; //衰減平方係數,係數值越大,衰變越快。 }; /************************************************************************************** ****下面是AreaLight物件提供的功能函式定義,一部分通過prototype繼承自Light方法 ***************************************************************************************/ THREE.AreaLight.prototype = Object.create( THREE.Light.prototype ); //AreaLight物件從THREE.Light的原型繼承所有屬性方法
以下程式碼是THREE.JS 原始碼檔案中Light/AreaLight.js檔案的註釋.