3D 再構成のためにあまり最適化せずに完全な octree 実装をコーディングしましたが、ツリー構造に含まれるポインターが多すぎて、256^3 を超えるボクセルをサポートできません。
理論的には、非ツリー構造の場合、vector<bool>
ボクセルあたり約 1 ビットを使用する を使用した場合、非ツリー構造は 8GB メモリで 2k^3 をサポートできるため、これはより受け入れられます。
ただし、最適化された octree 構造は、次の理由から、これと同等またはそれ以上のことができるはずです。
すべてのボクセルを保存する必要はありません。これは、凝縮によって近くの同じ値のボクセルが圧縮される可能性があるためです。
ポインター自体がすでにかなりの量のバイトを使用しているため、ポインターをあまり使用しないでください。
octree のノード/ボクセル比はかなり低くなければなりません。
完全な octree の場合、ノード番号は として計算できます(s^3 -1) / 7
。はs
ボリューム解像度で、2 のべき乗です。たとえば、 の場合、ボクセルの 4x4x4 グリッドを表すために octree にノードがs = 4
必要です。1 + 8 = 9
これらの仕様を満たす C++ の octree 実装を知っている人はいますか?