4

色付きの (x,y,z) ポイントのポイント クラウドがあり、glDrawArray() を使用して openGL ウィンドウにレンダリングされます。今、私はカメラのポーズを持っており、このカメラのポーズからポイントをレンダリングしたいと思います。これは基本的に、焦点距離などのカメラの内部パラメータと[R|t]を指定して、このカメラの参照フレームにすべての3Dポイントを投影しています。

すべてのポイントをループしてイメージ プレーンに投影し、色を与えるコード スニペットを記述するのではなく、このイメージをレンダリングする簡単な方法があるかどうか疑問に思っています。OpenGL には、これを行う機能が組み込まれていますか? 私が知りたいもう 1 つのことは、すべての N 3D ポイントをループするのではなく、どのポイントがフレームに表示されているかを示す機能もある場合です。それを効率的に行うためにそのようなことはありますか?

4

1 に答える 1

2

ポイントをBSP ツリーのようなものに割り当てない限り、それらが表示されているかどうかを確認するために、それらすべてをループする必要があります。

ただし、ある種の空間階層を使用することで、どのポイントが表示されていないかをすばやく判断できます。たとえば、スペースを 10 x 10 x 10 のセルのグリッドに分割し、ポイントをセルの 1 つに割り当てると、各セルの境界ボックスをチェックして、そのセルが表示されるかどうかを判断できます。したがって、100,000 ポイントがある場合、1,000 個のセルがあり (ポイントが均等に分散されていると仮定すると)、各セルの 100 個ではなく 6 個のポイント (ボックスの角) をチェックすることになります。

どのセルが完全に表示されているか、または完全に表示されていないかをすばやく判断でき、部分的に表示されているセルの内容を確認するだけで済みます。

階層を拡張して、最上位レベルのセルにポイントではなく、より小さなセルが含まれるようにすることで、より大きなポイント クラウドに対処できます。

すべてのセルに同じ数のポイントが含まれるように、セルのサイズを変更することもできます。

于 2012-12-24T14:53:26.720 に答える