問題タブ [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 投票する
2 に答える
3538 参照

android - Androidでのカラーピッキング - glReadPixelsの丸めエラー

Androidのopengl esでカラーピッキングを使用しており、カラーキーを計算してglReadPixelsから取得した値と比較しています:

このキーは、次の方法で任意の色に対して手動で計算できます。

最初に float 値が intvalue に変換され、次にキャストが byte に変換されます。float 値は、カラーチャネルの赤、緑、青 (0.0f から 1.0f まで) を表します。例: 0.0f は 255 (現在は整数) に変換され、次に 255 からバイトで -1 に変換されます。

これは問題なく動作しますが、opengl では丸めエラーが発生することがあります。例:

私の計算方法が間違っているのでしょうか?これらの逸脱を回避する方法を知っている人はいますか?

0 投票する
7 に答える
10072 参照

opengl - OpenGL GL_SELECT または手動衝突検出?

画像に見られるように

http://oi56.tinypic.com/ifu33k.jpg

一連の輪郭 (ポリゴン) を GL_LINE_STRIP として描画します。マウスの下で曲線(ポリゴン)を選択して、3Dで削除、移動などをしたいと思います。

私はどの方法を使うべきか疑問に思っています:

1.OpenGL のピッキングと選択を使用します。( glRenderMode(GL_SELECT) )

2.ピックレイを使用して手動衝突検出を使用し、レイが各ポリゴン内にあるかどうかを確認します。

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

opengl - メインのレンダリング ループの外でフレーム バッファ オブジェクトにレンダリングすることは可能ですか?

OpenGL で 2D オブジェクトの色を選択するために別のフレームバッファ オブジェクトを使用しています。フレームバッファにのみ描画し、必要に応じて色を読み取ることができるかどうか興味があります。

私が今行っていることは、メインのレンダー ループでシーンをメイン フレーム バッファーに描画し、選択可能なオブジェクトだけを「ピッキング」フレーム バッファーにレンダリングすることです。

ユーザーがマウスをクリックすると、「ピッキング」フレームバッファがバインドされ、ピクセルが読み取られ、どのオブジェクトが選択されているかがわかります。これの問題は、ユーザーがマウスをクリックしたときに「ピッキング」フレームバッファーが必要なだけなので、フレームごとにこれを行うのは非効率的です。

ユーザーがマウスをクリックしてから直接読み取ったときに「ピッキング」フレームバッファにレンダリングしようとしましたが、得られるのは白だけです(背景色であり、どのオブジェクトであるかを示す色ではありません)。「ピッキング」フレームバッファを描画すると、実際には何もレンダリングされていないように、全体が白く表示されます。

「ピッキング」フレームバッファへのレンダリング中にメインループで描画を停止する必要がありますか? または、これを可能にする何かが欠けていますか?

EDIT:ピッキングフレームバッファへのレンダリング中にメインループで描画しないようにしましたが、それも機能しませんでした。

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

c - ユーザーがボードゲームのどのマスをクリックしたかを知ることを含む、この OpenGL の必要性 (c) をどのように解決しますか?

ボードゲームをプレイするために、このボードを持っています... 問題は、ユーザーがどのマスをクリックしたかをどうやって知るかということです。x 座標と y 座標はわかっていますが、各正方形の特定の位置を突き止めることなく自動化するにはどうすればよいでしょうか。(また、ボードのサイズは可変です...したがって、正方形がたくさんある場合もあれば、非常に少ない場合もありますが、ボードの高さと幅は常に同じです。つまり、左から右に走る正方形の数は同じです上から下に走る正方形の数)。

どうもありがとうスタックオーバーフロー:)

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

opengl - gluUnProject()によるレイピッキング

y=-50平面にクワッドがあります。現時点では、クワッドをマウスでクリックしたときの座標を取得するだけです。私はこれを限られた範囲で行うことができました。問題は、クワッドを描画するときに適用した変換が考慮されていないことです。いくつかの定数を追加して機能させることもできますが、ユーザーがglRotatef()を使用してx軸とy軸を中心にシーンを回転できるようにすると、回転が発生するとすぐに座標が乱れます。

これが私が今していることです:

gluUnProject()を2回呼び出します。1回はz = 0で、もう1回はz=1です。

正規化された光線ベクトル:

パラメトリック方程式:

ここで、(camX、camY、camZ)は、gluLookAt()に渡されるカメラの位置です。

平面X、平面Y、平面Zを、四角形の描画に使用したのと同じ座標系で、四角形のクリックの座標にします。どうすればこれを達成できますか?

0 投票する
4 に答える
4275 参照

iphone - iPhone : OpenGL ES : 画面上のオブジェクト (キューブ) をタップしたかどうかの検出

私はすでに同様の質問をしましたが、それによって現在の場所にたどり着きましたが、これについては本当に助けが必要です. かっこいいものを完成させるための最後の方法です(私の目には笑)

私は動き回ることができる 3 次元の世界を持っており、この世界には単純な立方体があります。

関数 -(CGPoint)getScreenCoorOfPoint:(IMPoint3D)_point3D を使用すると、これらの立方体が 3D ワールド内の X、Y のどこにあるかがわかります。しかし、それは私がどこにいるかではなく、彼らが 3D エリアのどこにいるかに基づいています。同じ機能を使用して、自分がどこにいるかを知ることもできます。また、誰かが画面のどこをタップしたかを知ることもできます。

それらのいずれかをクリックした場合に解決できるように、これらを一緒にマップするにはどうすればよいでしょうか。

確かに、自分がどちらを向いているかを解決する何かが必要です。人々はそれらを画面の外にレンダリングして何かをすることを提案しましたが、それは完全に私の頭の中にありました。関数を破棄して、3D座標に基づいて独自に構築することを考えています(どういうわけか)

コード

私も gluUnproject を試してみましたが成功しませんでした (他の投稿を参照)

代替テキスト

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

iphone - iPhone OpenGL ES: glReadPixels が機能しない

glReadPixels を使用して単純なピッキング機能を実装しようとしていますが、1 色のオブジェクトをクリックすると、そのオブジェクトをクリックした場所に応じて異なる値が返されますか? 特別な照明などはありませんか?どうしたの?場合によっては、すべてゼロが返されます。私はすべて(テクスチャなど)をオフにしましたが、それでも喜びはありません。

この関数は、クリックしたピクセルの色を返すと思いましたか?

更新:修正するためにこれを追加しました:

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

jogl - jogl picking example

hi guys i am in trouble with add picking object in a JOGL project. i know that this could be done with pick buffer.. but i can't find examples anyone?

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 投票する
3 に答える
3966 参照

c++ - Minecraftクローンに最適なボックス選択方法

私は最初のOpenGLプロジェクトとしてMinecraftのクローンを作成していて、ボックスの選択部分で立ち往生しています。信頼できるボックスを選択するための最良の方法は何でしょうか?

私はいくつかのAABBアルゴリズムを試してきましたが、それらのどれもが正確に何をするのか(特に超微調整されたもの)を十分に説明しておらず、理解できないものは使いたくありません。

世界は立方体で構成されているので、八分木を使用してレイキャスト計算の負担を取り除きました。基本的に必要なのはこの関数だけです。

光線と原点はで簡単に取得できます

minとmaxは、立方体の反対側の角です。

八分木であっても、チェックしなければならないキューブの数を考えると、これがこれを行う正しい方法であるかどうかさえわかりません。

私も試しましgluProjectたが、動作しますが、信頼性が非常に低く、選択した立方体の面が表示されません。


編集

だからこれは私がやったことです:光線で空間内の位置を計算します:

実際には驚くほど高速で、最初に見つかったキューブの後で停止します。

代替テキスト

ご覧のとおり、光線は立方体(実際には空間内の位置)を見つける前に複数の八分木を通過する必要があります。画面の中央に十字線があります。増分ステップが低いほど、選択はより正確になりますが、速度も遅くなります。