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

3d - 3D グラフィックスのピッキング - このシナリオに最適なアプローチは何ですか

私は、ユーザーがシーン内の 3D オブジェクトを選択できるようにするプロジェクトに取り組んでおり、この特定のシナリオにアプローチするための最良の方法は何であると誰もが考えているのか疑問に思っていました。

基本的に、少なくとも 100 個のオブジェクト (ローポリですが、少なくとも 12 ~ 15 個の三角形で構成されています) と最大約 1000 ~ 2000 個のオブジェクトを含むシーンがあります。

一部のオブジェクトは他のオブジェクトを遮るため、すべてのオブジェクトが常に「選択可能」であるとは限りません。そのため、「選択可能」オブジェクトはおそらく 800 ~ 1500 の範囲に収まります (シーンの複雑さによって異なります)。

オブジェクトが「選択」されると、何らかの方法で強調表示されるようにする必要があるため、異なる方法でレンダリングする必要があります。これは簡単なことですが、単一のクリックだけでなくドラッグでも選択を行う必要があります。つまり、選択を実行したいということです。短時間で多くのアルゴリズムを実行します。理想的には、オブジェクトがまだ「ドラッグ」操作中に強調表示されているのをユーザーが確認できるようにすることです (つまり、メインのレンダリングに遅れが生じないように、ピッキングはおそらく非同期で行う必要があります)。

簡単なレイ トレース ピッキングを試してみましたが、オブジェクトを見つけるためにシーン内のすべての三角形をループするため、これは明らかに非常に遅くなります。

GPU ベースのピッキングも試しました。各オブジェクトに固有の色を与えるピクセルバッファを使用してシーンをレンダリングしますが、ドラッグ操作では、複数のレンダリングと GPU から CPU へのデータ転送が必要になり、パフォーマンスが低下します。

必要なパフォーマンスと機能を得るために探索できる可能性は他にありますか?

御時間ありがとうございます。

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

ios - opengl iOS glkit カラーピッキング

カラーピッキングを使用して 3D オブジェクトを選択することについてです。メッシュ (更新: 静的ヘッダー ファイルに存在し、同じプロジェクトの画面に正常に表示されます) を新しいオフスクリーン フレームバッファーに描画し、glReadPixels を使用してユーザーがタッチしたかどうかを識別します。

Erik M.Buck による本「Learning OpenGLES for iOS」のプロジェクト opengles_ch10_1 のコードに従って、選択した (タップして) ピクセルの色 0,0,0 を常に nslog に出力する次のコードを作成しました。

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

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

iphone - NinevehGL または OpenGL i-phone を使用したレイ トレーシングによる 3D でのピッキング

レイトレーシングの方法で、3Dでピッキングするという正確でわかりやすい表現が見つかりませんでした。このアルゴリズムを任意の言語で実装した人はいますか? 疑似コードはコンパイルできないため、一般的に不足している部分が書かれているため、直接動作するコードを共有します。

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

c++ - 深度バッファを使用したレイ ピッキング: 恐ろしく不正確ですか?

ブロックのペイントと選択のために、レイ ピッキング アルゴリズムを実装しようとしています (したがって、かなりの精度が必要です)。最初はレイ キャスティングの実装を使用しましたが、十分に正確ではないと感じました (交差テストに問題があった可能性はありますが)。とにかく、深度バッファーを使用して選択し、マウス座標をワールド座標に変換してみることにしました。以下の実装:

問題は、値が簡単に ±3 単位 (ブロックの幅は 1 単位) になり、ニア クリッピング プレーンに非常に近い場合にのみ十分な精度が得られることです。

不正確さは、単精度浮動小数点数の使用に起因するものですか、それとも私の計算の何らかのステップに起因するのでしょうか? 倍精度値を使用すると役に立ちますか? OpenGL は深度バッファーに対してもそれをサポートしていますか?

最後に、この方法がうまくいかない場合、どのポリゴンが選択されたかを正確に識別するためにカラー ID を使用するのが最善でしょうか?

0 投票する
0 に答える
620 参照

java - LWJGL レイピッキング (gluUnProject)

だから私はチュートリアル(およびこのサイトの質問)を調べてきましたが、私の問題を解決するものは何も見つかりませんでした. 実装しようとしている現在のコードは次のとおりです。

マウスがつかまれているので、mouseX と Y を自分のやり方で設定しました。ここに画像といくつかの出力があります。(私は問題を本当に説明することはできません)

位置: 0.0、0.0、0.0 回転: 0.0、0.0、0.0 ニア プレーン: 0.0、0.0、-0.1 ファー プレーン: 0.0、4.2315264、-99.99771

したがって、X:0 Y:0 Z:0 の回転の場合、Y 座標の予期される出力は入力と同じになるはずです。高いです。これがその出力の写真です。 奇数値

なぜこれが起こるのかについて、誰かが何らかのヒントや説明を教えてくれますか?

EDIT:激しくFacepalms:2番目のgluUnProjectのYパラメータでmouseXを押していました