問題タブ [raycasting]

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 に答える
598 参照

opencl - リアルタイム ボクセル レイキャスターの同じ実装での opencl c99 と c++ の間の異なる動作

ボクセル レイキャスティング エンジンを開発するために opencl を使用しています。Crassinの Gigavoxels に似たようなことをしようとしています。この論文では、ボクセル データを格納するために octree を使用しています。今のところ、レンダリング データを含むリーフに到達するまで、octree 内を下降しようとしています。

私は 2 つの実装を作成しました。1 つは GPU 上の OpenCl で、もう 1 つは CPU 上の C++ です。私が経験している問題は、GPU でアルゴリズムが octree 内の葉に到達するまで間違った数のレベルを通過していることです。CPU バージョンで正しい結果が得られます。両方のバージョンのアルゴリズムは同じで、コードはほとんど同じです。

何が問題なのか知っていますか?ハードウェアの問題か、OpenCl の問題か、それとも何か間違っているのでしょうか? 3 つの異なる nVidia GPU で同じ結果が発生しています。

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

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

要求に応じて、extractOctreeNodeAddress を次に示します。

どちらの関数も、いくつかのビット操作を行うだけです。

OpenCL バージョン:

C++ バージョン:

こんにちは、面白いものを見つけました。単一の正確なピクセルとカメラの位置と向きで CPU と GPU のバージョンを比較するさまざまな変数を手動でテストしようとしました。以下のコードでプログラムを実行すると、ピクセルが白く印刷され、値 (> 5.5 は CPU の実装と比較して完全に間違っています) のようになりますが、最後の if 構造をコメントし、最初の if 構造のコメントを外すと、私が得た結果は赤です....これは私には少し説明がつきません。何か案は?

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

c++ - メッシュ三角形とレイの開始/終了の絶対座標を持つ rayTestSingle の使用方法は?

シンプルなものを作成しましたbtCollisionShape(1 つの三角形から作成された triMesh から):

私が作成しましたClosestRayResultCallback

光線の開始と終了があり、変換が適用btCollisionWorld::rayTestSingleされていない場合、どのように実行できますか?btCollisionShape

その間、私は全世界でrayccastを試しました(実際には必要ありません)が、間違っているようです =( no hasHit:

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

graphics - パースペクティブ レイキャスティング

パースペクティブ レイ キャスティングの方法を教えてください。光線分割技術を見てきました。他にどのようなキャスト方法がありますか? 実装しやすいのはどれ?

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

opengl - OpenGLのピッキングとテクスチャのヒットポイントの検索

私は現在、光線を使用したピッキングを検討しています。選択されているモデルを見つけることはできますが、選択されたテクスチャ上の位置を取得するにはどうすればよいですか?この場合、クワッドについて話しています。

編集:また、ヒットポイントが透明/半透明であるかどうかを確認したい場合、シェーダーでこれを確認するのが最善ですか?

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

view - 3D ビュー フラスタム カリング、レイ キャスティング

ビューフラスタムカリングの実装方法をよりよく理解するには、ビューフラスタムカリングに関する追加の理論が必要です。どのオブジェクトが前にあるかを把握するためにレイキャスティングが関与していることを理解しています。したがって、どのオブジェクトをレンダリングしないかを判断します。

CPU使用率が気になります。私が理解していることから、カメラの幅×高さでレイをキャストする必要があり、カメラが見える距離に応じてレイの量を増やす必要があります。さらに、これにシーン内のオブジェクトの量を掛けて、どれがレイに最も近いかを確認する必要があります。

この概念に対する私の理解は正確ですか? これをより効率的に行うにはどうすればよいですか?

編集:

目標は、oct-tree を使用して世界を細分化できるある種のボクセル エンジンを実現することです。数十万の立方体で構成されている可能性があります。

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

android - Augmented Reality + Bullet Physics - rayTest/Ray 選択の問題

Bullet Physics の世界でオブジェクトを選択しようとしていますが、選択できるのは床/地面だけです!!! Vuforia SDK を使用しており、ImageTargets デモ コードを変更しました。次のコードを使用して、タッチしたスクリーン ポイントを 3D 世界に投影しました。

私の物理学の世界で光線テストをしようとすると、地面にしか当たらないようです! レイ テスト コールのコードは次のとおりです。

私は主にトップダウンを見ていることを知っているので、地面にぶつかるはずです。少なくとも私のタッチが世界に正しく投影されていることは知っていますが、地面にあるオブジェクトがあり、そうではないようですそれらに触れることができます!どんなポインタでも大歓迎です:)

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

raycasting - 地形レンダリングアルゴリズムをフリップコードから「フル3D」レンダラーに変換することは可能ですか?

ボクセル技術に基づく地形レンダリングアルゴリズムのこの例(http://www.flipcode.com/voxtut/)を見つけ、それを「フル3D」レンダラーに変換しました。つまり、ハイトマップでは、ペア(x、y)に対して1つのz(up)座標しかなく、「実際の3d」では多くの座標があります。

これを行うには、通常のx、yマップに新しい「z」レイヤーを追加します。たとえば、次のデータセットがあります。

つまり、座標x、y、z(0 <= z<=10または50<=z <= 100)の可視ボクセルがあることを意味します。したがって、このデータセットは、フリップコードで説明されているのと同じように描画します。

これは私のプログラム(かなり遅い)であり、これは最終的なレンダリングです。

このアプローチにはいくつか問題があります。

  1. このアルゴリズムでは、オブジェクトは画面に平行な長いストライプで描画されます(これは、画面の水平座標に1を追加し、カメラと光線上の点の間の距離に一定のddを追加して画面を移動するためです)。描画可能なオブジェクトの間にスペースがある場合、これらの醜いジグザグもあります。これらのストライプの代わりに、他の何か(たとえば、立方体)を使用してオブジェクトを簡単に描画できますか?それとも、より良い品質を作る別の方法がありますか?

  2. 光線は画面上に列を描画しないため(代わりに垂直線分を描画します)、画面上のどのピクセルがすでに描画されているか、どのピクセルが描画されていないかを判別することは困難です。それと何か関係がありますか?

このトピックに関する論文や説明されているアルゴリズムはありますか?

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

three.js - Three.JS- Colladaでの交差点の検出(レイキャスティング)

私のプロトタイプシステムには、Colladaファイルをクリックしたときに交差点を検出する関数があります。交差関数は次のとおりです。

しかし、私が使用するとき:

交差行列は空であり、交差を検出できません!!!

しかし、私が使用するとき:

交差行列を取得でき、それは非常にうまく機能しますが、別の問題が明らかになります(ここを見てください:Three.JS-シーン内のテキストボックスとの競合カメラコントロール

上記の関数にコードはありますか?参考までに、私は簡単なカメラを使用しました:

ありがとう。

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

raycasting - 衝突のためのレイキャスティング

こんにちは、多くの用途で私の 3D ゲームにレイ キャスティングを実装しようとしています。

私はレイ キャスティングについて多くのことを読みました。原点、方向、長さが必要であることはわかっています。光線を発射する角度を見つけるのに苦労しているのは何ですか?何かがあなたの前にあるかどうかを確認するための最良の解決策はレイキャスティングですか? レイキャスティングは古くて悪い技術であるとどこかで読んだことがありますが、それが悪い技術である場合、他のどの方法が撮影に適しているかなど..

ありがとうございました

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

line - 衝突検出のための Three.js レイ キャスティング

レイキャスティングを使って線を引こうとしています。基本的に、「プレーヤー」オブジェクトから全方向に出てくるいくつかの線を設定したいと考えています。

(そのように: https://gamedev.stackexchange.com/questions/35013/how-to-handle-3d-collisions-using-raycasting-with-a-reflection-vector )

これを使用して、衝突検出を視覚的に確認できるようにしたいです。

衝突検出にはさまざまな方法を使用できることはわかっていますが、この方法を学習検出として使用しています。

私の問題は、以下のコードが線を引くことですが、長さがランダムに変化し、常に同じ角度を指しているとは限りません。

var ray = new THREE.Ray( player.model.objects.position, new THREE.Vector3(1, 1, 1));

どんな助けでも感謝します。