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

android - Android Open Gl オブジェクトの選択

オープン GL には、ピッキングと呼ばれる用語があります。画面上のどのオブジェクトが選択されたかを判断するために使用されます。ピッキングを使用することと、オブジェクトのすべてのインスタンスにタッチベースのリスナーを配置することの違いを誰かが説明してくれますか? キューブ クラス。

仮説的に; 私がやりたいことは、画面上に複数のキューブをランダムに表示することです。Cube クラスにリスナーを与えると、キューブに触れると、押された各キューブに応じてリスナーが起動するはずです。

これは、リスナーを追加するコードです。これは可能ですか、それともピッキングが必要ですか?

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

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

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

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

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

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

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

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

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

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

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

opengl - 正射カメラによるピッキング/光線投影

私のコードには「単純な」問題があり、カメラが遠近法モードの場合はピッキングが完全に機能しますが、正射投影モードの場合は結果が奇妙になります。

これが私がやったことです:

オブジェクトを選択できるので、レイ コンピューティングは良さそうです。

これが私が結果で行うことです:

最後のステップを実行すると、次のようになります。

正規化された方向なし:

  • 正投影カメラでOK
  • 遠近法カメラでは機能しません

正規化された方向:

  • 遠近法カメラでは機能しません
  • 正投影カメラでOK
0 投票する
2 に答える
469 参照

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

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

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

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

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

libgdx - スプライトを拾うには?

簡単な質問: libgdx でスプライトを取得するにはどうすればよいですか? これは、画面をクリック/タッチすると、どのスプライトがクリックされたかをチェックすることを意味します。