商域無疆 (http://blog.csdn.net/omni360/)
本文遵循“署名-非商業用途-保持一致”創作公用協議
轉載請保留此句:商域無疆 - 本博客專注於 敏捷開發及移動和物聯設備研究:數據可視化、GOLANG、Html5、WEBGL、THREE.JS,否則,出自本博客的文章拒絕轉載或再轉載,謝謝合作。
俺也是剛開始學,好多地兒肯定不對還請見諒.
以下代碼是THREE.JS 源碼文件中extras/SceneUtils.js文件的註釋.
更多更新在 : https://github.com/omni360/three.js.sourcecode
/**
* @author alteredq / http://alteredqualia.com/
*/
/**************************************************************
* SceneUtils scene對象的工具集
**************************************************************/
THREE.SceneUtils = {
/*
///createMultiMaterialObject方法創建一種新的Objec3D對象,每個網格對象對應一種材質.
///這裏和一個網格的每個面使用Meshfacematerial 材質不同.這種方式適用於網格對象在線框和着色幾種材質之間變換頻繁.
*/
///<summary>createMultiMaterialObject</summary>
///<param name ="geometry" type="Geometry">幾何體對象.</param>
///<param name ="materials" type="THREE.Material Array">材質對象的數組.</param>
///<returns type="Object3d">返回Object3D對象</returns>
createMultiMaterialObject: function ( geometry, materials ) {
var group = new THREE.Object3D();
for ( var i = 0, l = materials.length; i < l; i ++ ) {
group.add( new THREE.Mesh( geometry, materials[ i ] ) );
}
return group; //返回Object3D對象
},
/*
///detach方法將將子對象(參數child)從父對象中刪除(參數parent),並重新將子對象添加到場景中.
*/
///<summary>detach</summary>
///<param name ="child" type="Geometry">將要被附着到parent對象的子對象.</param>
///<param name ="parent" type="Objec3d">父對象</param>
///<param name ="scene" type="THREE.Scene">THREE.Scene場景.</param>
///<returns type="Geometry">返回合併後的幾何體對象</returns>
detach: function ( child, parent, scene ) {
child.applyMatrix( parent.matrixWorld ); //子對象應用座標變換
parent.remove( child ); //將子對象(參數child)從父對象中刪除(參數parent).
scene.add( child ); //將子對象添加到場景中.其實是作爲場景的子對象.
},
/*
///attach方法將子對象(參數child)附着到場景(scene)內的父對象(參數parent)之內.
*/
///<summary>attach</summary>
///<param name ="child" type="Geometry">將要被附着到parent對象的子對象.</param>
///<param name ="scene" type="THREE.Scene">THREE.Scene場景.</param>
///<param name ="parent" type="Objec3d">父對象</param>
///<returns type="Geometry">返回合併後的幾何體對象</returns>
attach: function ( child, scene, parent ) {
var matrixWorldInverse = new THREE.Matrix4();
matrixWorldInverse.getInverse( parent.matrixWorld ); //獲得父對象的世界座標的逆座標
child.applyMatrix( matrixWorldInverse ); //子對象應用座標變換
scene.remove( child ); //從場景內刪除child對象.
parent.add( child ); //調用add方法用來將對象(參數child),設置爲父對象的子對象
}
};
商域無疆 (http://blog.csdn.net/omni360/)
本文遵循“署名-非商業用途-保持一致”創作公用協議
轉載請保留此句:商域無疆 - 本博客專注於 敏捷開發及移動和物聯設備研究:數據可視化、GOLANG、Html5、WEBGL、THREE.JS,否則,出自本博客的文章拒絕轉載或再轉載,謝謝合作。
以下代碼是THREE.JS 源碼文件中extras/SceneUtils.js文件的註釋.