2016-06-12 2 views
2

私は現在、(他のもの以外にも)ガラス球に屈折効果を模倣するフラグメントシェーダーを書いています。透明な(ガラス)オブジェクトを残した後の屈折

したがって、光線が球に入ると、光線が方向を変えます。ここまでは順調ですね。さて、屈折した光線がガラスの物体であるを離れると、再び方向が変わるのですか?私はそれが本当に確信していますが、私はインターネットの周りを突き刺していました。私は異なった意見を見つけました(例えば、thisサイトの一番下に、方向に変化がないことが明確に示されています)。

ありがとうございます。

+0

[Physics SE](http://physics.stackexchange.com/)でこれを調べる価値があります。実際のコードよりもレイの物理学に関係しているので、あなたの質問はここで話題になっています。 – computerfreaker

答えて

1

はいそれが変わります...空気からガラスの屈折までの角度は、ガラスから空気まで同じです。

非常に簡単に実装できます。まず球の内側の中心にあるキューマップにシーンをレンダリングする必要があります。 2番目のレンダーステップでは、法線ベクトルとカメラのポイントツーポイントベクトルが使用され、関数refract()を使用して屈折のベクトルを計算できます。 あなたは、光線が球から出る場所を計算しなければならず、屈折関数を再び使用することもできます。出力先の法線ベクトルを再度計算するだけで済みます。 3番目のステップは、キューマップのtexture()関数を使用して、関数内に出力ベクトルを座標として配置することです。

+0

だから。私が最初に光線を屈折させると(空気からガラスに)、屈折率商(屈折のglsl関数の3番目のパラメータ)は** 1.0/1.5 **であり、光線がオブジェクトを(ガラスから空気に) * 1.5/1.0 **? – Wanderer

+0

そこでは、出力ポイントの法線ベクトルを計算しなければなりません。また、関数refractを使うこともできます。内部屈折と同じ値ではありません。それは同じように計算されます.. – Thomas

関連する問題