コンピューターグラフィックス

コンピューターグラフィックスの研究者やプログラマーのためのQ&A

2
この場合の飽和度を計算する正しい方法は何でしょうか?
xyY色空間のHSV表現を作成しようとしています。色から色相を計算するには、xy色度図でその色と赤(波長745)の間の角度を使用し、白中心として。(x 、y)(バツ、y)(x, y)(13、13)(13、13)(\frac{1}{3}, \frac{1}{3}) 飽和は白との間の距離との比である、白との完全に飽和したバージョンとの間の線との交点である(およびおよび色度図の端)。(x 、y)(バツ、y)(x, y)(x 、y)(バツ、y)(x, y)(13、13)(13、13)(\frac{1}{3}, \frac{1}{3})(x 、y)(バツ、y)(x, y) xy色度図: 私が持っている問題は、色空間を(値= 1で)プロットし、RGBのHSV表現と比較すると、彩度(中心からの距離)が色の「カラフル」と一致していないように見えることです実際には: 私の色空間(彩度が間違っているようです): RGBのHSV色空間: 代わりに飽和度を計算するにはどうすればよいですか?

2
モーションブラーのオブジェクト空間へのレイ変換
私のレイトレーサーは多種多様なオブジェクトをサポートしています。それらを交差させるには、光線をオブジェクト空間に変換する標準的な手法を使用します。モーションブラーを追加するまで、これは素晴らしく機能します。 モーションブラーは、1つではなく一連の変換として説明します(説明を簡単にするために、2つだけとしましょう)。私のアプローチは、両方のキーフレームでレイの逆変換を行い、位置/方向を変更することです。 これは翻訳ではうまくいくように見えますが、回転では壊れます。たとえば、30度と90度回転する2つの三角形があります。 (4つのサンプル、MN再構成、赤いサンプルは2つのキーフレームの近くから来ました) コーナーでは、重複したサンプルが2つの頂点間の直線上にあると予想されます。代わりに、外側に膨らみます。これは間違っています。より興味深い変換を持つより興味深いシーンでは、さまざまな障害モードが発生します。たとえば、45回転するプロペラがあります。 (100サンプル、可視化された法線) いくつかの問題は、BVHの破損によるものです(オブジェクトの極値がキーフレームにあると想定しています)が、ブルートフォースレンダリングでさえ正しくありません。 フォワードトランスフォーム(レイではなくオブジェクトを変換する)のみを行うことでこれをすべて修正できますが、これは可能な場合にのみ機能します(実際には三角形のみ)。 レイトレーサーに、オブジェクトではなくレイを変換することで、変換(特に回転)の線形近似を作成させるにはどうすればよいですか?

1
連続したOpenGL Compute Shader呼び出しの同期
特定の順序で実行する必要があり、出力が以前の入力に依存するいくつかの計算シェーダーがあります。理想的には、クライアント側のバッファーをコピーしてGPUですべての作業を行う必要はありません。 私はコンパイルとリンクとして2つのコンピュートシェーダ持って考えてみましょうprogram_oneとしますprogram_two。GL_SHADER_STORAGE_BUFFERによって書き込まれprogram_one、読み取られるデータを含むを持っているとしますprogram_two。次のことができますか? glUseProgram(program_one); glBindBuffer(GL_SHADER_STORAGE_BUFFER, buffer); glBindBufferBase(GL_SHADER_STORAGE_BUFFER, index, buffer); glDispatchCompute(16, 16, 1); glUseProgram(program_two); glBindBuffer(GL_SHADER_STORAGE_BUFFER, buffer); glBindBufferBase(GL_SHADER_STORAGE_BUFFER, index, buffer); glDispatchCompute(16, 16, 1); 最初の計算シェーダーのすべての呼び出しが、2番目の呼び出しの前に完了することが保証されていますか(読み取りと書き込みの間のデータの競合を回避するためbuffer)?そうでない場合、どのようにそれらを同期しますか?


2
生成されたジオメトリの表面法線を計算する方法
呼び出し元コードからの入力に基づいて3D形状を生成するクラスがあります。入力は、長さ、深さ、弧などです。私のコードはジオメトリを完全に生成しますが、表面の法線を計算するときに問題が発生します。点灯すると、計算中の不正確な表面法線により、私の形状に非常に奇妙な色/テクスチャがあります。私のすべての研究から、数学は正しいと信じています。私の技術や方法に何か問題があるようです。 高レベルでは、生成された形状の表面法線をプログラムでどのように計算しますか?私は自分のコードにiOSでSwift / SceneKitを使用していますが、一般的な答えは結構です。 形状を表す2つの配列があります。1つは、形状を構成する頂点を表す3Dポイントの配列です。もう1つの配列は、頂点を三角形にマッピングする最初の配列のインデックスのリストです。そのデータを取得して、形状の照明を支援する表面法線のセットである3番目の配列を生成する必要があります。(SCNGeometrySourceSemanticNormalSceneKitを参照) 頂点とインデックスのリストは、クラスへの入力に応じて常に異なるため、サーフェス法線を事前に計算したりハードコードしたりすることはできません。

2
リアルなレンダリング:人間の目と脳のどのプロセスを考慮する必要がありますか?
フォトリアリスティックレンダリングの目的は、実際のカメラがキャプチャするようにイメージをレンダリングすることです。これはすでに野心的な目標ですが、特定のシナリオでは、さらに進めたい場合があります。人間の目がそれを捕らえるように、または人間がそれを知覚するように画像をレンダリングします。あなたはそれをvisiorealisticまたはperceptiorealistic renderingと呼ぶことができますが、誰かがキャッチーな用語を思い付くことができたら(または既に存在するものがあると言って)私はそれを感謝します。 ここに私のポイントを明確にするいくつかの例を示します。低照度でカメラを使用して写真を撮ると、良いレンズを持っているか、ノイズの多い画像が得られます。人間の観察者にとって、暗所視が始まり、プルキンエ効果が生じます(色が青にシフトします)。この効果は、LDRディスプレイに画像を表示するときに失われるHDR輝度情報に依存します。さらに、人間の脳は奥行き情報を使用して、知覚された画像を「フィルタリング」することがあります。これは、最終的な(非ステレオ)レンダリングで失われる情報です。 完全なリストを作成することは、おそらくとらえどころのない目標です。あなたが私が考慮する必要がある目と脳の効果のいくつかを提案してもらえますか?

1
画像の2Dフーリエ変換はどのように機能しますか?
1Dフーリエ変換が信号をその成分周波数に分離する方法は理解していますが、2Dフーリエ変換が2D画像に与える影響を理解するのは困難です。 別の質問から、ジョンカルスベークはノイズ関数の品質の測定に関する興味深い論文にリンクしました。これにより、さまざまなノイズ関数とそれぞれのフーリエ変換が示されました。 これは、ピクセルデータの離散変換ですか、それとも任意のポイントでノイズを生成するために使用される連続補間関数の連続変換ですか? 環状形状は、可能なあらゆる角度で画像の中心を通る線の1Dフーリエ変換を行うことに類似していますか?または、可能な角度ごとの変換も、中心を通る線に沿ってのみではなく、2D空間全体で測定されますか?入力画像のどのような変化がフーリエ変換のどのような変化に対応するかについて、直感的な感覚を得ようとしています。

1
ラジオシティVSレイトレーシング
基本的にラジオシティがこれを可能にします: ラジオシティに関するコーネル大学のチュートリアルでは、次のことが言及されています。 画像のレイトレース版では、直接反射によって視聴者に到達する光のみが表示されるため、色の効果が失われます。 ただし、ウィキペディアでは: ラジオシティは、表面に到達する照明が光源から直接来るだけでなく、光を反射する他の表面からも来るという意味でのグローバル照明アルゴリズムです。 ... ラジオシティ法から現在のコンピュータグラフィックスコンテキスト導出では、熱伝達におけるラジオシティ法(および基本的に同じです)。 また、レイトレーシングが可能な場合: 反射(拡散反射)や散乱(つまり、伝播媒体、粒子、または2つの媒体間の界面の不規則性による直線経路からの光線の偏向など)のさまざまな光学効果のシミュレーション そのチュートリアルでは、これらの効果を考慮していませんか、またはレイトレーシングで有効にするために使用できるラジオシティメソッドがありますか? ない場合は、これらの光学的効果は完全にラジオシティをシミュレートするかであることができませんでしたラジオシティアルゴリズム拡散反射の問題を解決する上で、より効率的ですか?

1
水面を包むための偏光反射と屈折
周回する宇宙の生息地で水のリアルな画像をレンダリングしたい。画像をリアルタイムで生成する必要はありませんが、数週間もかかることは望ましくありません。私は数時間または数日で現実的な画像を生成できるアプローチを探しています。 生息地は円筒形で、湾曲した内面が生活空間です。円柱の軸を中心とした回転は、重力の近似値を提供します。私はこれの物理学のシミュレーションの詳細を探しているのではなく、画像のレンダリングだけを探しています。 私が知りたい特定の側面は、偏光です。水面から反射された光は偏光され、水に入った光は反射光に対して垂直に偏光されます。この効果を無視して、反射および透過する光の割合を単純にモデリングすると、水面が1つしかない場合でも十分に機能しますが、円筒形の生息地に曲面の大部分を占める水域がある場合、特定の光線が生成されます広範囲の異なる角度での多重反射。つまり、反射される光の割合は、以前に適用された偏光角に依存します。 湾曲した水面からの複数の反射の現実的な画像を提供できるような効果を組み込んだ既存のアプローチはありますか?また、偏光を使用して屈折をモデル化する必要があります。水は場所によって浅くなるので、偏光屈折が結果に影響を与えると予想しています。 そうでない場合、既存のレイトレーサーを適応させることはできますか、またはゼロから始めるアプローチが必要ですか? 私は、臨時の観察者に現実的なものを渡すだけでなく、予期しない効果を発見するために、リアリズムを探しています。明らかに、ほとんどのオブザーバー(私を含む)は日常生活に馴染みがないため、探している効果を知りません。そのため、私は「説得力がある」よりも「合理的に物理的に正しい」を探しています。

1
タイル化できるノイズ関数を作成するのに2倍の費用がかかるのはなぜですか?
いくつかの場所で、Perlinノイズループをシームレスに作成するには、わずかに異なる方法で2回計算し、2つの結果を合計する必要があることを見てきました。 このPerlinノイズ数学FAQは、式を提供します: FL O O P(x 、y、z)= (t − z)⋅ F(x 、y、z)+ z⋅ F(x 、y、z− t )tFloop(バツ、y、z)=(t−z)⋅F(バツ、y、z)+z⋅F(バツ、y、z−t)tF_{loop}(x, y, z) = \frac{ (t - z) \cdot F(x, y, z) + z \cdot F(x, y, z - t) }{ t} ノイズ関数方向にループさせる。また、これを拡張して、2次元でループするには 4回の評価が必要であり、3次元でループするには8回の評価が必要であると述べています。FFFzzzFFFFFF これにより、タイル間のシームレスな結合が連続的であるだけでなく継続的に微分可能であることを理解していますが、必要なタイルサイズを法としてグリッドポイントを減らしてノイズ関数を1回評価するだけで、直感的にそうなると思います。ノイズ関数が、すぐに周囲のグリッドポイント(2Dノイズの場合は4、3Dノイズの場合は8)のみに基づいている場合、計算するポイントがタイルの右端を通過するときは、必ず左端のグリッドポイントを使用します他のグリッドポイントと同じ品質のノイズですか? この複数の計算手法をいくつかの場所で見てきたので、何らかの利点が必要だと思いますが、グリッドポイントが大きくなりすぎて最初に戻るように単純に折り返すという欠点を見つけるのに苦労しています。私は何が欠けていますか?
12 algorithm  noise 

5
3Dグラフィック表現の標準仕様はありますか?
コンピューターグラフィックスに関する本を読んでいますが、ある時点で、.datファイルから作成された3Dモデルを示しています。 .datファイルを作成するためのいくつかのルールを次に示します。 頂点の位置/面のリストで構成 反時計回りに書かれた 面はドット(。)で終わります 分数も許容されます これが標準かどうか、そうでない場合は、3Dオブジェクトを定義する標準的な方法を知りたいと思います。 また、仕様がある場合、誰がそれを定義し、どこで見つけることができますか?
12 3d 

1
光沢をラフネスに、またはその逆に変換するために受け入れられている方法は何ですか?
最新のレンダラーのほとんどは物理ベースのマテリアルを使用しており、そのモデルはしばしば粗さに対してパラメーター化されています。これがレンダラーの場合に常に当てはまるわけではないため、従来のアセットには、粗さの概念がないことがよくあります。代わりに、「光沢」または「鏡面反射力」を共通のマテリアルパラメータと見なします。 2つの間に正確な変換がないことを理解していますが、鏡面反射光のパワーまたは光沢がわかっているマテリアルの粗さを取得するための経験則/おおよその方法はありますか?
12 specular  brdf  pbr 

1
「makeContextCurrent」は正確に何をしますか?
私はその機能についてかなり混乱しています。GLFWコンテキストリファレンスは次のように述べています。 この関数は、指定されたウィンドウのOpenGLまたはOpenGL ESコンテキストを呼び出し側スレッドの現在のコンテキストにします。コンテキストは、一度に1つのスレッドでのみ最新にすることができ、各スレッドは一度に1つの現在のコンテキストのみを持つことができます。 しかし、それは私にはあまり役に立ちません。メソッドの ように機能しglBind-ますか?(glBindBuffer、glBindVertexArrayなど)
12 opengl  c++ 

1
間接光の寄与を計算するときに、コサイン加重半球サンプリングでNdotLが必要ですか?
均一な半球のサンプリングから余弦加重の半球のサンプリングに変換するとき、記事のステートメントに混乱します。 私の現在の間接的な貢献は次のように計算されます: Vec3 RayDir = UniformGenerator.Next() Color3 indirectDiffuse = Normal.dot(RayDir) * castRay(Origin, RayDir) 内積がcos(θ)の場合 しかし、より良いサンプリングに関するこの記事(http://www.rorydriscoll.com/2009/01/07/better-sampling/)では、著者はPDFが(cos(θ)/ pi)であることを示唆しており、その証拠はありません。 NドットL計算。 私の質問は-PDFに含まれているため、通常のドットrayDirectionを実行する必要がないということですか、それともPDFに追加されているのですか?


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.