渲染引擎杂记(2)——折射光线方向公式推导

来源:互联网 发布:环太平洋配乐 知乎 编辑:程序博客网 时间:2024/06/02 14:58

折射光线方向公式推导

  先给出结论:折射方向公式:

t=η1η2i+(η1η2cosθi1sin2θt)n

  要注意的是,这个向量不是单位向量,使用前请自行单位化。
  
  下面开始证明,根据 Snell 法则:
sinθ1sinθ2=η2η1

  下面设定一些常用变量,默认都已经单位化:
- i:入射光线方向
- t:折射光线方向
- n:法线方向
- n:法线垂直方向

  首先 it 可以表示为

i=cosθ1n+sinθ1n
t=cosθ2n+sinθ2n

  由于我们不知道 n,可以使用以下方程获得等式:
n=cscθ1i+cotθ1n
n=cscθ2t+cosθ2n
cscθ1i+cotθ1n=cscθ2t+cotθ2n

  可以解得 t
t=sinθ2sinθ1i+cosθ1sinθ2sinθ1ncosθ2n

  可以用 Snell 法则来代替正弦,用正弦来代替余弦,也就得到了最终公式:
t=η1η2i+(cosθ1η1η21sin2θ2)n

  
参考:What does the equation of a refracted ray trace mean?

1 0
原创粉丝点击