1

我目前正在处理超过 5000 个网格块的 LOD 场景。这些是根据您的需要加载的(查看它们),并且效果很好。但是为了最大限度地减少流式传输所需的数据,我正在实现定时和空间缓存功能,缓存靠近我并且最近被提取的块。每个缓存的块是一个场景,其中包含一组从几何上描述该块的子项。当我渲染场景时,我确定了需要渲染的块,我将每个块子放​​在一个场景对象中,然后将该场景添加到主场景中。这样可以通过删除一个对象来清除以前的孩子。

foreach (chunk I see) {
   foreach (child in chunk) {
      containerScene.add(child);
   }
}

mainScene.add(containerScene);

但是我的问题是,在我使用 remove() 从 mainScene 中删除了 containerScene 之后,缓存的块场景子项将从内存中删除,从而删除了缓存的场景子项。

chunk.children.length == x

mainScene.remove(containerScene);

// the cached chunks looses their children when containerScene 
// is removed the om m
chunk.children.length == 0

我通过添加每个孩子的克隆来解决它

containerScene.add(chunk.child.clone(true));

但是每次添加或删除子项时都为所有子项执行此操作可能是不合理的。

有没有更好的方法来做到这一点,让我可以轻松地将对象删除和添加到场景中,而无需每次都重新加载缓存?

4

0 回答 0