three.js 源碼注釋(二十八)Cameras/Camera.js
來源:程序員人生 發(fā)布時間:2014-12-09 08:29:04 閱讀次數(shù):2700次
商域無疆 (http://blog.csdn.net/omni360/)
本文遵守“署名-非商業(yè)用處-保持1致”創(chuàng)作公用協(xié)議
轉(zhuǎn)載請保存此句:商域無疆 - 本博客專注于 敏捷開發(fā)及移動和物聯(lián)裝備研究:數(shù)據(jù)可視化、GOLANG、Html5、WEBGL、THREE.JS,否則,出自本博客的文章謝絕轉(zhuǎn)載或再轉(zhuǎn)載,謝謝合作。
俺也是剛開始學,好多地兒肯定不對還請見諒.
以下代碼是THREE.JS 源碼文件中Cameras/Camera.js文件的注釋.
更多更新在 : https://github.com/omni360/three.js.sourcecode
/**
* @author mrdoob / http://mrdoob.com/
* @author mikael emtinger / http://gomo.se/
* @author WestLangley / http://github.com/WestLangley
*/
/*
///Camera是相機對象的抽象基類,當創(chuàng)建相機時都從這個類繼承.Camera對象的功能函數(shù)采取定義構(gòu)造的函數(shù)原型對象來實現(xiàn).
*/
///<summary>Camera</summary>
THREE.Camera = function () {
THREE.Object3D.call( this ); //調(diào)用Object3D對象的call方法,將本來屬于Object3D的方法交給當前對象Camera來使用.
this.matrixWorldInverse = new THREE.Matrix4(); //為相機設置屬性matrixWorldInverse,這是matrixWorld的逆矩陣,matrixWorld包括相機在世界坐標系的變換矩陣
this.projectionMatrix = new THREE.Matrix4(); //為相機設置屬性projectionMatrix,包括相機的投影矩陣
};
/*************************************************
****下面是Camera對象的方法屬性定義,繼承自Object3D
**************************************************/
THREE.Camera.prototype = Object.create( THREE.Object3D.prototype ); //Camrea對象從THREE.Objec3D的原型繼承所有屬性方法
/*
///lookAt方法用來旋轉(zhuǎn)相機對象,并將對象面對空間中的點(參數(shù)vector)
*/
///<summary>lookAt</summary>
///<param name ="vector" type="Vector">Vector3對象</param>
///<returns type="Camera">返回新的Camera對象</returns>
THREE.Camera.prototype.lookAt = function () {
// This routine does not support cameras with rotated and/or translated parent(s)
//TODO: 這個程序不支持Camera攝像機的旋轉(zhuǎn)和變換??英語不好,啥意思?
var m1 = new THREE.Matrix4();
return function ( vector ) {
m1.lookAt( this.position, vector, this.up ); //調(diào)用THREE.Matrix4.lookAt()方法
this.quaternion.setFromRotationMatrix( m1 ); //利用旋轉(zhuǎn)矩陣
};
}();
/*clone方法
///clone方法克隆Camera對象,
*/
///<summary>clone</summary>
///<param name ="camera" type="Camera">Camera對象</param>
///<returns type="Camera">返回克隆的Camera對象</returns>
THREE.Camera.prototype.clone = function ( camera ) {
if ( camera === undefined ) camera = new THREE.Camera();
THREE.Object3D.prototype.clone.call( this, camera ); //調(diào)用THREE.Object3D.Clone(camera)方法,克隆相機對象
camera.matrixWorldInverse.copy( this.matrixWorldInverse ); //將相機的matrixWorldInverse屬性值復制
camera.projectionMatrix.copy( this.projectionMatrix ); //將相機的projectionMatrix屬性值復制
return camera; //返回克隆的Camera對象
};
商域無疆 (http://blog.csdn.net/omni360/)
本文遵守“署名-非商業(yè)用處-保持1致”創(chuàng)作公用協(xié)議
轉(zhuǎn)載請保存此句:商域無疆 - 本博客專注于 敏捷開發(fā)及移動和物聯(lián)裝備研究:數(shù)據(jù)可視化、GOLANG、Html5、WEBGL、THREE.JS,否則,出自本博客的文章謝絕轉(zhuǎn)載或再轉(zhuǎn)載,謝謝合作。
以下代碼是THREE.JS 源碼文件中Cameras/Camera.js文件的注釋.
更多更新在 : https://github.com/omni360/three.js.sourcecode
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈