Ray Tracing in one weekend:chapter 9:电解质

chapter 9:电解质

文章翻译

  清晰的材料,如水、玻璃和钻石都是电解质,当一束明亮的光线击中他们,光线会分裂成反射光线和折射(透射)光线。我们会随机的在反射和透射中选择,并且每次光线与电解质交互只会产生其中一种。
  最难解决的是透射光线,如果有透射光线,我通常让所有光线透射。对于这个项目来说,我尝试放置两个玻璃球在我们的视野中,然后我得到这张图片(我还没有告诉你怎么做对或做错,一会说):
在这里插入图片描述
  这是对的吗?在现实生活中,这个玻璃球看起来很奇怪,然而这是错误的,世界应该颠倒且没有奇怪黑色的东西。我在图片中直接打印出了光线,显然这是错误的。
  Snell 的法则将透射描述为: n sin(theta) = n’ sin(theta’)
  nn’ 是透射系数(通常来说,空气是1,玻璃在1.3-1.7内,钻石是2.4),几何上看是这样的:
在这里插入图片描述
  我们的实际问题是,当光线从低进入高折射系数的物质,Snell 法则没有真实解,因此没有折射的可能性,这里的光线全部反射,因为在实践中,通常是在物体实体内部,这被称为 全反射。这就是为什么,当你沉浸在水中,水和空气的边界有时候看起来像一面完美的镜子,折射的代码比反射的代码稍微复杂一点:
在这里插入图片描述
  电解质材料总是尽可能的发生折射:
在这里插入图片描述
  Attenuation 系数总是1——玻璃表面不吸收任何光线,attenuation = vec3(1.0, 1.0, 0.0) 将会关闭蓝色通道,这是很难发现的颜色错误,这仅让颜色发生转变。尝试一下这个系数,并把它改为 vec3(1.0, 1.0, 1.0) 来看一下二者的不同:
  如果我们尝试这些参数:
在这里插入图片描述
  我们可以得到:
在这里插入图片描述
(读者 Becker 指出当应有反射光线时,函数返回 false,因此没有发生反射,他是对的,这也是为什么在上面的图片中没有显示。我会留下这个问题而非修正它,因为这是一个非常有趣的有主要错误的例子,能留下一张看起来合理、真实的图片。这些隐藏的错误是最难发现的错误,因为我们人类不擅长发现我们视觉看见上的错误)
  真实的玻璃有着随着角度而变化的折射率——从一个陡峭的角度看窗户,它就变成了一面镜子。有一串难看的公式能解释这个现象,但是几乎每个人都使用 Christophe Schlick 提出来的那个简单的,且十分近似的多项式来替代:
在这里插入图片描述
  给出我们玻璃材质的所有代码:
在这里插入图片描述
(注意: "scattered =" 在上述代码的首次出现不是必须的,很快就会在后面被重写,不会影响结果,只是一个声明的错误)
  电解质的一个有趣而简单的技巧是,如果你使用负半径,几何形体不会受影响,但是表面法向量是指向内的,因此它可以作为气泡制作一个空心玻璃球体:
在这里插入图片描述
  这可以得到:
在这里插入图片描述

小结

  电解质材料这块有点不好理解,来简单捋一下
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值