2013-01-14 31 views
6

ワールド空間で定義されたサーフェス法線をスクリーン空間の法線に変換する適切な方法は何ですか?パースペクティブディビジョンは物事をクリップ空間に変換し、私が理解する限り、この空間面では、画像平面と同一平面上にあるので、それらは単純に射影行列で乗算することはできません。ワールド空間法線をスクリーン空間法線に変換

しかし、私が探している変換では、グラフィックAに描かれている青い世界の法線が異なるスクリーン空間の法線になるような変換された法線が生じるはずです。(なぜなら、それらの平面が画像平面と同一平面上にあるとしても、一方、図形B内の描かれた法線は、その表面がカメラに面しているので、変換の後で(多少なりとも)等しくなければなりません。

enter image description here

私を探しています何の変換?それを計算する方法?

私はこれをスクリーンスペースエフェクトに使用する必要があります。

答えて

-1

敬意をもって変換マトリックスを探しています。この行列を計算する方法については、非常に細かいビデオがあります。 KhanAcademy videoを確認してください。

あなたは(OGL、DX、シェーダ、自身の投影、...)を使用している技術についての情報を提供しなかったが、あなたは間違いなく、接空間に関するいくつかの記事をお読みください

EDIT、例えばMessing with Tangent Space .. 逆転置行列を使用して、法線をモデル(視点から)空間に変換するときに通常行うようにしてください。

+0

私は接線空間からオブジェクト空間または世界空間へ、またはその逆へ法線を変換する方法を知っています。しかし、これはスクリーンスペースをカバーしていません – user1282931

+0

しかし、どのようにスクリーン空間を持ついくつかのオブジェクトの法線が接続されています..?ノーマルは常にノーマルですが、どの点から見ても問題ありません。 – Sorceror

0

+1

これは私の問題をカバーしていません。これは、法線を目の空間に適切に変換することに関するものです。これは投影に関するものではありません – user1282931

+1

はい、それはそれほど簡単ではないことがわかります。あなたのケースでは、通常の変換の結果は、この標準を持っている表面の**位置**に依存します。 – kerim

+0

@ user1282931 - 視空間であなたのスクリーンスペース効果を実行できますか? – kerim

0

点Pの法線Nを任意の4x4行列で変換したいとします。のは、これは私たちがそれを言うことができますW.として最後の行でモデル部T(持つ回転、スケール、および翻訳)と一部で行列を表現してみましょう:

Transform(P) = (T * P)/dot(W,P) 

、投影通常は見ることができます限度として(D - > 0)の:

(Transform(P+dN) - Transform(P))/d 

この式を展開した後、推薦と分母の両方から「D」をアウト交差この式をもたらす:

dot(W,N) * (Transform(N) - Transform(P))/dot(W,P) 

これはテストされていないと未確認です、しかし、私はこの質問に肯定的な答えがなかったので、私はそれがショットを与えるだろうと思った;)

関連する問題