問題タブ [mouse-picking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
9456 参照

opengl - レイキャスティングによるオブジェクトピッキング

ボックス内のマウスヒットを検出するためのレイキャスティングアルゴリズムの不正確さに問題がありました。私はこれを適切に修正する方法について完全に途方に暮れていて、それは何週間も私を悩ませてきました。

この問題は、画像([0、0、-30]を中心とするボックス)で最も簡単に説明できます。

問題のスクリーンショット

黒い線は実際に描かれたヒットボックスを表し、緑のボックスは実際にヒットしたように見えるものを表します。オフセット(ボックスが原点から離れていると大きくなるように見える)であり、描画されたヒットボックスよりもわずかに小さいことに注意してください。

関連するコードは次のとおりです。

レイボックスキャスト:

光線へのマウス:

実際の光線を線で描いてみましたが、描いた箱と正しく交差しているようです。

ボックスの位置によってすべてのポイントと光線の原点/方向を差し引くことでオフセットの問題を部分的に修正しましたが、なぜそれが機能し、ヒットボックスのサイズが依然として不正確なままであるのかわかりません。

アイデア/代替アプローチはありますか?必要に応じて提供する他のコードがあります。

0 投票する
2 に答える
2624 参照

opengl - 何百万ものプリミティブに対するマウスピッキング戦略はどれですか?

VBO を使用して数百万 (最大 10) の三角形に基づいてモデルをレンダリングしており、ユーザーがこれらの三角形のどれをクリックするかを検出する必要があります。

「ネームスタック」と「ユニークカラー」がどのように機能するかを読んで理解しようとしています。name スタックには最大で 128 個の名前しか含めることができないのに対し、unique-color には最大 2^(8+8+8) = 16777216 の異なる色を含めることができますが、近似値が存在する場合があるため、変更された..

私のケースに最適な戦略はどれですか?

0 投票する
2 に答える
2026 参照

opengl - マウスクリックでopenglオブジェクトを表示するにはどうすればよいですか?

私がする必要があるのは、OpenGL ビューポートのどこかをクリックして、その場所にオブジェクトをレンダリングすることです。ウィンドウの作成、マウスクリックの検出、クリック座標の取得、オブジェクトの描画など、基本的なことは既に知っています。私が持っているミッシングリンクは、座標を正しく取得しています。画面上でクリックした (X,Y) ポイントが openGL ワールド座標を意味するものを特定する必要があります。gluUnProject という GLUT 関数があることは知っていますが、技術的な理由で GLUT を使用できません。多くのアルゴリズムをチェックして、独自の unproject 関数を手動で作成しました。

http://schabby.de/picking-opengl-ray-tracing/ http://collagefactory.blogspot.mx/2010/03/gluunproject-source-code.html OpenGL 数学 - 画面空間をワールド空間座標に投影する

画面をクリックすると、オブジェクトが奇妙な場所に描画されました。ここで何を探しているのかさえわかりません。実装しようとしているのがピッキングなのか、レイキャスティングなのかレイピッキングなのか、それとも何か他のものなのかわかりません。私が探しているアルゴリズムを知っている人はいますか?

編集: スクリーン キャプチャを追加しています。クリックした場所をマークしました。ご覧のとおり、球体は別の場所に描画されています。 http://img23.imageshack.us/img23/4738/proofxd.jpg また、opengl ソース コードを追加しています。

0 投票する
3 に答える
1476 参照

opengl - 3D ライン マウス ピッキング

数千行の 3D シーンがあります。マウス カーソルの 10 ピクセル付近にあるすべての 3D ラインを選択できるようにしたい (透視投影を使用)。ユニークな色ベースの方法を使用しようとしました。しかし、この方法は私には適していません。なぜなら、すべての行を選択することはできず、最も近い行だけを選択できるからです。私の問題の受け入れ可能な解決策はありますか? OpenGL または DirectX - それは問題ではありません。

0 投票する
1 に答える
1153 参照

java-3d - java3d オブジェクトのピッキング

ユーザーがコードを知らなくてもカスタムシーングラフを作成できるJava3d GUIを構築しています。マウスを使用して特定のボックスを選択し、それらを移動できるようにしたい..そのためには、選択する必要があります..

私のシーングラフには、2 つのボックスと 2 つの球体があります。そのうちの1つを選び、どれが選ばれたかを知りたいだけです。特定の球体やボックスをクリックすると、クリックされたオブジェクトの種類を見つけることができますが、それがどのオブジェクトであったかを知る方法がわからないので、それを処理できます。

誰かが私に問題の解決策を提案できますか? 私が知りたいのは、どのオブジェクトが選択されたかを知ることだけです。それで全部です。

0 投票する
1 に答える
593 参照

image-processing - C ++ / CLI:アルファしきい値を適用するためのColorMatrix

ColorMatrix(具体的にはC ++/CLIのSystem::Drawing :: Imaging :: ColorMatrix)を指定してアルファしきい値を設定する方法を知っている人はいますか?たとえば、しきい値として10(10/255)を使用する場合、RGBAアルファが10以下のピクセルは0.0fアルファになり、それより上のすべてのピクセルは1.0fになります。

マウスが指している特定のビットマップのどのピクセルを決定するために描画変換を逆にする現在の扱いにくい方法を使用することにうんざりしているので、2DシーンエディタでColorIDピッキングを実装しようとしています。代わりに、ここで説明するように、OpenGLのようにColorIDレンダリングパスを実行します。http ://content.gpwiki.org/index.php/OpenGL_Selection_Using_Unique_Color_IDsただし、画面上のビットマップの場所を比較することはできません。マウスピッキングで拾われたくない空白がたくさん含まれているため、カラーピッキングが残ります。

今のところ私のColorMatrixは次のようになります

GDI +に対するハンスの回答に従う:既存のアルファ値を保持しながらすべてのピクセルを指定された色に設定しますが、アルファコンポーネントにもしきい値を適用したいと思います(ColorMatrixを使用しても可能である場合)

0 投票する
1 に答える
457 参照

webgl - Three.js Picking Ray では、オブジェクトはどのように X,Z のみを移動しますか? Yではない

現在、オブジェクトはあらゆる方向に移動します。しかし、私はオブジェクトがYではなくXまたはZのみを動かしたい.

私はこれを試します。しかし、結果は良くありません。

MouseMove で

どうすればこの問題を解決できますか?

0 投票する
1 に答える
4423 参照

c# - OpenTK マウスピッキング

OpenTK と winforms を使用してポイントを選択する小さな C# サンプルを開発しました。

正方形を描画する方法と、三角形を選択する別の方法があります。どういうわけか、私はヒットを取得していません。Readpixel メソッドに問題はありますか? 正しい方法で Tao のピッキング サンプルを OpenTK に変換したからですか? 私の方法のどこが間違っているのか教えてください。

0 投票する
1 に答える
5677 参照

c++ - `gluUnProject` を使用した OpenGL でのマウス ピッキング

私はopenGLでいくつかの立方体をレンダリングしているシーンを持っています(プログラム構造はGLUTを使用していません.win32プログラム構造にありglutSolidCubeますが、. これは私がやっていることです: まず、ユーザーがシーンでマウス ボタンをクリックすると、マウスの位置が取得され、シーン座標でその座標を見つけようとします (templateSkeletons は立方体から作成したスケルトンであり、それ以上のものではありません):

これはGerOGLPos、シーン内の座標を取得する関数です (独自のカムレアと独自の射影行列を持っていることに注意してください。ただし、この関数で呼び出すだけで射影行列を取得していることに注意してください。glGetDoublev (GL_PROJECTION_MATRIX, projmatrix);これは間違っており、自分のカムレアの射影を取得する必要があります。行列 ? ) :

ここで、シーン内のピッキング レイを示す 2 つのポイントがあるとします。立方体をレンダリングするとき、光線と立方体によって作成された線の距離を計算しようとします。それが値よりも小さい場合は、立方体の色を変更して、それを選択したことを認識します (jointsOfSkeleton は、各立方体がスケルトンが作成されます。ここでは、配列内のキューブ番号 6 のみをテストしています):

ウィンドウの無関係な位置をクリックすると、立方体の色が変化し、正しく機能しません。デバッガーで距離を監視していますが、距離が正しく表示されません。これは、ラインポイント距離を見つけるために使用した関数です。

0 投票する
1 に答える
4007 参照

opengl - gluUnProjectなしで最新のOpenGLでピッキングを行う方法は?

gluUnProjectを使用せずに、最新のOpenGLで画面座標を世界座標に変換するにはどうすればよいですか?