問題タブ [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.
xna - オクトリーレイキャスティング/レイトレーシング-再帰のない最良のレイ/リーフ交差
再帰なしでボクセル八分木に光線を当てる方法について、誰かが短くて甘い説明を提供できますか(または良いチュートリアルを提案できますか)?
複雑なモデルを八分木に焼き付けたので、光線と交差する最良/最も近い葉を見つける必要があります。標準のドリルダウン反復ツリーウォーク:
- ルートノードを取得します
- 交差点を確認してください
- いいえ?出口
- はい?光線の原点に最も近い光線と交差する子を検索します
- 葉に到達するか、木を出るまでループします
常に葉を返しますが、たとえば地形がツリーに格納されている場合、光線の原点に最も近いノードに、必ずしも最適な葉が含まれているとは限りません。これは驚くべきことではありません。遠いノードにある背の高いオブジェクトは、このアプローチを使用してテストされません。
これを再帰的に行うには、ツリー内で交差するすべての葉を見つけ、距離で並べ替えて、光線の位置に最も近い葉を選択します。ただし、これは遅く、再帰が必要です。
ブレゼンハムの線アルゴリズムを使用してツリーをウォークする方法について少し読んだことがあります。これには、各ノードに隣接する隣接ノードへのポインターが含まれている必要があるようですが、これを便利な方法で実装する方法がわかりません。
助言がありますか?固定長配列または潜在的なスタックエントリごとに要素を持つ構造体を使用してHLSLでスタックを偽造することはできますが、そのためのメモリ要件は、十分に大きなツリーで機能しなくなる可能性があります。
ヘルプ。
2d - シェイプレイキャスティング:何かと交差しない最後の位置を決定する最良の方法は?
私は Box2D (具体的には jBox2D) を使用しており、テトリスのようなブロック衝突を行おうとしています (つまり、互いにオーバーラップする直前に停止して、シームレスにインターロックします)。
形状が別の形状と交差する前に、「光線」に沿った最後の位置を決定する最も簡単な方法は何ですか? (つまり、他のブロックとスムーズに連動するように、ブロックが特定の方向に移動した場合に最終的にどの位置に到達するかを決定します) Box2D は一般的なレイキャスティング機能を提供しているようですが、提供されている機能を使用してこれを簡単に行う方法がわかりません。
(注: 一般に、ブロック ゲームはグリッドとしてモデル化できます。これにより、実際の 2D/3D プロパティに依存する必要がないため、衝突/目的地の検出が大幅に簡素化されます。ただし、このようなグリッドを使用することはできません。私の状況では)
c - CSG ツリーを使用したレイ キャスティング
私は、レイ キャスティングを実行し、CSG ツリーを使用する必要があるプロジェクトに取り組んでいます。しかし、このプロジェクトで CSG ツリーを使用する方法や実装する方法がわかりません。レイ キャストを実行して、最終的な答えを出すことができます。私の問題は、実際にツリーを実装してリンクする方法です。
opengl - glUnProject を使用して openGL で Touch を計算する方法
こんにちは、私は近くの計画と遠くの計画を見つけました..次に、これを使用して識別する方法は、オブジェクトに触れました..誰か助けてください..これが私のコードです..
opengl - レイキャスティングボクセルとOpenGL
私は現在、レイキャスティングとボクセルを検討しています。これは素晴らしい組み合わせです。Sebastian ScholzによるVoxelrendererはこれを非常にうまく実装しますが、OpenGLも使用します。彼の公式がどのように機能しているか疑問に思っています。レイキャスティングとボクセルでOpenGLをどのように使用できますか?レイキャスティングのアイデアは、光線がすべてのピクセル(またはライン、つまりDoom)にキャストされ、結果を描画するというものではありませんか?
math - 1つの円上の2つの接線の交点を計算しますか?
レイキャスティングスタイルの関数を使用して実行しようとしましたが、維持可能な結果が得られません。1つの円の2つの接線間の交点を計算しようとしています。この写真は説明に役立つはずです:
この問題についてGoogleで検索してstackoverflowを検索しましたが、この問題に類似したものは見つかりませんでした。何か助けはありますか?
c# - 2D ハイトマップでの基本的な (偽の) レイキャスティング
基本的に私がやろうとしているのは、非常に基本的なレイキャスティング システムを使用して 2D ハイトマップをシェーディングすることです。しかし、それは正しく機能しておらず、私はこれについて数時間頭を悩ませてきました.それを見て、または非常に複雑であるため、頭を悩ませることは決してありません。
私はこのような地図を持っています:
そして、レイキャスティングは私にこれを与えています(これは単なるデバッグ色であることに注意してください。赤はレイインターセプトですが、意図した位置の前(シェーディング)、青は正しい場所でのレイインターセプトです(ハイライトまたはそのまま)、そして黄色は、while ループのカットアウトの前に光線の相互作用がまったくなかったことを意味します)。
結果は、後ろ向きの斜面と大きな山の後ろの領域 (影) が赤になり、太陽に面した斜面 (ハイライト) が青になります。黄色があってはなりません。したがって、この画像は、すべての光線が間違った場所に当たっているか、光線がターゲットに到達する前に常に別の場所で交差していることを示していますが、これは不可能です。
この時点で、問題は私のトリガーにあると強く思います。
レイクラスは次のとおりです。
また、形式として、各レイをキャストしている関数と、それを呼び出す方法は次のとおりです。
if (lighting) CastSunRays(1f, MathHelper.PiOver4);
android - 2D ゲームに RayCasting を使用する
以前の質問の 1つで、OpenGL の onTouchEvents について尋ねました。アイデアは、画面を押した場所に正方形を描くシンプルなアプリを作成することでした. しばらくして、本来あるべき方法ですべてを行うアプリを思いつきましたが、正方形は再描画されず、画面から消えただけでした。
これを解決するには、2D の観点から OpenGL の 3D 環境にレイを送る必要があると言われましたが、レイキャスティングについて読んだときに使用されているように見えたので、私の人生では理由がわかりません。主に照明効果用。レイキャスティングとは正確には何ですか?四角形の位置を変更する必要があるのは、タッチレジスタの深さに関係なく、座標を見つけることができる x 軸と y 軸だけであるのに、なぜ z 軸が必要なのですか?
c++ - CPUレイキャスティング
CPU で octree をレイ キャスティングしようとしています (GPU の方が優れていることはわかっていますが、現時点では動作しません。octree テクスチャが正しく作成されていないと思います)。
何をする必要があるかを理解しています。これまでのところ、各ピクセルにレイをキャストし、そのレイが octree 内のいずれかのノードと交差するかどうかを確認しています。存在し、ノードがリーフ ノードでない場合は、光線が子ノードと交差するかどうかを確認します。葉ノードがヒットするまでこれを続けます。リーフ ノードにヒットすると、そのノードの色が取得されます。
私の質問は、これを画面に描画する最良の方法は何ですか? 現在、色を配列に保存してglDrawPixelsで描画していますが、レンダリングにギャップがあり、投影が間違っているため、正しい結果が得られません(glRasterPos3fvを使用しています)。
編集:ここまでのコードはいくつかありますが、クリーンアップが必要です。申し訳ありません。octree レイ キャスティング コードは、必要かどうかわからないので省略しましたが、役立つ場合は投稿します :)
javascript - ポイント イン ポリゴン (Google Maps API v3)
ポリゴン描画に「The Di Lab」のプラグインを使用する Google Maps API v3 があります。
http://www.the-di-lab.com/?p=219
そして、レイキャスティングに tparkins プラグインを使用します。
https://github.com/tparkin/Google-Maps-Point-in-Polygon
ただし、ポリゴン プラグインからポリゴン オブジェクトにアクセスする必要があります。実際にマップ上にポリゴンをプロットするポリゴン プラグインのセクションは次のとおりです。
そして、次のようにマップを作成します。
var creator = new PolygonCreator(map);
次に、次の呼び出しでポリゴン内のポイントを実行する必要があります。
var isWithinPolygon = polygonObj.containsLatLng("52,0");
たとえば、次のようになります。
基本的に必要なのは、最初のスクリプトのポリゴン オブジェクトだけです。2 つの JavaScript ファイルは次のとおりです。
http://80.229.168.62/guild_service/server/js/polygon.min.js
http://80.229.168.62/guild_service/server/js/latlngcontains.js
スクリプトを実行しているページは次のとおりです。