それは簡単です。Octtreeを使用すると、必要な詳細レベルに達するまで、世界を次第に小さなピースに分割するだけです。これは例えば砂粒のサイズかもしれません。Minecraftを極端に考えてみてください。
次に何をレンダリングしますか?ディテールが十分に小さい場合は、ブロック(オクトツリーのリーフノード)のレンダリングを検討できます。その他のオプションには、球体や幾何プリミティブさえ含まれます。色と法線は各ノードに保存でき、LODを削減するために、ツリーの上位レベルに複合情報を保存できます。
どのようにして多くのデータを管理できますか?ツリーが実際のデータ構造の場合、テクスチャを再利用するのと同じように、複数のポインタが同じサブツリーを参照できますが、ジオメトリも含まれています。トリックは、すべてのレベルでできるだけ多くの再利用を取得することです。たとえば、四面体配置の4つのオクタントをすべてのレベルで同じ子ノードにすべて接続すると、ほとんどメモリを使用せずに非常に大きな3Dシェルピンスキーフラクタルを作成できます。もちろん実際のシーンははるかに大きくなります。
問題は、実際のアニメーションではフレームごとにすべてのデータを操作する必要があるため、静的なジオメトリに対してのみ機能することです。ただし、レンダリング、特に可変LODの場合は問題ありません。
そのようなことをどのようにレンダリングするのですか?私はレイトレーシングの大ファンであり、GPUの有無にかかわらず、この種の処理を非常にうまく処理します。
もちろん、これはすべて推測です。あなたが話しているケースに関する具体的な情報はありません。そして今、何か関連しているが違う:
レンダリングされた大量のデータ
編集これが私がしたものですが、私は意図的に法線を変更してボックスをより明確にしました:
ボクセルのスタンフォードバニー
そのフレームレートは、シングルコアIIRCでした。ツリーの深さを2倍にすると、フレームレートは通常半分になりますが、複数のコアを使用すると適切にスケーリングされます。通常、私はプリミティブ(三角形など)をocttreeに保持しますが、この場合、ニヤリとするためにツリー自体の葉ノードをレンダリングすることにしました。もちろん、特定の方法を中心に最適化すると、パフォーマンスが向上します。
ompfのどこかにボクセルを使って作られた車があり、それは静的ですが、本当に素晴らしいです。見つけられないようです...