Aqoole_Hateenaの技術日記

vulkan+raytraceで色々描いてます

水の表現の挑戦 波の表現について

上からの図
youtu.be


横からの図
youtu.be


高さが激しい図
youtu.be


高さが激しい場合に若干本当にこのように見えるか疑問が残るが、シンプルな波を起こした場合の屈折と反射をray traceで表現してみた。横から覗いた場合、水面だけを取り出して見ているので違和感が残るのかも。

行波について

海面のような進行波については、以下の記事を見つけた。
http://www.rcnp.osaka-u.ac.jp/~hosaka/lecture/gendai_butsuri/waves.pdf
高校2年生で習う物理の内容であることが書かれていて、たしかそんな気もしたなぁと朧気に思い出した。簡単には、進行波


y = f(x-vt)
として表される式で、地点の変数がx-vtの形で表されるようだ。時間ごとに平行移動されていくということですね。上図の式では

y = -1.5 + (sin(x - t) + sin(z - t)) / 8
としています。

反射率について

高さが激しい場合に、水面の高さがmaxのときに屈折した底面が見えたのでこれに違和感を持ち、反射率を見直してみた。結論反射率は関係なかったが、図のような限りある平面の上に起こされた波を実際にみることはまぁないので、この通りになるかどうかわからないですね。CGは現実をトレースするわけではなくきれいに見せれば良いという言い訳をしつつ、理由に気づいたら更新すると思います。
さて、反射率はP偏光とS偏光という2種類の光(電磁波)で計算されるようです。
偏光 - Wikipedia
それぞれの偏光ごとの反射率の計算式は以下などに書かれています。
https://www.chiba-c.ed.jp/funako/fttp_kousin/ssh/reserch/2019/2019_03p3.pdf
9章:反射と屈折の法則
wikiの方のリンクに書かれてますが、これらを50%の配分で足し合わせれば良さそうです。

この式のとおりに計算しましたが、これは反射光と屈折光の配分の話なので、波が高い場合などは関係ないですね。まぁ光を当てたりする場合に綺麗に表現されそうなので良しとしましょう。