国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

阿昌學(xué)習(xí)《RayTraing in one week》 (五)

2022-11-03 16:17 作者:柯昌弟弟c  | 我要投稿

第五章

這第五章主要是加入了曲面法線和多個(gè)物體。

曲面法線:就是垂直于一個(gè)曲面的向量;(作者在里提到說(shuō)是否用單位法向量是屬于個(gè)人愛(ài)好)

對(duì)于球體來(lái)說(shuō),法線就是光線與球的焦點(diǎn)減去球心

這里取得是向球外的法相

接下來(lái)我們將這個(gè)法線可視化,法線就是個(gè)vec3,我們就把這個(gè)vec3轉(zhuǎn)化顏色的數(shù)值,這里要注意的是法向量取值是(-1,1),顏色是(0,1),那么可以(x+1,y+1,z+1)*0.5,這樣就可以轉(zhuǎn)成顏色的rgb了。

那么我們將原來(lái)的代碼修改一下:

hit_sphere改為返回值float

得到下邊的法線圖:

曲面法線圖

接下來(lái)我們要給我們的場(chǎng)景添加多個(gè)物體了,原本可以直接添加另一個(gè)物體,但我們直接選擇優(yōu)化一下,創(chuàng)建一個(gè)物體的抽象類,來(lái)讓物體繼承這個(gè)抽象類,只要這個(gè)物體和光線有交點(diǎn)那么就繼承它,既然是有相交的物體,那么這個(gè)抽象類就叫hitable好了。

根據(jù)一元二次方程組求解以及光線方程,我們知道光線如果和物體有交點(diǎn),那么t就會(huì)有一個(gè)取值范圍 t_min < t < t_max ,這樣就可以計(jì)算出那一個(gè)交點(diǎn)離我們更近。

先添加一下抽象類:

hitable.h

接下來(lái)寫(xiě)一個(gè)繼承hitable的球類sphere:

sphere.h

有了一個(gè)比較完整的物體球類,再寫(xiě)一個(gè)列表,方便存儲(chǔ)多個(gè)對(duì)象:

hitable_list.h

同樣的main也進(jìn)行修改,原來(lái)的hit_sphere就可以刪除了,新的main.cpp

main.cpp

運(yùn)行之后的得到的就是下邊這個(gè)圖了,綠色的部分就是新加的大球

越來(lái)越像一個(gè)正經(jīng)的場(chǎng)景了 啾咪~

下一章要添加抗鋸齒了,這樣就可以讓圖片更有feel了。

阿昌學(xué)習(xí)《RayTraing in one week》 (五)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
呈贡县| 容城县| 屏南县| 密云县| 万全县| 阜新| 吉林省| 沙坪坝区| 潮州市| 西昌市| 井冈山市| 迁安市| 永修县| 东光县| 通道| 辽宁省| 乐都县| 樟树市| 和硕县| 集安市| 拉萨市| 格尔木市| 长沙县| 黔东| 濮阳市| 平罗县| 杭州市| 亚东县| 兴城市| 岑溪市| 连山| 东阳市| 大新县| 榆林市| 密山市| 正阳县| 县级市| 喀什市| 海门市| 平原县| 西华县|