处置对象并恢复它们

时间:2017-01-01 01:00:18

标签: javascript three.js

我正在开发一个允许用户切换包含不同网格对象的场景的three.js项目。它们在页面加载的同时加载到项目中,并且所有这些对象都具有严重影响性能的纹理。

为了解决这个问题,我想暂时删除用户选择了的所有场景中的所有对象。因此,对于10个场景,例如用户应该选择查看场景4中的内容(这将是currentScene),那么场景1到3和5到10应该没有放置的场景。表现上不必要的压力。这应该考虑页面加载的时间。只有当用户再次选择上述场景之一时,它才恢复场景。对象。

FIDDLE是我的项目的一个示例,其中包含基本代码。我正在使用remove()dispose()方法来实现它。

//scene that's to be removed and disposed of
var destroyScenes = scenes[1];

//removes and disposes all objects in above scene

for (i = destroyScenes.children.length - 1; i >= 0; i--) {
            obj = destroyScenes.children[i];
            destroyScenes.remove(obj);
            obj.geometry.dispose();
            obj.material.dispose();
            obj.texture.
    }

我的具体问题是这样的: 如果删除并处理它们,如何恢复对象?这是一个很好的方法吗,它是否可能,和/或是否有更好的方法来实现这一目标?

此外,如果这是一种方法,我如何选择除currentScene以外的所有场景?

PS:我很清楚它会在场景之间切换加载时间,但我还是更喜欢它。

1 个答案:

答案 0 :(得分:0)

如果我删除并处理它们,如何恢复对象? - 如果你正确处理对象,你必须再次加载它,这是丑陋的

这是一个很好的方法,它是否可行,和/或是否有更好的方法来实现这一目标? - 如果您打算再次显示对象,最好设置obj.visible = false;再次装载和处理是性能最差的方法。稍后加载对象后,有些事情(如雾等)无法正确应用。

此外,如果这是一种方法,我该如何选择除currentScene之外的所有场景? - 不确定问题,为此提出新问题。 (通过控制鼠标移动我猜)

我很清楚它会在场景之间切换加载时间,但我还是更喜欢这个。 - 这不是它的工作方式。场景正在同时运行,您可以停止非活动场景的动画帧。但场景会在初始化时加载,而不是在切换时加载。

总是只问一个问题。