レンダリングされた3Dシーンから(OPENGLを使用して)ポイントクラウドを抽出する方法はありますか?
詳細に:
入力は、レンダリングされた3Dシーンである必要があります。
出力は、たとえば頂点(x、y、z)を持つ3次元配列である必要があります。
ミッションは可能か不可能か?
レンダリングされた3Dシーンから(OPENGLを使用して)ポイントクラウドを抽出する方法はありますか?
詳細に:
入力は、レンダリングされた3Dシーンである必要があります。
出力は、たとえば頂点(x、y、z)を持つ3次元配列である必要があります。
ミッションは可能か不可能か?
これで、OpenGL を使用して従来のジオメトリからサンプリングされたポイント クラウドができました。GPU からホストへのリードバックは別として、これは非常に高速です。
これをさらに進める:
入力データを取得し、手動で変換行列とモデルビュー行列を掛けるべきだと思います。そのために OpenGL を使用する必要はありません。ベクトル/行列の計算だけです。
私の理解が正しければ、あなたは 3D シーンの最終レンダリング (2D) を分解したいと考えています。一般に、これを行う OpenGL に組み込まれた機能はありません。
ただし、2D 画像を分析して 3D 表現を生成する方法について説明している論文は多数あります。これは、たとえば Microsoft Kinect がある程度行うことです。出発点として、以前の版の SIGGRAPH で発表された論文を見てください。多くの実装では、おそらく GPU (OpenGL、DirectX、CUDA など) を使用して魔法を実行しますが、それだけです。たとえば、オブジェクトの可視エッジを識別するエッジ検出フィルターやヒストグラム関数を GPU で実行できます。
アプリケーション ドメインによっては、ほとんど不可能なことに直面している場合や、形状と頂点を識別するために使用できるショートカットがある場合があります。
OpenGL レンダリングの仕組みについて誤解していると思います。アプリケーションは、ポリゴンと 3D オブジェクトを形成する三角形の頂点を生成し、OpenGL に送信します。次に、OpenGL はこれらのオブジェクトをラスタライズ (つまり、ピクセルに変換) して、特定の視野を持つ特定の視点からの 3D シーンの 2D レンダリングを形成します。頂点の「ポイント クラウド」を取得したいと言うとき、最初にこれらの頂点を作成する責任があるため、何が必要かを理解するのは困難です。