pbrt学习笔记1——光线追踪

pbrt学习笔记1——光线追踪

  • 几乎所有的真实渲染系统都是基于光线追踪算法。光线追踪算法实际上是一种非常简单的算法;它是基于跟踪光线穿过场景的路径,因为它与环境中的物体相互作用并弹出环境中的物体。(就是模拟现实中光线的运行方式,通过判断光线是否与物体相交来确定确定交点的颜色,无数条光线与物体的折射或者反射,从而实现整个场景的渲染着色)虽然有很多方法来编写光线追踪器,但所有这类系统都至少模拟了以下对象和现象。

1. 相机

  • 在一个3d场景中,相机决定了我们从哪里观看这个场景,并且在相机所包含的视野里记录整个场景的图像。大多数的光线追踪渲染器都会从相机产生射线,并在场景中进行追踪。

2. 射线与物体的相交

  • 产生的射线和几何物体是否相交是整个光线追踪的很重要的一步,在这一步我们需要知道射线和几何物体相交的交点在哪里,并且还需要知道相交的地方的一些属性比如点的法向量、面的法向量(法线的方向决定了射线相交后,射线的下一步需要干什么)、材质(相交的点或者面的颜色构成)。这一步很多渲染器会有一些测试的方法,一般不需要开发者自己写。

3. 光源

  • 没有光源,渲染场景也就成无稽之谈。光线追踪器需要对整个场景中的光源分布进行建模,不仅包括光源的位置,还有光源在整个场景中的光线分布方式。

4. 可见性

  • 这个感觉是几何物体的光照的强度,现实中大部分光源是散射的,自然是离得光源近的物体光照强。并且如果有其他的物体遮挡了,光线自然也就没有了

  • 为了知道场景中的光源在物体的某一点的光照强度,我们必须知道这个点到光源之前是否有一条不间断的路径(如果这个物体被其他物体阻挡了,这个物体对于光源来说自然是不可见的了)。这个在光线追踪系统中是比较容易实现的,我们只需要构建从几何物体表面到光的射线,并且比较这些交点到光源的距离与光源本身照射的距离进行比较就知道,这个点是否可见并且光照的强度是多少。

5. 表面散射

  • 一个几何物体的最终颜色,是通过物体表面的材质及其他属性来确定的。在光线追踪系统中,这里面就包括光线和几何物体表面的相互作用,以及光线的其他性质,比如散射已经其他物体表面的传递过来的光线等等。

6. 间接光

  • 间接光指的是由于光线在通过物体表面时会发生反射、透射和折射,这些光线的路径追踪也是需要进行处理的。

7. 光线的传播

  • 我们需要记录光线在穿过空间的时候,沿着光线传播会发生什么。在真空中光是沿直线传播的,但是现实中很少有真空的环境,所以在计算中需要一个偏移量。在更复杂的光追模型中还可以追踪穿过雾、烟雾、大气层的光线。

8. 后记

  • 在本人实际的开发中,由于硬件的限制,实时的真正光追还是挺难的,但是用来做离线的渲染还不错。
  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

称昵的读来过倒

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值