无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(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ó)家法律
长丰县| 弋阳县| 尼玛县| 大田县| 温宿县| 雷州市| 宜昌市| 保定市| 焦作市| 龙井市| 长顺县| 岳阳县| 三亚市| 永胜县| 左贡县| 三原县| 商南县| 长宁区| 海淀区| 田东县| 察隅县| 老河口市| 临夏市| 达拉特旗| 白城市| 武平县| 扬州市| 乐平市| 临沂市| 高碑店市| 三门县| 富源县| 贺州市| 门头沟区| 呼和浩特市| 天祝| 巫山县| 长垣县| 景宁| 济源市| 扎赉特旗|