4

私は GPU 機能を使用して現在の問題を解決しようとしています:「点群 P と、点と法線 (Pp、Np) で記述された有向平面が与えられた場合、EPSILON 以下の距離にある雲内の点を返します。飛行機から」。

私の同僚と話していると、次の解決策に収束しました。

1) すべてのポイントが異なる頂点座標を持つように、テクスチャ座標がアタッチされたポイントの頂点バッファを準備します。2) 投影ステータスを直交に設定します。3) 平面の​​法線が -z 軸と整列するようにメッシュを回転させますx,y,z=0 が Pp に対応するようにオフセットします 4) z:[-EPSILON;+EPSILON] のように z クリッピング プレーンを設定します 5) テクスチャにレンダリングします 6) グラフィック カードからテクスチャを取得します 7)グラフィック カードからテクスチャを読み取り、レンダリングされたポイントを (インデックスに関して) 確認します。これは、目的の距離範囲内のポイントです。

問題は次のとおりです。q1) そのような操作を行うには、ウィンドウ フレームを開く必要がありますか? 私は MATLAB 内で作業し、MEX-C++ を呼び出しています。経験上、新しいフレームを開くとすぐに、スーツ全体が惨めにクラッシュすることを知っています! q2) GLPoint にテクスチャ座標を与えるためのプリミティブは何ですか? q3) テクスチャへのレンダリングがどのように実装されるのかよくわかりません。任意の参照、チュートリアルは素晴らしいでしょう... q4) カードからこのテクスチャをどのように取得しますか? 繰り返しますが、参照、チュートリアルは素晴らしいでしょう...

スケジュールが厳しいので、GLSL 仕様書や OpenGL API を参考にするのではなく、私が学ぶべきテクニックの名前を教えていただければ幸いです。これらは、私の質問に対する少し漠然とした答えです。

コメントありがとうございます。

ps また、可能であれば CUDA のようなリソースを使用したくないことに注意してください。したがって、新しいシェーダーを作成する必要なく、できるだけ多くの OpenGL 要素を使用するものを取得します。

注: http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=245911#Post245911に相互投稿

4

4 に答える 4

1

簡単です。n を平面の法線、x を点とします。

n_u = n/norm(n)         //this is a normal vector of unit length
d   = scalarprod(n,x)   //this is the distance of the plane to the origin

for each point p_i
    d_i = abs(scalarprod(p_i,n) - d)  //this is the distance of the point to the plane

明らかに、「scalarprod」は「スカラー積」を意味し、「abs」は「絶対値」を意味します。ウィキペディアのスカラー積に関する記事を読んでください。

于 2008-09-17T08:35:49.133 に答える
0

最初に少し免責事項としてOK:私は3Dプログラミングについて何も知りません。

今、私の純粋に数学的な考え:

(単位長の)法線Nと、中心(点[0/0/0])までの平面の距離Lによる平面が与えられます。点Xから平面までの距離は、NとXの内積から中心までの距離を引いたLで与えられます。したがって、あなたはただチェックする必要があります

|n。x-L | <=イプシロン

。スカラー積であり、| | 絶対値

もちろん、距離Lを取得するには、最初に平面を法線と交差させる必要があります。

多分これは役に立ちます。

于 2008-09-16T21:50:14.443 に答える
0

forループではなく、Corporal Touchyのメソッドaa頂点プログラムに似たものを実装できるはずですよね?たぶん、 CUDAなどのGPUプログラミングにC APIを使用しますか?

于 2008-09-22T19:23:51.257 に答える
0

Andrea Tagliasacchi に 1 つ質問があります。なぜですか?

数千の点と可能性のある数百の平面を見ている場合にのみ、概説された方法を使用することによる利点があります。私のTouchy伍長が概説したように、点と平面をドット生成するのと同じように。

また、ピクセルの有限性により、2 つ以上のポイントがテクスチャ内の同じピクセルに投影されることがよくあります。

それでもやりたい場合は、C++ でサンプルの glut プログラムを作成できますが、これが MATLAB でどのように役立つかは、よく知らないのでわかりません。

于 2008-09-18T16:03:28.830 に答える