問題タブ [raytracing]

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 投票する
5 に答える
2669 参照

c# - ポインタ配列をメモリに固定する

私は現在、趣味のプロジェクトとしてC#のレイトレーサーに取り組んでいます。私はc++実装からいくつかのトリックを実装することによってまともなレンダリング速度を達成しようとしていますが、問題が発生しています。

レイトレーサーがレンダリングするシーン内のオブジェクトはKdTree構造に格納され、ツリーのノードは配列に格納されます。私が問題を抱えている最適化は、できるだけ多くのツリーノードをキャッシュラインに収めようとしているときです。これを行う1つの方法は、ノードに左側の子ノードへのポインターのみを含めることです。その場合、配列内の左側の子の直後に右側の子が続くことは暗黙的です。

ノードは構造体であり、ツリーの構築中に、静的メモリマネージャークラスによって配列に正常に配置されます。私が木を横断し始めると、最初はうまく機能しているように見えます。次に、レンダリングの初期の時点(毎回ほぼ同じ場所)で、ルートノードの左側の子ポインターが突然ヌルポインターを指しています。配列がヒープ上にあるため、ガベージコレクターが構造体を移動したという結論に達しました。

アドレスをメモリに固定するためにいくつかのことを試みましたが、必要に応じて、アプリケーションの存続期間全体にわたってそれらのどれも持続しないようです。'fixed'キーワードは、単一のメソッド呼び出し中にのみ役立つようであり、'fixed'配列の宣言は、ノードがそうではない単純な型でのみ実行できます。これを行うための良い方法はありますか、それともC#が意図されていなかったものの道をはるかに下っていますか?

ところで、c ++に変更することは、おそらく高性能プログラムにはより良い選択ですが、オプションではありません。

0 投票する
4 に答える
16891 参照

cuda - CUDA によるレイトレーシング

現在、レイトレーサーを実装しています。レイトレーシングは非常に計算量が多いため、とにかく CUDA プログラミングを検討する予定であるため、2 つを組み合わせた経験がある人がいるかどうか疑問に思っていました。計算モデルが一致するかどうかはわかりませんが、何が期待できるか知りたいです。私はそれがまさに天国で行われた試合ではないという印象を受けますが、まともな速度の増加は何もないよりはましです.

0 投票する
3 に答える
2528 参照

java - 水中音響での使用に適応できるJavaベースのレイトレーシングモデルはありますか?

水中光線ベースの音響のモデリングに使用するのに適した、オープンソースのJavaベースのレイトレーシングシステムを探しています。このようなパッケージは、Gaussian Ray Bundle(GRAB)を使用したComprehensive Acoustic System Simulation(CASS)に似ているかもしれませんが、プレゼンテーションで使用できるオープンソース、自由に使用、または自由に変更できるモデルを好みます。オープンフォーラム(JavaOneなど)へ。

私のニーズに最適なモデルは、環境モデル、水深測量(海底地形としても知られています)、およびエミッター周波数スペクトルに基づく光線経路モデリングを提供します。注:マルチパス効果(反射と屈折を含む)が私の主な関心事であるため、最高のパッケージですぐに使用できます。

媒体を介してさまざまな速度を処理できる標準のJavaベースのレイトレーシングパッケージ(光学または音響)は、少し最適ではありません。別の言い方をすれば、屈折率は媒体全体で連続的に変化します(ただし、その一次導関数は連続的ではない場合があります)。

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

graphics - 多数のピクセルのアルファブレンディングの式は何ですか?

多数の RGBA ピクセルがあり、それぞれにアルファ コンポーネントがあります。

したがって、ピクセルのリストがあります: ( p0 p1 p2 p3 p4 ... pn ) ここで、 p_0_ は前面ピクセルで、 p_n_ は最も遠い (背面)。

最後の (またはいずれかの) ピクセルは必ずしも不透明ではないため、結果として得られるブレンドされたピクセルも何らかの形で透明になる可能性があります。リストの最初から最後までブレンドしていますが、その逆ではありません (はい、レイトレーシングです)。そのため、いつでも結果が十分に不透明になった場合、十分に正しい結果で停止できます。この方法で混合アルゴリズムを適用します: (((( p0 @ p1 ) @ p2 ) @ p3 ) ... )

R、G、B だけでなく、A 成分の正しい配合処方を教えてください。

UPD : 色をブレンドする決定されたプロセスで、多くの数式を使用できるのはどうしてでしょうか? ある種の近似ですか?私にとっては、これはおかしいように見えます。数式は、実際に効率や最適化が得られるほど違いはありません。誰でもこれを明確にできますか?

0 投票する
12 に答える
16332 参照

algorithm - タイルベースのゲームでどのタイルが点灯するかを計算する(「レイトレーシング」)

光源をサポートしたい、タイルベースの小さなゲームを書いています。しかし、私のアルゴリズム-fuは弱すぎるので、助けを求めてあなたのところに来ます。

状況は次のようになります。タイルベースのマップ(2D配列として保持)があり、単一の光源といくつかのアイテムが周りに立っています。どのタイルが光源によって照らされ、どのタイルが影になっているのかを計算したいと思います。

おおよそ、それがどのように見えるかを視覚的に補助します。Lは光源、Xは光を遮るアイテム、0は点灯しているタイル、-sは影になっているタイルです。

もちろん、部分的に隠されているためにタイルが半分影になっている可能性があるフラクショナルシステムはさらに優れています。アルゴリズムは完全である必要はありません-明らかに間違っていなくて、適度に速いだけではありません。

(もちろん、複数の光源がありますが、それは単なるループです。)

テイカーはいますか?

0 投票する
6 に答える
4051 参照

graphics - 強い歪みのないテクスチャ付きの球

いくつかのゲームで、テクスチャの良いボール、惑星、その他の球体オブジェクトを見てきました。前回は UFO: aftermath でした。u および w 座標としてテクスチャを緯度/経度にスプラッタするだけでは、極に対して多くの醜いテクスチャ歪みが発生します。

私自身、歪みを最小限に抑えて球面マップを実装する 1 つの方法だと考えることができます。正方形ではなく三角形にマッピングする。しかし、私はアルゴリズムを知りません。そのような球の頂点とテクスチャ座標を生成する方法は?

また、単純な平らな正方形の地図から完全な球形の地図を生成する方法がわかりません。そのようなマップを実際に問題なく描画する直感的な方法はありますか?

ただし、歪みを最小限に抑えて、または最小限に抑えて球をレンダリングする他のアルゴリズムはありますか?

レイトレーシングとラスタライズのアルゴリズムはどちらも興味深いものです。

0 投票する
4 に答える
7663 参照

algorithm - 光線と多角形の交点を見つける最速の方法は何ですか?

質問が尋ねるのとほぼ同じです。できれば疑似コードで回答し、参照してください。正解は、単純さよりも速度を重視する必要があります。

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

c# - C# の RayTracer プロジェクト

大学時代、レイトレーシング (グラフィック合成) の科目を取り、C++ で 3D レイ トレーサーを作成する機会を得ました。'04' の大規模なハード ドライブのクラッシュでコードを失ったことを除けば、それはとても楽しいものでした....多くのファイルが失われました...

1 行で書かれていない C# で使用できる RayTracer はありますか? 拡張できるように、適切なオブジェクト指向で書かれたものはありますか?

どんな助けでも大歓迎です。

0 投票する
7 に答える
3265 参照

programming-languages - コンピュータ グラフィックス: 3D レンダリングのレイトレーシングとプログラミング

多くの一流大学が、コンピューター グラフィックスに関連する科目を CS 専攻で教えるコースを学生に提供していることに気付きました。悲しいことに、これは私の大学が提供しているものではなく、今後数年のうちに実際に取り組みたいと思っています。

私がいくつかの大学で見つけたいくつかのプロジェクトは素晴らしいですが、主に次の 2 つのことに興味があります。

  • レイトレーシング:
    • 今後 2 年以内に Raytracer を書きたいと思っています。何を知る必要がありますか? 私はまだ素晴らしいプログラマーではありません (Java、C、および Prolog が現在の私の主な言語です) が、毎日ゆっくりと学習しています。また、私の数学のバックグラウンドはそれほど優れていないので、読むべき本のヒントやそのようなプログラムを書くためのアドバイスは素晴らしいでしょう. 私はこれらのことをすぐに拾う傾向があるので、私に参考文献を気軽に投げてください.
  • 3D レンダリング モデルのプログラミング
    • 私は、学生がモデルを開発し、ゲームで使用したいくつかのプロジェクトを見てきました。ラスター イメージを使用して 2D ゲームをいくつか作成しましたが、3D モデルを使用したことはありません。これらのモデルのプログラミングに関して、何を学ぶ必要がありますか? 以前は 3D Studio Max と Cinema4D を使用していましたが (すべてのコースで Maya を使用しているようですが)、約 4 年間触れていませんでした。

あいまいで、正直に言って、ばかげた質問を投稿して申し訳ありません。それは私がしばらくの間やりたかったことであり、私自身の時間で開発するための大きなプロジェクトとして良いものです.

関連する質問

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

math - カメラの画面を投写する

単純なレイ トレーサーを作成することで vectormath についてもう少し学ぼうとしており、それについていくつか読んでいますが、見つけることができなかったのは、一次光線の方向を決定する方法です。これは単純な問題のように聞こえますが、おそらくそうかもしれませんが、私の現在の知識では、それを理解することができませんでした.

私は、カメラ (ベクトルとしての位置と方向に過ぎない) が必要であると考え、カメラから、最終的な画像を表すカメラの前のスクリーンに一次光線を発射しました。私が理解できないのは、画面の隅の座標です。画面を知っていれば、一次光線の方向を見つけるのは簡単です。

回転行列を必要としない単純な数学だけを使用して、画面を把握できることを願っています。私の最善の推測はこれです:

カメラの方向をベクトルとして持っています。この方向は、投影スクリーンの平面の法線に等しくなります。したがって、画面の法線があり、そこから画面の中心を簡単に計算できます。

距離は、画面とカメラの間の距離です。しかし、それは私が迷子になる場所であり、カメラの任意の方向の平面のコーナー座標を把握する方法を見つけることができません.

ここで私を助けてくれる人はいますか?そして、私の方法がおそらく機能しない場合、何が機能しますか?