私は現在、5000 メッシュ チャンクを超える LOD シーンのストリーミングに取り組んでいます。これらは必要に応じてロードされ (参照)、素晴らしく機能します。しかし、ストリーミングに必要なデータを最小限に抑えるために、時間と空間のキャッシュ機能を実装して、近くにあり、最近フェッチされたチャンクをキャッシュしています。キャッシュされた各チャンクは、チャンクを幾何学的に記述する一連の子を含むシーンです。シーンをレンダリングするときは、レンダリングが必要なチャンクを特定し、各チャンクの子をシーン オブジェクトに配置し、そのシーンをメイン シーンに追加します。これにより、1 つのオブジェクトを削除することで以前の子をクリアできます。
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));
しかし、子が追加または削除されるたびにすべての子がレンダリングされるように毎回これを行うことは、おそらく妥当ではありません。
毎回キャッシュをリロードする必要なく、オブジェクトを簡単に削除してシーンに追加できるようにする、より良い方法はありますか?