• <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


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

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

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

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


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

            光線與物體求交:
            posted on 2011-09-27 21:27 情絕格調(diào)(fresmaster) 閱讀(880) 評論(0)  編輯 收藏 引用 所屬分類: GraphicsCoding
            久久99久久99精品免视看动漫| 欧美日韩久久中文字幕| 无码人妻久久一区二区三区免费丨| 国产精品久久久久免费a∨| 少妇熟女久久综合网色欲| 久久九九久精品国产免费直播| 日本人妻丰满熟妇久久久久久| 久久精品草草草| 天堂无码久久综合东京热| 久久午夜羞羞影院免费观看| 国产精品久久永久免费| 久久精品成人欧美大片| 99久久国产宗和精品1上映| 久久久久国产精品| 精品久久久久久无码不卡| 久久国产精品成人影院| 久久综合伊人77777麻豆| 亚洲综合熟女久久久30p| 国内精品久久久久久麻豆| 亚洲中文字幕无码久久2020| 色综合久久综合网观看| 狠狠色狠狠色综合久久| 国产毛片久久久久久国产毛片| 中文字幕久久久久人妻| 久久无码AV中文出轨人妻| AV无码久久久久不卡网站下载 | 色婷婷久久综合中文久久蜜桃av| 久久国产精品-国产精品| 无码人妻久久一区二区三区免费| 久久久久国产视频电影| 久久伊人精品青青草原高清| 亚洲综合熟女久久久30p| 亚洲伊人久久大香线蕉综合图片| 99精品久久久久久久婷婷| 99久久婷婷国产综合亚洲| 久久久av波多野一区二区| 99久久精品免费看国产一区二区三区 | 国产成人久久精品二区三区| 99re久久精品国产首页2020| 无遮挡粉嫩小泬久久久久久久| 久久午夜免费视频|