《再學一周光線追蹤》 學習 七 實物(一)

2021-10-07 02:57:02 字數 2070 閱讀 7641

蒙特卡洛光線追蹤技術系列 見 蒙特卡洛光線追蹤技術

康奈爾盒子裡通常有兩個街區。它們相對於牆旋轉。首先,讓我們製作乙個軸對齊的塊原語,它包含6個矩形:

class box :public hitable 

box(const vec3&p0, const vec3&p1, material *ptr);

virtual bool hit(const ray&r, float t0, float t1, hit_record&rec)const;

virtual bool bounding_box(float t0, float t1, aabb&box)const

vec3 pmin, pmax;

hitable *list_ptr;

};box::box(const vec3&p0, const vec3&p1, material *ptr)

bool box::hit(const ray&r, float t0, float t1, hit_record&rec)const

現在我們可以新增兩個塊(但不能旋轉):

list[i++] = new box(vec3(130, 0, 65), vec3(295, 165, 230), white);

list[i++] = new box(vec3(265, 0, 295), vec3(430, 330, 460), white);

list[i++] = new flip_normals(new xz_rect(0, 555, 0, 555, 555, white));

list[i++] = new xz_rect(0, 555, 0, 555, 0, white);

得到:

每個畫素點取樣1000次,得到下圖:(執行了五分鐘)

現在我們有了盒子,我們需要旋轉它們一點,讓它們與真正的康奈爾盒子相匹配。在光線跟蹤中,這通常是通過實物完成的。實物是以某種方式移動或旋轉的幾何圖元。這在光線跟蹤中特別容易,因為我們不移動任何東西;相反,我們將光線移動到相反的方向。例如,考慮乙個translate(通常稱為移動(move))。我們可以在原點處取粉紅色的方框,並將其所有x分量相加2,或者(就像我們在光線跟蹤中幾乎總是做的那樣)保留該方框,但在其命中實物中,從光線原點的x分量中減去2。

你認為這是乙個移動還是座標的改變取決於你。用於移動任何底層hitable的**是乙個translate例項。

#ifndef __change_h__

#define __change_h__

#include "hitable.h"

class translate :public hitable

virtual bool hit(const ray&r, float t_min, float t_max, hit_record&rec)const;

virtual bool bounding_box(float t0, float t1, aabb&box)const;

hitable *ptr;

vec3 offset;

};bool translate::hit(const ray&r, float t_min, float t_max, hit_record&rec)const

else

return false;

}bool translate::bounding_box(float t0, float t1, aabb&box)const

else

return false;

}#endif

《再學一周光線追蹤》 學習 七 實物(二)旋轉

蒙特卡洛光線追蹤技術系列 見 蒙特卡洛光線追蹤技術 旋轉不是很容易理解或生成公式。一種常見的圖形策略是應用圍繞x y和z軸的所有旋轉。這些旋轉在某種意義上是軸對齊的。首先,讓我們繞z軸旋轉 這只會改變x和y,而不依賴於z。這涉及到一些基本的三角學,使用的公式,我將不在這裡介紹。這給你乙個正確的印象,...

再學一周光線追蹤 bvh樹流程

蒙特卡洛光線追蹤技術系列 見 蒙特卡洛光線追蹤技術 這次詳細分析一下 再學一周光線追蹤 裡面bvh樹和包圍盒繫結的流程,為了加入三角麵片來進行優化。在hitable類的派生類sphere中只有乙個返回項bounding box,返回sphere的包圍盒。但是sphere和這個返回的包圍盒並沒有直接聯...

《再學一周光線追蹤》 學習 一 引子和運動模糊

蒙特卡洛光線追蹤技術系列 見 蒙特卡洛光線追蹤技術 在 一周學完光線跟蹤 書本中,您構建了乙個簡單且蠻力的光線 在本期中,我們將新增紋理 體 如霧 矩形 例項 燈光,並支援使用bvh的許多物件。完成後,你會有乙個 真正的 光線 許多人 包括我 相信,光線跟蹤中的乙個啟發是,大多數優化會使 複雜化,而...