Three.js scene.remove vs. visible = false

时间:2015-06-18 07:44:57

标签: three.js

如果我从场景中删除()一个Object3D,它将不会被渲染,但它将保留在内存中。如果我将该对象的visible属性设置为false,它将不会被渲染,但它将保留在内存中。有什么区别?

上下文:当我有很多复杂的网格物体时,我遇到了性能问题。任何时候都只能看到一个。其他通常隐藏在visible = false。

1 个答案:

答案 0 :(得分:3)

嗯,不同的是,当您移除场景中的对象时,它将从场景中移除,即不再是场景中的孩子。然而,当它被设置为不可见时,它仍然保留在场景数据结构中,并且可以用于计算,例如将一些其他对象旋转到它。

但是对于渲染是的,最终没有区别,两者都是从绘图中省略该对象的方法。

一个实际有用的区别是,如果你需要隐藏&显示对象很多,设置可见标志是快速和轻,而操纵场景是一个更复杂的重操作。因此,要暂时隐藏和对象,您知道您将很快再次显示,最好配置可见性标记,并删除您可能不会再带回的对象,更好地将其从场景中删除。或者确实如果你需要它来进行计算,比如向它旋转某些东西(它可能会在一些层次结构中移动)。

为了实际释放内存,你需要从场景中删除对象,但也要处理它正在使用的数据,如例如freeing memory in three.js