1. 程式人生 > >Three.js 從記憶體刪除scene中remove的模型資料,釋放記憶體

Three.js 從記憶體刪除scene中remove的模型資料,釋放記憶體

當需要動態更新顯示不同的模型,從 scene 中 remove 的模型還會在記憶體中,如果多次進行更新操作就會大量佔用記憶體資源,甚至使瀏覽器崩潰,以下程式碼功能為從記憶體中清除模型資料。

程式碼

/**
 * 清除模型,模型中有 group 和 scene,需要進行判斷
 * @param scene
 * @returns
 */
function clearScene(){
	// 從scene中刪除模型並釋放記憶體
	if(myObjects.length > 0){		
		for(var i = 0; i< myObjects.length; i++){
			var
currObj = myObjects[i]; // 判斷型別 if(currObj instanceof THREE.Scene){ var children = currObj.children; for(var i = 0; i< children.length; i++){ deleteGroup(children[i]); } }else{ deleteGroup(currObj); } scene.remove(currObj); } } } // 刪除group,釋放記憶體 function
deleteGroup(group) { //console.log(group); if (!group) return; // 刪除掉所有的模型組內的mesh group.traverse(function (item) { if (item instanceof THREE.Mesh) { item.geometry.dispose(); // 刪除幾何體 item.material.dispose(); // 刪除材質 } }); }

覺得有幫助就點個贊吧!