• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            黎明的剔透里伸出了你沁清的曖昧

            Graphics|EngineDev|GameDev|2D&3D Art

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              60 隨筆 :: 1 文章 :: 18 評論 :: 0 Trackbacks

            光 線 跟 蹤  Ray Tracing


            簡介:
            在計(jì)算機(jī)圖形學(xué)領(lǐng)域,這技術(shù)被普遍應(yīng)用于生成高質(zhì)量的照片級圖像,在為一個(gè)場景計(jì)算光照的時(shí)候,通過固定管線就可以計(jì)算phong光照模型,由于該模型的特征,使得渲染的物體看起來有塑料得感覺,如果要渲染一個(gè)有金屬質(zhì)感的且能反射出周圍環(huán)境的物體,phong模型就無能為力了。和固定渲染管線相比,可編程圖形渲染管線的能力要強(qiáng)得多,雖然固定管線里面可以用環(huán)境貼圖來實(shí)現(xiàn)物體對環(huán)境的反射效果,但這種環(huán)境只能反射出已經(jīng)保存在cube map的中貼圖,在真實(shí)世界中,如果能反射出周圍環(huán)境的物體還有很多其他物體,他們就會(huì)互相反射,一般環(huán)境貼圖技術(shù)大達(dá)不到這種效果,這就要用到光線追蹤技術(shù)。

            光線跟蹤是一種多功能技術(shù),它可以用同一模型來模擬光源和環(huán)境入射光在物體表面產(chǎn)生的鏡面反射和折射、實(shí)現(xiàn)場景的消隱及生成陰影等,同時(shí),也可以用作體繪制(volue rendering)的基礎(chǔ).

            光線跟蹤算法由于需要跟蹤每一條從視點(diǎn)出發(fā)的光線,因而涉及到大量的光線與景物的求交計(jì)算,與傳統(tǒng)的掃描線算法相比,光線跟蹤算法所需的計(jì)算量顯得很龐大,所以必須提高光線與景物的求交測試效率,器途徑有兩個(gè):一個(gè)是提高光線與景物的求交計(jì)算效率,例如光線跟蹤參數(shù)去面片、光線跟蹤代數(shù)去面片、光線跟蹤分維曲面等,這些算法針對具體曲面特點(diǎn)改善了求交的數(shù)學(xué)方法,減少了求交的計(jì)算量;另一個(gè)途徑是快速確定光線與景物是否有交,這一方法已成為加速光線跟蹤的主流技術(shù),主要有:包圍盒算法和空間剖分算法.

            基本算法:
            在光線跟蹤系統(tǒng)中,物體空間中一點(diǎn)被取作試點(diǎn),一個(gè)與視點(diǎn)位置適當(dāng)?shù)钠矫婢匦螀^(qū)域被取作投影屏幕,為了簡化計(jì)算,常把視點(diǎn)取在Z軸上,并取xoy平面作為投影屏幕,投影屏幕用兩組相互垂直的平行線分成若干個(gè)小方格,每個(gè)小方格對應(yīng)于屏幕的一個(gè)像素,常取小方格中心為取樣點(diǎn)
            圖形生成時(shí)通過對每個(gè)像素分別計(jì)算顏色亮度來進(jìn)行的。首先,從視點(diǎn)出發(fā),引出一條視線穿過取樣點(diǎn),像物體空間延伸,通過計(jì)算求得與它相交的物體。視線可能與多個(gè)物體相交,存在多個(gè)交點(diǎn)。可以通過比較各個(gè)點(diǎn)與視點(diǎn)的距離,求得離視點(diǎn)的最近點(diǎn)。改點(diǎn)稱為在視點(diǎn)方向上相對于視點(diǎn)的可見點(diǎn)。可見點(diǎn)除的法向量必須計(jì)算出來,以滿足后面的計(jì)算需求。法向量計(jì)算出來以后,通過查找表面數(shù)據(jù)表,獲得表面的顏色屬性,反射率,透明性與粗超程度等,就可以可以使用光照模型公式來計(jì)算可見點(diǎn)的發(fā)射強(qiáng)度。然后在此計(jì)算之前,首先要判斷可見點(diǎn)是否處于陰影中。判斷的方法是從改點(diǎn)想光源引射線,看射線是否與某不透明的物體相交。
                    如果物體比較光滑,反射性比較強(qiáng),那么其他物體可以通過可見點(diǎn)反射或者折射到達(dá)視點(diǎn),對于這類表面,我們在求得可見以后,必須沿反射線方向繼續(xù)跟蹤,看看在反射線或者折射線方向上是否有物體存在,,這種射線稱為間接事先,當(dāng)間接視線與物體相交時(shí),確定離可視點(diǎn)最近的交點(diǎn),稱為間接可視點(diǎn),它對可見點(diǎn)的光強(qiáng)度可以計(jì)算出來,在間接可見點(diǎn)可能又需要從反射或者折射方向跟蹤視線。在這個(gè)過程中實(shí)際上是一個(gè)遞歸過程。所以光線跟蹤本質(zhì)上是一個(gè)遞歸算法,每個(gè)像素的顏色與光強(qiáng)必須綜合各級遞歸計(jì)算的結(jié)果才能獲得
            R
            aytracing(start_point,view_direction,wright,color){
            /*start_point:在第一次調(diào)用表示視點(diǎn),以后各級遞歸用于表示可見點(diǎn)
              view_direction;視線方向,與光傳播方向相反
              weight: 當(dāng)前點(diǎn)光強(qiáng)計(jì)算結(jié)果的貢獻(xiàn)比例值,當(dāng)它小于閥值Minweight時(shí),將被認(rèn)為對最終計(jì)算結(jié)果影響很小,可忽略不計(jì)
              color;返回值
            */
              
            if(wight<Minweight)
                 color
            =blank;
              
            else{
                  
            if(無交點(diǎn))
                     color
            =blank;
                  
            else{
                   Io
            =交點(diǎn)出光照模型值;
                   計(jì)算反射方向R
                   Raytracing(交點(diǎn),R,weight 
            *    Wr,Ir);
                   計(jì)算折射方向T;
                   Raytracing(交點(diǎn),T,weight 
            *Wr,It);
                   color
            =Io+Ir+It;
                  }
             }
             }


            雖然在理想情況下,光線可以在物體之間進(jìn)行無線的反射與折射,但是實(shí)際的算法進(jìn)行過程中,我們不可能進(jìn)行無窮的光線跟蹤,給出幾種終止條件:
            1>該光線未碰到任何物體
            2>該光光線碰到了背景
            3>光線在經(jīng)過許多次反射和折射以后,就會(huì)產(chǎn)生衰減,光線對于視點(diǎn)的光強(qiáng)的貢獻(xiàn)值很小(小于某個(gè)設(shè)定值)
            4>光線反射與折射次數(shù)即跟蹤深度大于一定值

            光線與物體求交:
            posted on 2011-09-27 21:27 情絕格調(diào)(fresmaster) 閱讀(880) 評論(0)  編輯 收藏 引用 所屬分類: GraphicsCoding
            日本高清无卡码一区二区久久| 日本欧美久久久久免费播放网| 久久久久国产| 日韩精品久久无码中文字幕| 国产午夜电影久久| 午夜天堂av天堂久久久| 精品国产婷婷久久久| 久久综合九色综合网站| 亚洲伊人久久综合影院| 91久久国产视频| 亚洲AV日韩AV天堂久久| 精品久久久久久无码免费| 久久国产免费观看精品3| yy6080久久| 久久精品成人免费国产片小草 | 久久伊人亚洲AV无码网站| 欧洲成人午夜精品无码区久久| 久久综合久久鬼色| 99精品伊人久久久大香线蕉| 久久国产精品99精品国产| 午夜欧美精品久久久久久久| 麻豆精品久久久久久久99蜜桃 | 中文字幕精品无码久久久久久3D日动漫 | 久久人人添人人爽添人人片牛牛| 久久国产香蕉一区精品| 国产福利电影一区二区三区久久老子无码午夜伦不 | 国产婷婷成人久久Av免费高清| 精品综合久久久久久97| 久久亚洲精品无码aⅴ大香 | 亚洲狠狠综合久久| 久久99精品国产一区二区三区| 久久精品国产清高在天天线| 久久精品国产亚洲av麻豆色欲| 蜜臀久久99精品久久久久久小说| 亚洲欧美日韩久久精品第一区| 久久久久久久精品妇女99| 免费无码国产欧美久久18| 久久精品国产亚洲AV忘忧草18| 中文字幕乱码久久午夜| 亚洲AV无码久久精品蜜桃| 国产精品一区二区久久不卡|