問題タブ [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 に答える
2433 参照

mouseover - マウスの X & Y を 3D モデル座標に変換する

処理中に単純な 3D ドラッグ アンド ドロップ インターフェイスを構築しており、マウスがオブジェクト上を移動したことを検出したいと考えています。3D モデル座標を画面空間に表示するために、マトリックス変換を行う必要があると想像できます...

私はこの作業の単純なバージョンを持っていますが、問題は、カメラがシーン内を移動すると、取得した座標がおかしくなることです。

では、タイル座標を画面空間に変換するにはどうすればよいでしょうか (screenX と screenY が正しく機能していないため)。

更新: 最終的に、これを行う方法について、Processing サイトから 2 つの例を見つけました。villinthaspamに感謝します。

http://processing.org/hacks/hacks:ピッキング

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

iphone - OpenGL ES (iPhone) タッチピッキング

ES で従来の OpenGL マウス ピッキングを実行したいと考えています。サードパーティ製のライブラリ、GLU ポート、OpenGL ネーム スタックなどは使用したくありません。これにより、逆ビュー変換と光線交差がほぼ残りますね。

http://trac.bookofhook.com/bookofhook/trac.cgi/wiki/MousePicking http://eigenclass.blogspot.com/2008/10/opengl-es-picking- _ using-ray-boundingbox.html

. . .しかし、私はまだそこにいません。これも、もっと簡単な方法があるはずです!!

ここにいくつかのコードがあります:

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

directx - ゲーム レベル エディタの翻訳および回転ウィジェットを実装する方法

私はゲーム エディターを開発しています。3D モデルでのマウス ヒットを検出するには、マウス ピッキングの概念を使用しています。しかし、他のゲーム エディターのように、モデルの中心に 3 方向の実際の矢印がある平行移動 & 回転ウィジェットを実装したいと考えています。これを達成する方法..? 誰でも同じサンプルコードを提案できますか?

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

c# - XNA 2D マウス ピッキング

XNA を使用した単純な 2D リアルタイム戦略ゲームに取り組んでいます。現在、ユニットまたは建物のスプライトをクリックして、そのスプライトに関連付けられたオブジェクトを参照できるようにする必要があるところまで来ました。過去 3 日間に行った調査から、3D で「マウス ピッキング」を行う方法について、私の状況には当てはまらないと思われる多くの参考文献を見つけました。これを行う別の方法は、単にワールド内のすべての「選択可能な」オブジェクトの配列を持ち、プレイヤーがスプライトをクリックすると、配列内のすべてのオブジェクトの位置に対してマウスの位置をチェックすることだと理解しています。このアプローチで私が抱えている問題は、ユニットと建物の数が増えるとかなり遅くなるということです。(それもあまりエレガントではないようです)それで、これを行うことができる他の方法は何ですか。(ハッシュ テーブルを使用してオブジェクトをスプライトの位置に関連付け、配列内の各位置が世界の 1 つのピクセルを表す 2 次元配列を使用するというアイデアについても検討したことに注意してください。物事を行う不格好な方法。)

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

c++ - Color coded picking problem in OpenGL

I am making a game, actually a very basic replica of Minecraft, for a class project of mine. I'm stuck in the picking process right now, which would enable me to destroy and create blocks in the game environment.

I've been trying to use OpenGL's own picking mode without any success, and building my own ray picker using math libraries seems to large a work for a project of this size. So, I've decided to use the color coded picking method, which consists of rendering every pickable object in a different color, then getting the color at the mouse position and using it to identify the picked object.

My current interface is just a 3D rendering of many boxes stacked, creating a terrain-like structure. Since I've done no texture mapping yet, all the boxes are shades of grey (lighting enabled).

Now, time for some actual code:

This is the initialization part, enabling texturing, lighting etc.

When a mouse button is clicked, I try to get the color at the mouse cursor's position (always the middle of the window, actually) by:

Problem is, the disables do not work and I always get the RGB values of different shades of grey in my pixels array.

What could be the problem?

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

opengl - OpenGLマウスピッキング戦略

OpenGLを使用して、特定の平面で回転対称のオブジェクトのモデルをレンダリングしています。ユーザーがモデルをスクロールして(おそらく回転、ズームなどの後で)、どのワールド座標座標を決定できるかを確認したいと思います。マウスが現在指しているモデル。

対称性について言及した理由は、使いやすさのために、個々のコンポーネントのVBOを使用してモデルを構築しているためです。私がやっていることとの類似点は自転車のホイールです-スポーク用に1つ、ハブ用に1つ、ホイール/タイヤ用に1つあり、スポークVBOを何度も再利用します(後適切な翻訳と回転)。私の最初の質問は、この配置が私がやろうとしている種類のピッキングに役立つかどうかです。たとえば、結果のモデルで個々のスポークを「選択可能」にしたいと思います。私がやろうとしている種類の選択を行うために、メッシュ内のクワッド/トライアングルごとに個別のVBOが必要ですか?そうでないことを本当に願っています...

また、使用するのに最適なピッキングアルゴリズムは何でしょうか?OpenGLの組み込みの選択モードについて否定的なことしか聞いたことがありません。前もって感謝します!

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

opengl - glTranslate/glRotated後のopenGLピッキング

openglキャンバスからシーンオブジェクトを選択するためのpick関数を作成しました。

これは、オブジェクトの描画にglTanslateまたはglRotatedを使用しない場合、つまり、描画するときに線を選択できる場合に最適に機能します。

しかし、私がそうするときはそうではありません、

私は何が欠けていますか?

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

3d - ワールド空間ビュー ベクトルとワールド内のポイントの交点

画面座標からワールド空間ビュー ベクトルを計算した後 ( WebGL で Click to zoomを使用)、頂点の配列が与えられた場合、ワールド空間で最も近い交点を見つけるにはどうすればよいですか?

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

java - ダイヤモンドタイルマップでのJavaマウスピッキング

わかりました、私のウィットエンドでイム。マウスをドラッグして変更できる視点を持つ画面よりも大きい小さな等角タイルマップを作成しようとしています。描画が正しく行われ(私は思う)、ドラッグが機能しましたが、マウスの選択が正しく行われていないようです。これまでのところ、タイルはほぼ正しく表示されていますが、タイルのサイズが約半分ずれているため、そのオフセットを補う方法が見つかりません。

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

クリックメソッドにいくつかの数式がコメントアウトされていますが、それらは機能しません(x軸とy軸がそのように反転しているため、理由を理解しようとはしていません)。誰かが私が犯している間違いを指摘してくれたら本当にありがたいです。

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

opengl - 独自の色選択を行うために永続的なフレームバッファオブジェクトを設定して使用するにはどうすればよいですか?

この質問は、自分が何を求めているのかほとんどわからなかったため、最初に尋ねられてから大きく変わりました。また、サイズ変更に関する1つの問題は、フレームバッファの作成と使用に関するより大きな問題を理解する能力を曇らせることでした。フレームバッファが必要な場合は、答えにジャンプしてください...歴史のために、元の質問はそのまま残しました。


初心者の質問。私が取り組んでいるGLプロジェクトがあり、独自の色を使用して選択戦略を開発しようとしています。ほとんどのディスカッション/チュートリアルは、バックバッファーに選択可能なエンティティを描画し、ユーザーがどこかをクリックしたときに選択を計算することを中心に展開されます。選択バッファーを永続化して、マウスの動きのヒットをすばやく計算できるようにし、表示またはオブジェクトのジオメトリが変更されない限り、選択バッファーを再描画しないようにします。

最良の選択は専用のフレームバッファオブジェクトであるように思われます。これが私の問題です。フレームバッファオブジェクトにまったく慣れていないことに加えて、私は興味があります。ウィンドウサイズのイベントでframbufferオブジェクトを削除して再作成するか、最大画面解像度で1回作成してから、そのほんの一部を使用する方がよいでしょうか。多くのサイズ変更イベントのストリームである可能性があるフレームバッファルーチンを1回だけ呼び出すようにイベントを適切に機能させていますが、GPUメモリの断片化やその他の問題が心配で、バッファを何度も再作成しています。

また、フレームバッファオブジェクト(テクスチャと深度)は、その一部だけを使用した場合でも一貫して動作します。

アイデア?私は完全にオフベースですか?

編集:フレームバッファオブジェクトを設定し、ウィンドウのサイズで作業しているので、ウィンドウに合わせてサイズを変更します。私の問題は古典的な「考えすぎ」だったと思います。GPUでのオブジェクトの削除/再作成は、可能な限り避ける必要があることは確かです。正しく処理されている限り、サイズ変更は比較的少なくなります。

私がうまくいったのは、ウィンドウのサイズ変更時にフラグを設定し、バッファをダーティとしてマークしてから、通常のマウスイベントを待ってからバッファのサイズを変更することです。通常のマウスは、ウィンドウをサイズにドラッグし終えた信号を入力または移動し、作業に戻る準備ができています。バッファは一度再作成されました。また、メインフレームバッファーは通常、パイプライン内のウィンドウサイズイベントごとにサイズ変更されるため、フレームバッファーのサイズ変更によってラップトップに穴が開いてしまうことはありません。

危機は回避されました、続けてください!