Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 处理对象并恢复它们_Javascript_Three.js - Fatal编程技术网

Javascript 处理对象并恢复它们

Javascript 处理对象并恢复它们,javascript,three.js,Javascript,Three.js,我正在开发一个three.js项目,该项目允许用户切换包含不同网格对象的场景。它们都是在页面加载的同时加载到项目中的,并且所有这些对象都具有对性能影响很大的纹理 为了解决这个问题,我想暂时删除用户未选择的所有场景中的所有对象。因此,对于10个场景,例如,如果用户选择查看场景4(即当前场景)中的内容,那么场景1到3和场景5到10应该没有对性能造成不必要压力的对象。这也应该考虑到页面加载的时间。只有当用户再次选择上述场景之一时,才会恢复场景的对象 这是一个包含基本代码的项目示例。我正在使用remov

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

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

这是一个包含基本代码的项目示例。我正在使用
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.
    }
我的具体问题是: 如果删除并处置对象,如何恢复它们?这是一个很好的方法吗?是否可能,和/或是否有更好的方法来实现这一点

另外,如果这是一种方法,那么如何选择除
当前场景
之外的所有场景


PS:我很清楚在场景之间切换会增加加载时间,但我更愿意这样做。

如果删除并处置对象,如何恢复它们? -若正确处理对象,则必须重新加载,这很难看

这是一个很好的方法吗?是否有可能,和/或有更好的方法实现这一点吗? -如果您计划再次显示对象,最好设置
obj.visible=false
;再次装载和处理是性能最差的方法。有些东西(如雾等)在以后加载对象后无法正确应用

另外,如果是这样做的话,我如何选择除当前场景之外的所有场景? -对这个问题不确定,请提出一个新问题。(我想是通过控制鼠标移动)

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


请始终只问一个问题。

如果我移除并处置了这些物品,如何恢复它们? -若正确处理对象,则必须重新加载,这很难看

这是一个很好的方法吗?是否有可能,和/或有更好的方法实现这一点吗? -如果您计划再次显示对象,最好设置
obj.visible=false
;再次装载和处理是性能最差的方法。有些东西(如雾等)在以后加载对象后无法正确应用

另外,如果是这样做的话,我如何选择除当前场景之外的所有场景? -对这个问题不确定,请提出一个新问题。(我想是通过控制鼠标移动)

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


请始终只问一个问题。

那么设置
obj.visible=false
会提高性能吗?与
cancelAnimationFrame
结合使用时,情况更是如此?你认为这是最好的方法吗?谢谢,如果你对未使用的场景进行动画处理,并替换隐藏,显示对象而不是加载和销毁它们,是的,这会更好,也是一个最佳实践。我已编程将除
currentsecene
之外的所有场景设置为
visible=falseobj.visible=false
会提高性能吗?与
cancelAnimationFrame
结合使用时,情况更是如此?你认为这是最好的方法吗?谢谢,如果你对未使用的场景进行动画处理,并替换隐藏,显示对象而不是加载和销毁它们,是的,这会更好,也是一个最佳实践。我已编程将除
currentsecene
之外的所有场景设置为
visible=false