問題タブ [bump-mapping]

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

unity3d - Unity3D、ボックス、立方体のエッジを丸めますか?

例のように長方形のオブジェクトである立方体のエッジを丸める通常の方法は何ですか?

ここに画像の説明を入力 ここに画像の説明を入力

理想的な結果は、これらの画像とほとんど同じになります。

(もちろん、エッジとコーナーを注意深く丸めたメッシュを文字通り使用することもできますが、それを実現するには多くの三角形が必要です。)


もちろん、シェーダーアプローチについては注意してください...

ここに画像の説明を入力

2 つの小さなフラット ボックスを追加し、その新しい法線を 2 つの側面の間の中間、つまり 45 度にするだけです。

ここに画像の説明を入力

それは完全に丸く描かれるでしょう...

以下の GDG は、シェーダー アプローチを使用しない場合、これが実際に最善の方法であると誰かが主張する記事を提供しています。

私はシェーダーでこれを行う方法を本当に疑問に思っています。


注 - 非シェーダー アプローチに関する非常に詳細なチュートリアル

http://catlikecoding.com/unity/tutorials/rounded-cube/

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

c++ - ワールド スペース法線とタンジェント スペース法線の違いは何ですか?

接線空間とワールド空間法線の違いについて、詳細な説明を求めたいと思いました。

また、可能であれば、どちらかの長所と短所を含めてください。

主に、法線マッピングに深く入り込むにつれて、より深い理解が得られます。

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

c++ - ノーマル マッピング: TBN マトリックスが異なるため、フラグメント シェーダーと比較して頂点シェーダーで結果が異なる

私はチュートリアル用の法線マッピングの実装に取り​​組んでおり、教育目的で TBN マトリックスを (頂点シェーダーから) フラグメント シェーダーに渡したいので、接線空間の法線ベクトルを照明用のワールド空間に変換できます。計算。法線マッピングは、法線が正の z 方向を指す 2D 平面に適用されます。

ただし、平面の頂点シェーダーで TBN マトリックスを計算すると (したがって、すべての接線/従接線はすべての頂点で同じになります)、表示される法線は完全にオフになります。タンジェント/バイタンジェントと法線ベクトルをフラグメント シェーダーに渡してそこで TBN を構築すると、下の画像に示すように正常に動作します (法線が表示されています)。

通常のマッピングが間違っている

ここが変なところです。平面が平坦であるため、T、B、および N ベクトルはすべての頂点で同じであるため、TBN 行列も各フラグメントで同じである必要があります (フラグメント補間は何も変更しないため)。頂点シェーダーの TBN マトリックスは、フラグメント シェーダーの TBN マトリックスとまったく同じである必要がありますが、視覚的な出力はそうではありません。

頂点シェーダーとフラグメント シェーダーのソース コードは次のとおりです。

バーテックス:

断片

両方の TBN 行列は明らかに異なります。以下に、さまざまなフラグメント シェーダー出力の画像をまとめました。

法線マッピングの異なる出力

T、B、および N ベクトルが正しく、フラグメント シェーダーのマトリックスも正しいことがわかりますがtbn、頂点シェーダーの TBN マトリックスfs_in.TBNは完全に偽の値を示します。

なぜそれが機能しないのか、私にはまったくわかりません。Tangent と Bitangent のベクトルをフラグメント シェーダーに渡すだけで、そこで計算して完了できることはわかっていますが、これが機能しない正確な理由について非常に興味があります。