Ray Tracing in one weekend:chapter 7:漫反射材料

本文介绍了如何在计算机图形学中实现漫反射材质,通过随机选择反射方向和修正颜色以模拟真实世界中的表面。方法涉及从相交点的正切球体随机选点和使用拒绝法生成单位球体内的点。作者还讨论了阴影处理和颜色校正,以达到理想的哑光表面效果。
摘要由CSDN通过智能技术生成

chapter 7:漫反射材料

文章翻译

  现在我们有多个物体和基于每个像素的多束光线,我们可以制作一些看起来逼真的材料了,我们即将开始漫反射材料。有一个问题是我们是否可以混合和匹配形状和材料(因此我们可以给一个球体一种材料)或者如果把二者放在一起,几何形状和材料就紧密结合在一起(对于把几何和材料连在一起的程序对象来讲这是有用的).我将其分离——这在大多数渲染器是普遍的——但是注意其中的限制。
  漫反射材质不会发出光线,只不过是呈现出其周围环境的颜色,但是他们会用自己内在的颜色来调节它。光线在漫反射表面的反射方向是随机的,因此,如果我们发射三条光线进入两个漫反射表面的缝隙中,他们将会有不同的随机行为。
在这里插入图片描述
  这些光线也可能被吸收而非反射,表面颜色越黑暗,光线被吸收的可能性越大。(这就是为什么它是黑色的!)事实上,任何能够随机方向的算法都能产生看起来哑光的表面。其中一个最简单的方法实现了,证明了对于理想的漫反射材料来讲是十分正确的.(作为一个随性的黑客,我曾经实现了它并得到一个近乎在数学上达到理想状态的漫反射).
  从一个与相交点正切的单位球体中随机选择一个点 s,并且从相交点 p 向随机点 s 发射一束光线,单位球体的中心点是 (p+N):
在这里插入图片描述
  我们也需要一个方法来从中心在原点的单位球体中选择一个随机点,我们将使用平常来说最简单的算法:一种拒绝方法。首先,我们从一个x,y,z取值范围为-1~1的单位立方体中随机选取一个点,如果这个点在单位球体外,我们拒绝这个点并再次选取,一个 do/while 结构很适合这个:
在这里插入图片描述
在这里插入图片描述
  得到图片如下:
在这里插入图片描述
  注意球体下面的阴影,这张图片太黑了,然而我们的球体在光线的每次弹射仅吸收一半的能量,因此这是50%的反射器。如果你不能看见阴影,不用担心,我们现在修复它。这些球体应该看起来光鲜漂亮(在现实生活,一种浅灰色).原因是几乎所有图像浏览者都假设图片是 gamma 矫正过的,意味着0~1的取值在存储进一个字节前做过一些转变。这样做有很多好的理由,但是对我们来讲,我们只需要意识到它。为了做到近似,我们可以使用" gamma 2 ",这意味着我们将颜色提高 " 1/gamma "幂次,或者在我们简单案例中,仅是一个平方根:
在这里插入图片描述
  这产生了一张浅灰色图片,正式我们想要的:
在这里插入图片描述
  这里面也有一个细微的错误,一些反射光线击中了使他们反射的物体,不是在 t = 0 处,而是在 t = -0.0000001 或者 t = 0.00000001 处 或者 浮点近似球体相交处,因此我们要忽略非常接近于零的近似值:

  这就消除了阴影粉刺的问题,通常是这样称呼的。

简单解释

  前面求的光线与球体相交处的法线派上用场了,用处是求光线漫反射后的方向,步骤是这样的:

相交点处做一个正切的单位球体,在里面随机选择一点作为漫反射后的方向,我们可以将问题转换为,在原点处的单位圆处随机选择一点,用了拒绝点方法,我们用相交点+相交点处的单位法向量+选取的随机点就相当于得到正切处单位球体随机选取的点,用求出的点减去相交点就得到漫反射的方向向量
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值