首页 > 其他 > 详细

6 矩形光源

时间:2018-07-23 11:49:04      阅读:173      评论:0      收藏:0      [点我收藏+]

  首先,让我们制作一个发光的材料。我们需要一个发光函数(我们也可以把它加到hit_record里,这取决于你的设计品位).就像背景,它只告诉光线它是什么颜色,它不反射。这很简单:

    技术分享图片

  这样我就不必让所有非发射材料实现emit(),然后我的基类返回黑色:

    技术分享图片

  接下来,我们将颜色函数中的背景设为黑色,并注意emmit:

    技术分享图片

  现在,我们做一些矩形。矩形通常可以方便地建模人造环境。我很喜欢做等腰矩形,因为它们很简单。(我们会讲到实例化之后再旋转它们).

  首先,这里有一个xy平面的矩形。这样一个平面由它的z值定义。例如,z = k。一个轴向的矩形由x=x0、x=x1、y=y0、y=y1几行定义。

    技术分享图片

  要确定一条光线是否击中这个矩形,我们得先确认光线击中这个平面的位置,回想一下,光线p (t) = a + t*b的z分量由z(t) = az + t*bz定义。重新排列这些项我们可以解出z=k时的t。

  t = (k-az) / bz

  一旦我们有了t,我们就可以把它代入x和y的方程:

  x = ax + t*bx
  y = ay + t*by

  如果x0 < x < x1,而y0 < y < y1,则是命中的。

  矩形方程如下:

    技术分享图片

  撞击函数如下:

    技术分享图片

  如果我们设置一个矩形光源:

    技术分享图片

  我们可以得到下图:

    技术分享图片      

        注意光线比(1,1,1)亮。这使得它足够亮,可以照亮物体。

        也可以做一些球形灯。

    

6 矩形光源

原文:https://www.cnblogs.com/TooYoungTsukasa/p/9353727.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!