// 优化删除模型
removeModel(parentGroup, group){
parentGroup.remove(group);
if (!this.$isEmpty(group)) {
group.traverse(child => {
if (child instanceof THREE.Mesh || child instanceof THREE.Line) {
this.disposeMaterial(child.material);
child.geometry.dispose && child.geometry.dispose();
} else {
this.disposeMaterial(child.material);
}
});
group = null;
}
},
// 自己写的材质贴图释放
disposeMaterial(material) {
if (material instanceof THREE.Material) {
for (const value of Object.values(material)) {
if (value instanceof THREE.Texture) {
value.dispose();
}
}
if (material.uniforms) {
for (const value of Object.values(material.uniforms)) {
if (value) {
const uniformValue = value.value;
if (uniformValue instanceof THREE.Texture) {
uniformValue.dispose();
}
if(Array.isArray(uniformValue)){
uniformValue.length = 0;
}
}
}
}
material.dispose();
}
},
threejs 删除模型,释放内存
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 本文关键字:玩转Redis、Redis内存碎片、Redis内存释放; 大纲 背景 如何查看Redis内存数据 内存...
- 结论 在Go中,map中存放map,上层map执行delete,子层map占用的内存会释放,无需手动先释放子map...
- 2019-08-01 参加了 Go 夜读活动第53期,时间有限,杨文大佬并没有详细讲述所有的例子),后来自己试验了...
- 如果使用imageNamed这个方法加载一些比较大的资源文件就容易崩溃,从而引发了imageNamed生成的对象什...