問題タブ [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.
android - Android での 3D ピッキングに関する質問 (OpenGL ES 2 を使用)
3D ピッキングについて助けが必要です。
ここで動作する方法を使用しています。要するに、私が持っているものは次のとおりです。
2と3の場合、どうあるべきかわかりません(参照のように1、-1を入れましたが、機能しません)
次に、私のルート オブジェクトの場合 (疑似コードのみに従います):
それは私が持っているものですが、うまくいきません。受け取った outPoint は、クリックしたと思われるポイントにさえ近くありません。私は一週間以上ウェブで検索してきました。しかし、それを解決する方法がわかりません。ヘルプ!
c# - SkinnedModel での XNA トライアングル ピッキング
私のゲームでは、SkinnedModel パイプラインと AnimationPlayer を使用して、モデルの読み込みと表示を行っています。パイプラインから頂点とインデックスのリストを作成することで、三角形を使用したレイ ピッキングを実装しました。これは機能しますが、インデックスは静的であり、モデルの最初のポーズでのみ機能します (モデルが歩くとき、腕が前後に動くのを見ると、ピッキングではモデルが 1 つの位置でしか見えないため、十分ではありません)。
実行時に頂点とインデックスを取得することで、三角形を使用したレイ ピッキングに変更しました。これにより、AnimationPlayer から指定された boneTransforms によって頂点を変換できます。私が今抱えている問題は、頂点が収集されているときに頂点を変換する方法がよくわからないことです
以下にコードを掲載しますが、次の行と関係があると確信しています: Matrix worldMatrix = Orientation * Matrix.CreateTranslation(Position); その後、特定の頂点が取得されたとき: vert = Vector3.Transform(vert, boneTransforms[mesh.ParentBone.Index] * worldMatrix);
*Matrix.CreateTranslation(Position) を省略すると、頂点が近くなりますが、正しくないことがわかりました。私は 3D 空間と変換を扱うことにあまり熟練していないので、助けていただければ幸いです。
コード:
//クラスのモデルから頂点を取得するための関数は次のとおりです
// ピック レイを取得する関数は次のとおりです
//交差をチェックするための 2 つの関数を次に示します。
//そして最後に、それが役立つ場合は、すべてを実現する更新のセクション
opengl - レイキャスティングによるオブジェクトピッキング
ボックス内のマウスヒットを検出するためのレイキャスティングアルゴリズムの不正確さに問題がありました。私はこれを適切に修正する方法について完全に途方に暮れていて、それは何週間も私を悩ませてきました。
この問題は、画像([0、0、-30]を中心とするボックス)で最も簡単に説明できます。
黒い線は実際に描かれたヒットボックスを表し、緑のボックスは実際にヒットしたように見えるものを表します。オフセット(ボックスが原点から離れていると大きくなるように見える)であり、描画されたヒットボックスよりもわずかに小さいことに注意してください。
関連するコードは次のとおりです。
レイボックスキャスト:
光線へのマウス:
実際の光線を線で描いてみましたが、描いた箱と正しく交差しているようです。
ボックスの位置によってすべてのポイントと光線の原点/方向を差し引くことでオフセットの問題を部分的に修正しましたが、なぜそれが機能し、ヒットボックスのサイズが依然として不正確なままであるのかわかりません。
アイデア/代替アプローチはありますか?必要に応じて提供する他のコードがあります。
java - レイピッキングコードのAndroid微調整に関するOpenGlES
min3dとオンラインで見つけたコードを使用してレイピッキングを実装しましたが、実装すると少しオフになることがあります。つまり、1つのボックスをクリックすると、間違ったボックスがピッキングされることがあります。時々、選んだものが画面上にさえない。そもそもこれを実装するにはかなりのコードが必要でしたが、私が呼び出す主な2つのメソッドは次のとおりです。
今、私は錐台カリングの実装も試みましたが、それを最適化するために多くのことをしなかったため、それがネイティブに実行されていないため、処理が遅くなります。しかし、誰かが見て、多分それをより正確にする方法についてのいくつかの指針を私に与えることができれば、それは素晴らしいでしょう。ここで私はピッキングメソッドを呼び出します。
python - glGetFloatv を使用して pyglet でモデルビュー マトリックスを取得する
私は pyglet を使用して Python で 3D ビジュアライゼーションを行っています。モデルビューと射影行列を取得してピッキングを行う必要があります。以下を使用してウィンドウを定義します。
次に、すべてのウィンドウ イベントを定義します。
クリックすると印刷されます...
クラッシュします。GL_MODELVIEW_MATRIX で glGetFloatv を呼び出すと、16 個の値が返されるはずですが、それを処理する方法が正確にはわかりません。= GLfloat*16 を定義しようとしましたが、次のエラーが発生します。
これらの行列を取得するにはどうすればよいですか?
android - OpenGL: gluUnProject が間違った座標を返す
シーン (Android アプリ、OpenGL ES) を次のように設定します。
シーンは適切にレンダリングされ、z=-10 の四角形と z=-30 の 1 つの巨大な背景四角形が含まれています。私は今、このようにレイピッキングを実装しようとしています (このスレッドから取得:
画面へのタップは、次のようにテストされます。
予想される動作: 返される X、Y 座標は、深さ = -30 (BACKGROUND_Z) でタップされた点に似ています。
実際の動作: 画面中央をタップすると、正しい X、Y 座標が返されます。しかし、画面の中心とタップされたポイントの間の距離は正しく解釈されません。何らかの要因で縮小されているようです。たとえば、画面の中央をタップすると [0,0] が表示され、画面の左端をタップすると ~[-3600,0] が表示されますが、代わりに [-1.13,0] が表示されます。以前にタッチしたポイントが画面の中央になるようにビューをパンすると、本来のように ~[-3600,0] になります。
これは、シーンを 0.001 ずつスケーリングしたことが原因でしょうか? さまざまな構成をテストしました(gluLookAtの前にスケーリングを移動するか、完全に削除します)が、問題は解決しません:(
画面左端でのタッチのサンプルデータ出力:
unproject() に渡されるタッチポイント:
射影行列:
モデル マトリックス:
unproject() 出力:
ここで私の頭に浮かぶのは、返された z 値が間違っているように見えるということです。 unproject() に渡された z 値は -30 です (上記のとおり)。
ios - OpenGL ES 2.0レイピッキング、ファーポイント
レイピッキングで私を助けてください
_modelViewProjectionMatrixと_normalMatrixがシェーダーに配置されます
とタッチエンドで
どうすれば遠いポイントを取得できますか?そして、私のnear_pointは正しいかどうか?
ありがとう!
java - 方向ベクトルに対するカメラのピッチ/ヨー
私がやろうとしているのは、カメラからレイをキャストすることです。カメラの x、y、z 座標、およびピッチとヨーを知っています。レイトレーシング アルゴリズムに渡すことができるように、その方向ベクトルを計算する必要があります。
カメラのアップ ベクトルは (0, 1, 0) です。カメラの視点から見た「ピッチ」は、上下を見ています。
(行列を使用したくないのですが、必要に応じて使用します)
java-3d - java3d オブジェクトのピッキング
ユーザーがコードを知らなくてもカスタムシーングラフを作成できるJava3d GUIを構築しています。マウスを使用して特定のボックスを選択し、それらを移動できるようにしたい..そのためには、選択する必要があります..
私のシーングラフには、2 つのボックスと 2 つの球体があります。そのうちの1つを選び、どれが選ばれたかを知りたいだけです。特定の球体やボックスをクリックすると、クリックされたオブジェクトの種類を見つけることができますが、それがどのオブジェクトであったかを知る方法がわからないので、それを処理できます。
誰かが私に問題の解決策を提案できますか? 私が知りたいのは、どのオブジェクトが選択されたかを知ることだけです。それで全部です。
android - glreadpixels で色を取得する方法は?
Androidで画面上のタッチポイントの色を取得しようとしています。しかし、RGB = (0, 0, 0) 値のみが表示されます。他のサイトも検索しました。以下にいくつかのコードを追加する必要があると言われましたが、何も変わりませんでした。
アドバイスをいただければ幸いです。