6 矩形光源

  首先,讓咱們製做一個發光的材料。咱們須要一個發光函數(咱們也能夠把它加到hit_record裏,這取決於你的設計品位).就像背景,它只告訴光線它是什麼顏色,它不反射。這很簡單:函數

    

  這樣我就沒必要讓全部非發射材料實現emit(),而後個人基類返回黑色:spa

    

  接下來,咱們將顏色函數中的背景設爲黑色,並注意emmit:設計

    

  如今,咱們作一些矩形。矩形一般能夠方便地建模人造環境。我很喜歡作等腰矩形,由於它們很簡單。(咱們會講到實例化以後再旋轉它們).3d

  首先,這裏有一個xy平面的矩形。這樣一個平面由它的z值定義。例如,z = k。一個軸向的矩形由x=x0、x=x一、y=y0、y=y1幾行定義。blog

    

  要肯定一條光線是否擊中這個矩形,咱們得先確認光線擊中這個平面的位置,回想一下,光線p (t) = a + t*b的z份量由z(t) = az + t*bz定義。從新排列這些項咱們能夠解出z=k時的t。it

  t = (k-az) / bzclass

  一旦咱們有了t,咱們就能夠把它代入x和y的方程:反射

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

  若是x0 < x < x1,而y0 < y < y1,則是命中的。d3

  矩形方程以下:

    

  撞擊函數以下:

    

  若是咱們設置一個矩形光源:

    

  咱們能夠獲得下圖:

          

        注意光線比(1,1,1)亮。這使得它足夠亮,能夠照亮物體。

        也能夠作一些球形燈。

相關文章
相關標籤/搜索