問題タブ [phong]
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.
webgl - WebGl Phong シェーダーのバグ
私は webgl で単純な phong シェーダーに取り組んでおり、近づいていると思いますが、まだ何かが間違っています。デッド・ギブ・アウェイ: ビルボードを持っていて、それを転がすと (車輪のように回転する)、ライトアップされたビルボードの部分が一緒に回転します:(.モデルの問題のように見えるので、これは私を混乱させますマトリックスですが、変換によりすべての位置と回転が正しくなりますが、照明が間違っているだけですビューマトリックスと同じように、動き回って自由に見ることができ、すべてが適切な場所に配置されていますが、照明が間違っています.
これが私のシェーダーです(空間の定義を除いて、わかりやすくするためにモデルマトリックスの照明をGPUに移動しました){githubで読みたい場合:https ://github.com/nickgeorge/quantum/blob/master/index .html#L41 }
どうもありがとうございました。他に追加するのに役立つものがあればお知らせください。
three.js - three.js をインポートした Blender モデルで、MeshPhongMaterial のambient プロパティを false に設定できますか?
私は学生プロジェクトを行っており、アンビエント ライトとスポットライトのあるシーンがあります。次の行を持つ Blender モデルをインポートしました。
"colorAmbient" : [0.6400000190734865, 0.6400000190734865, 0.6400000190734865],
JSON ファイルで。
MeshPhongMaterial でこのプロパティをオフにして、環境光ではなくスポットライトにのみ反応するようにする方法はありますか?
行を削除してゼロに設定しようとしましたが、これは効果がありませんでした。このプロパティをオフにすることはできますか? または、シーンから環境光を削除して、指向性などの別のタイプを使用する必要がありますか?
助けてくれてありがとう。
c++ - レイトレーシング シャドウ
それで、ネットでレイトレーシングについて読んで、空き時間にゼロからレイトレーシングを書き始めました。私は C++ を使用していますが、これは約 1 か月前から学習しています。ネットでレイトレーシングの理論を読んだことがありますが、これまでのところ非常にうまく機能しています。モデルもテクスチャも使用しない基本的な Raytracer です。
最初は Raycaster を作成し、結果に非常に満足していました。

それで、私は複数のオブジェクトを試しましたが、それもうまくいきました。この実装では拡散シェーディングを使用し、シェーディングされていないポイントでオブジェクトの色に光の色を追加しました。
残念ながら、このコードは複数の光源では機能しませんでした。そこで、複数のライトをサポートするようにコードを書き直し始めました。Phong イルミネーションについても調べて、作業に取り掛かりました。
複数のライトでも動作します。

これまでのところ満足していますが、今はちょっと行き詰まっています。私はかなり長い間これを修正しようとしましたが、何も思いつきませんでした。2 番目または 3 番目の Sphere を追加すると、最後の Sphere だけが照らされます。最後に、すべてのオブジェクトを格納する配列内のオブジェクトを意味します。以下のコードを参照してください。

中心が同じ平面上にあるため、紫色の球体は明らかに同様のイルミネーションを持つはずです。驚いたことに、球にはアンビエント イルミネーションしかありません --> シェーディングされていますが、これは当てはまりません。
だから今私のトレース機能:
次は render 関数です。
だからここに私の交差関数があります:
これが抽象 Object クラスです。各球体、ライトなどはオブジェクトです。
オブジェクト ポインターのグローバル配列を使用して、世界のすべてのライト、球体などを格納します。
私のコードが混乱していることはわかっていますが、何が起こっているのか誰かが知っていれば、とても感謝しています.
EDIT 1 写真を追加しました。
EDIT 2 コードを更新し、軽微なエラーを修正しました。まだ解決策はありません。
更新: 光線を作成するレンダリング コードを追加しました。
graphics - レイ トレーシングでコサインが欠落している
レンダリング方程式と従来のレイ トレーサーのソース コード (したがって、モンテカルロなどはまだ含まれていません) を見ています。わかりやすいように、短い疑似コードで以下に示します。
レンダリング方程式のコサインがレイ トレーサーの実装に含まれていない理由がわかりません。不足していると思われる場所にコメントを含めました。
完全鏡面反射の BRDF (f_r = (δ(cosθi − cosθr)δ(φi − φr ± π)) / cosθi) では、余弦が相殺されることがわかります。しかし、以下に示すように、フォン反射モデルと組み合わせて欠落している場合はどうでしょうか?
python - 光沢のある Python 3D サーフェス プロットのフォン シェーディング
Python でスペキュラ シェーディングを使用して美的に美しい 3D プロットを作成しようとしていますが、これまでのところ、3D 軸を使用した Matplotlib と Mayavi のサーフェス プロットの両方を使用してみました。

結果は良好に見えます。Mayavi では、照明を適切に制御しているように見えますが、「光沢のある」外観を実現することはできません。
Matlab では、これは 'Phong' 照明を使用して実現できます。

http://www.mathworks.com/matlabcentral/fileexchange/35240-matlab-plot-gallery-change-lighting-to-phong/content/html/Lighting_Phong.htmlを参照してください。
したがって、私の質問は、Python ベースの 3D プロットでこの Phong スタイルの光沢のあるシェーディングを実現するにはどうすればよいですか?
c++ - Phong の実装は暗いようで、鏡面反射も機能していません。レイトレーシング
以下は、球を描いている私のフォン実装方法です。そのパラメータは、vec3 球法線 (vec3 ヒットポイント - vec3 sphereOrigin) とカメラ位置 vec3 (0,0,-5) です。
couts を使用すると、鏡面反射計算のドット積が ~ -4.9xxx を返すことがわかりました。そのため、それが含まれている max 関数では常に 0 が優先され、残りの行は 0 であるため冗長になります。何か問題がありますか?この方法?
また、非常に暗いように見えます。より良い球体にするために、光の強度を (5,5,5) に上げます。
現在の画像: http://imgur.com/U1ihxS0 フォンは前面の球体 ATM でのみ試行されました。