日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《一周学完光线追踪》学习 三 光线相机和背景

發布時間:2024/1/18 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《一周学完光线追踪》学习 三 光线相机和背景 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

所有光線跟蹤器都有一個光線類,以及計算沿光線看到的顏色。讓我們把射線看作一個函數,p(t)=A+t*B,這里p是3D中沿直線的3D位置,a是射線的原點,B是射線的方向。射線參數t是實數(代碼中的浮點數)。插入不同的t和p(t)沿射線移動點。

加上負t,你就可以得到3D線上的任何地方。對于正t,你只得到A前面的部分,這就是通常所說的半線或射線。示例C=p(2)如下所示:

現在我們準備好轉彎,做一個光線跟蹤器。光線跟蹤器的核心是通過像素發送光線,并計算在光線方向上看到的顏色。它的形式是計算從眼睛到像素的光線,計算光線與像素相交的部分,并計算該相交點的顏色。在第一次開發光線跟蹤器時,我總是用一個簡單的相機來啟動和運行代碼。我還做了一個簡單的顏色(光線)函數,返回背景的顏色(一個簡單的漸變)。

我經常在使用正方形圖像進行調試時遇到麻煩,因為我經常轉換x和y,所以我將堅持使用200x100圖像(這里我還是用的512*512的圖像)。我將把“眼睛”(或者相機中心,如果你想到相機的話)設為(0,0,0)。我讓y軸向上,x軸向右。為了尊重右手坐標系的對流,進入屏幕的是負z軸。我將從左下角遍歷屏幕,并使用沿屏幕邊的兩個偏移向量來移動屏幕上的光線端點。請注意,我沒有將光線方向設置為單位長度向量,因為我認為不這樣做會使代碼更簡單、速度略快。

在下面的代碼中,光線r接近像素中心(我現在不擔心精確性,因為我們稍后將添加抗鋸齒):

#ifndef RAY_H #define RAY_H#include "Vector3.h"class Ray { public:Ray() {}Ray(const Vector3& a, const Vector3& b) { data[0] = a; data[1] = b; data[2] = Vector3(1.0f / b.x(), 1.0f / b.y(), 1.0f / b.z());posneg[0] = (data[1].x() > 0 ? 0 : 1);posneg[1] = posneg[0] ^ 1;posneg[2] = (data[1].y() > 0 ? 0 : 1);posneg[3] = posneg[2] ^ 1; posneg[4] = (data[1].z() > 0 ? 0 : 1);posneg[5] = posneg[4] ^ 1; }Ray(const Ray& r) {*this = r;}Vector3 origin() const {return data[0];}Vector3 direction() const {return data[1];}Vector3 invDirection() const {return data[2];}void setOrigin(const Vector3& v) {data[0] = v;}void setDirection(const Vector3& v) {data[1] = v;data[2] = Vector3(1.0f / v.x(), 1.0f / v.y(), 1.0f / v.z());posneg[0] = (data[1].x() > 0 ? 0 : 1);posneg[1] = posneg[0] ^ 1;posneg[2] = (data[1].y() > 0 ? 0 : 1);posneg[3] = posneg[2] ^ 1; posneg[4] = (data[1].z() > 0 ? 0 : 1);posneg[5] = posneg[4] ^ 1; }Vector3 pointAtParameter(float t) const { return data[0] + t*data[1]; }Vector3 data[3];int posneg[6]; };#endif

寫個程序測試一下:

Vector3 lower_left_corner(-2.0, -1.0, -1.0);Vector3 horizontal(4.0,0.0,0.0);Vector3 vertical(0.0,2.0,0.0);Vector3 origin(0.0, 0.0, 0.0);for (int j = HEIGHT-1;j >= 0;j--) {for (int i = 0;i < WIDTH;i++) {int offset = (WIDTH*i + j) * 4;float u = float(i) / float(WIDTH);float v = float(j) / float(HEIGHT);Ray r(origin, lower_left_corner+u*horizontal+v*vertical);Vector3 col((u-0.5)*(u-0.5)+(v-0.5)*(v-0.5),0.0,0.0);Pixels[offset + 0] = (unsigned char)255.99*col[0];Pixels[offset + 1] = (unsigned char)255.99*col[1];Pixels[offset + 2] = (unsigned char)255.99*col[2];Pixels[offset + 3] = 255;}}

得到效果如圖:

總結

以上是生活随笔為你收集整理的《一周学完光线追踪》学习 三 光线相机和背景的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美亚洲 | 国产综合精品 | 黄色小说在线免费观看 | 国产成人免费在线视频 | 亚洲精品九九 | 一级黄色录相 | 理论片中文 | www.亚洲免费 | 97色伦97色伦国产欧美空 | 国产一区在线不卡 | 中文精品久久久久人妻不卡 | a级全黄| 日本一区二区三区精品视频 | 免费久久精品视频 | 日韩中文字幕 | 永久视频在线观看 | 久久精品一区二区三区不卡牛牛 | 91蜜桃传媒精品久久久一区二区 | 久久频| 性欧美熟妇videofreesex | 免费看欧美大片 | 在线免费观看视频网站 | 色一涩| 写真福利片hd在线播放 | 中文字幕+乱码+中文乱码www | 免费黄色网址在线观看 | 视频一区二区在线播放 | 色呦呦呦呦 | 日本免费无人高清 | 韩国av一区 | 人人干人人爱 | 久久午夜鲁丝片午夜精品 | 日韩超碰在线 | 亚洲成年人网站在线观看 | 中文字幕一区二区三区乱码人妻 | 国产成人精品网站 | 国产偷v国产偷v亚洲高清 | 亚洲精品综合在线观看 | 天堂中文在线播放 | 日韩在线电影一区二区 | 日韩成人免费视频 | 性网爆门事件集合av | 最新中文字幕免费 | 好色艳妇小说 | 毛片无码免费无码播放 | 久久综合伊人77777麻豆 | 久久综合狠狠 | 成人黄页 | 国产精品一区二区毛片 | 337p粉嫩大胆噜噜噜噜69影视 | 在线不卡欧美 | 丝袜调教91porn | 亚洲小视频 | 日本一区二区三区中文字幕 | 成年人黄色片网站 | 日本久久精品视频 | 久久精品视频无码 | 亚洲乱码少妇 | 亚洲精品欧美激情 | 一区二区不卡视频 | 久久久综合精品 | 国产精品sm调教免费专区 | 亚洲精品美女 | 亚洲熟妇无码一区二区三区 | 国产真人无遮挡作爱免费视频 | 国产日本一区二区三区 | 天天摸天天舔 | 老司机精品福利视频 | 日韩精品一区二区三区久久 | 麻豆国产在线播放 | 亚洲AV成人无码久久 | 欧美在线免费观看 | 亚洲热在线 | 99热免费在线观看 | 精品视频一区二区在线 | 99视频99 | 中文字幕黑丝 | 国产91香蕉| 亚洲色妞 | 字幕网在线 | 久久久久久久久久久久久久久久久久 | 久久久免费电影 | 久久亚洲综合网 | 亚洲综合三区 | 91啦中文 | 成人午夜免费观看 | 国产熟妇另类久久久久 | 99精品国产成人一区二区 | 天堂精品| 日本一二三不卡视频 | 午夜激情在线播放 | 亚洲精品中文字幕在线 | 一区二区三区视频在线观看免费 | 99精品久久久久久 | free性娇小hd第一次 | 国产做爰免费观看 | 91看片看淫黄大片 | 最新黄色网页 | 天堂网国产 |