屈折についておさらいをしましょう。
ちなみに「おさらい」って不思議な日本語だな。語源は何だろう。まあいいや。
CGでは「グラスに入った水」などを作るとき
「グラス」「水」「グラスと水の境界」の3つのオブジェクト&マテリアルで作ることがあります。
グラスの屈折率が2、水の屈折率が1.4だった場合、境界の屈折率はいくらでしょう。
境界のポリゴンの法線は外側を向いてるとします。(外側から見えてる面がポリゴンの表ってこと)
たぶん、
(水の屈折率1.4)/(グラスの屈折率2)=0.7
と計算する人が多いんじゃないでしょうかね。
あまり書いてる人いないんですが調べるとたぶんそう書いてあるでしょう。、
まいこのShade教室でもあったな。でもあれは割るほうと割られるほうが逆でしたね。
なんでかというとShadeの場合視点から通過する回数が奇数の面が表、偶数の面が裏、と言う方式があるので
この場合の境界のポリゴンは裏とみなされるからです
だから
(グラスの屈折率2)/(水の屈折率1.4=1.42857143
になるんですね。


ところで私みたいに学生時代勉強してない人間は公式を覚えるのが苦手ですよね。
どっちからどっちを割れば良いのか忘れるし、だいたい何で割り算なのか納得できない。
そういう人のために私流の考え方を書くと
境界の屈折率ってのは掛け算なんですよ。
1が基準なんだから。屈折の無いものの屈折率は1でしょう。
屈折の無いものをいくら重ねても屈折率は変わりませんね。
1を何度かけても1だからです。(乱暴な理屈だな)
現実の境界を想像してみてください。
視点から通過する順番は「グラスの表」→「グラスの裏」(ここが境界)「水の表」→「水の裏」・・・・なわけですよね。
(ポリゴンの裏表じゃなくて現実の裏表です。)
だからその順番どおり「グラスの裏の屈折率」と「水の表の屈折率」を掛ければ良いんです。
裏の屈折率ってのは逆数(1をその数値で割る)てのは何度か書きましたから
(1/2)*1.4=0.7
ですね。ちゃんと割り算と同じ数値になりますね。
モデリング状の都合で境界のポリゴンを裏として作る場合は
単に0.7を逆数にするか
内部から見た順番は「水の裏の屈折率」、「グラスの表の屈折率」ですから
(1/1.4)*2=1.42857143
です。
ちゃんとつじつま合うでしょ。まあこれを解いたのが上の割り算なのであたりまえですが。
掛け算のほうが式の順番覚えなくて良いので私は楽です。