<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【譯】各種光照的算法原理

      【譯】各種光照的算法原理
      本文遵循“署名-非商業(yè)用途-保持一致”創(chuàng)作公用協(xié)議

      原文鏈接:http://www.nitrogen.za.org/viewtutorial.asp?id=5

      這個(gè)教程用到了向量數(shù)學(xué)知識,如果你對向量數(shù)學(xué)還不是很了解,請先閱讀向量教程:read the tutorial

      光照與物體表面的相互作用可以通過將一些數(shù)學(xué)公式應(yīng)用于基于per pixel(區(qū)別于基于頂點(diǎn))的著色,從而模擬出真實(shí)生活中的各種材質(zhì)效果。比如浮雕效果,波浪效果,油漆效果等。

      在這個(gè)教程中,我們有如下假定:

      第一,我們討論的是基于像素著色(per-pixel basis),每個(gè)pixel有它自己的位置向量,法線向量以及表面顏色(Surface color,在這里可以是來自紋理的顏色,也可以是RGB顏色(flat color));

      第二,表面顏色Surface color)通常是由R,G,B三部分組成,在這個(gè)教程中,我們把它當(dāng)作一個(gè)向量看待;

      第三,輸入表面顏色(光照處理前的表面顏色,這里的“輸入”可以理解為函數(shù)的輸入?yún)?shù)的“輸入”)只是普通的顏色(單純的紋理顏色或者RGB顏色),而輸出表面顏色(光照處理后的表面顏色)是光照作用于表面的合成顏色,如可以是有陰影,高光等效果的顏色。

      第四,這個(gè)教程中假設(shè)每個(gè)場景中只有一個(gè)燈光。對于多燈光的場合,對每一個(gè)燈光循環(huán)進(jìn)行這些運(yùn)算(環(huán)境光除外)。

       

      好了,讓我們開始講解各種光照的算法原理 

      Ambient Lighting環(huán)境光

      在真實(shí)生活里,有光線的房子里的物體不會是全黑的,總有一些光量子照亮物體表面,即使這個(gè)表面是背對光源的,這就是環(huán)境光的原因。我們不考慮環(huán)境光的照射方向,我們總認(rèn)為場景中的物體,不論它在什么位置,總會受到一定數(shù)量的環(huán)境光照射(全局照明)。環(huán)境光照算法如下:

      Inputs:

             Col – 物體原表面顏色

              AmbAmount – 場景中環(huán)境光的強(qiáng)弱程度 (介于0 1之間)

           Outputs:

              SurfaceColor – 環(huán)境光照作用之后的表面顏色

              SurfaceColor = Col*AmbAmount;

      環(huán)境光照效果圖

      Lambert Shading(郎伯特著色,郎伯特:物理上的亮度單位,在這里就是漫射光作用)

      現(xiàn)在我們真正開始考慮一束光照射在物體表面上的作用過程,我們使用最常見的光照算法-------漫反射光照著色或者說郎伯特余弦定律或郎伯特著色(三個(gè)都一回事),這個(gè)算法是將入射光與表面法線向量的點(diǎn)積當(dāng)作漫反射光照強(qiáng)度因子,下面我們看看環(huán)境光照與漫射光照共同作用的算法:

      Inputs:

              LCol – 照射在表面上的漫射光

              Pos – 表面上被照射的位置

              LPos – 漫射光源的位置

              N -表面上被照射的位置處的法向量

              Col –物體原表面顏色

              AmbAmount -場景中環(huán)境光的強(qiáng)弱程度 (0 to 1)

      Outputs:

              SurfaceColor -環(huán)境光照與漫射光照共同作用之后的表面顏色

               VectorToLight = Normalise(LPos - Pos);

              DiffuseFactor = Dot(VectorToLight, Normal); //DiffuseFactor ranges from 0 to 1

      //光線與表面法線夾角大于90度,想像下光線在表面背面射過來,正表面肯定沒有光照

         if(DiffuseFactor < 0)

              then DiffuseFactor = 0;

              //環(huán)境光照與漫射光照共同作用

          SurfaceColor = Col*AmbAmount + Col*DiffuseFactor*LCol;

      環(huán)境光與漫射光共同作用效果

      Specular Highlights鏡面高光

      現(xiàn)在我們考慮物體表面有光澤的效果,這種效果是將Phong反射模型,結(jié)合前面兩個(gè)光照作用而成。這中光照效果計(jì)算需要知道觀察者在場景中的位置,而先前的環(huán)境光照與漫射光照效果計(jì)算都與觀察者所在位置無關(guān)的。

      這種光照計(jì)算是這樣的,首先我們計(jì)算入射光在表面處的反射光線,然后再將反射光線與視線(觀察者的眼睛與表面觀察點(diǎn)的連線)之間的點(diǎn)積值當(dāng)作反射到觀察者眼中的光照強(qiáng)度因子,因?yàn)楸砻嫔细吡恋牟糠质欠瓷涔饩€反射到觀察者眼睛或照相機(jī)中較多的地方,這些地方的反射光線與視線之間的夾角非常小,點(diǎn)積值就越大。

      Inputs:

              ViewPos – 觀察者的位置

              SpecAmount – 鏡面光強(qiáng)弱. (from 0 to about 200)

              SpecCol – 鏡面光顏色(通常為白色).

              LCol – 照射在表面上的漫射光

              Pos – 表面上被照射的位置

              LPos – 漫射光源的位置

              N -表面上被照射的位置處的法向量

              Col –物體原表面顏色

              AmbAmount -場景中環(huán)境光的強(qiáng)弱程度 (0 to 1)

      Outputs:

              SurfaceColor -環(huán)境光照,漫射光照與鏡面光共同作用之后的表面顏色

              DiffuseFactor = ... //經(jīng)前兩個(gè)光照作用得來的顏色

              DirectionToViewer = Normalise(ViewPos - Pos);

              VectorToLight = Normalise(LPos - Pos);

              //計(jì)算反射光

              ReflectanceRay = 2 * Dot(N, VectorToLight) * N - VectorToLight;

        

          //計(jì)算鏡面光照因子. 數(shù)學(xué)公式 SpecFac = (R dot N)^Spec

          SpecularFactor = Pow(Dot(ReflectanceRay, DirectionToViewer), SpecAmount);

          //環(huán)境光照,漫射光照與鏡面光共同作用

          SurfaceColor = Col*AmbFactor + Col*DiffuseFactor*LCol + SpecCol*SpecularFactor;

      環(huán)境光照,漫射光照與鏡面光共同作用

      Note:可以在一個(gè)場景中使用多個(gè)漫射光照與鏡面光作用

      Fresnel Term菲涅爾準(zhǔn)則

      菲涅爾效果是根據(jù)觀察者的觀察表面來調(diào)整反射率來實(shí)現(xiàn)的。比如你從水面,油漆表面或者絲綢的正上方看,反射光澤的柔和效果基本沒有,如果側(cè)著或平著看的話,反射光澤的柔和效果就很明顯,這就是菲涅爾效果。我們簡單地通過點(diǎn)積操作計(jì)算表明法線與視線之間夾角的余弦值,再將這個(gè)值加權(quán)。對于較平滑表面,加權(quán)系數(shù)設(shè)置在1.0-5.0之間(油漆效果,絲綢等),對于比較凹凸的表面,加權(quán)系數(shù)設(shè)置為8.0或更高(水波,液體等)

      Inputs:

              ViewPos – 觀察者的位置

              FresAmount – 邊緣或表面的尖銳程度. (油漆絲綢:1,液體: 2-8)

              FresCol - frenel 反射光 (通常使用reflection map or 類似的東西).

              LCol – 照射在表面上的漫射光

              Pos – 表面上被照射的位置

              LPos – 漫射光源的位置

              N -表面上被照射的位置處的法向量

              Col –物體原表面顏色

              AmbAmount -場景中環(huán)境光的強(qiáng)弱程度 (0 to 1)

      Outputs:

              SurfaceColor -環(huán)境光照,漫射光照與鏡面光,菲涅爾反射共同作用之后的表面顏色

              DiffuseFactor = ... //環(huán)境光照,漫射光照作用得來的顏色

              SpecularFactor = ... //鏡面高光作用得來的顏色

       

              DirectionToViewer = Normalise(ViewPos - Pos);

              //計(jì)算fresnel因子. 我們計(jì)算視線與表面法向量間夾角的余弦值([-1..1]之間),然后加一,移動(dòng)到區(qū)間[0..2],然后再加權(quán)。

              FresnelTerm = Pow(Dot(N, DirectionToViewer)+1, FresAmount);

         

              //確保因子的在正常范圍內(nèi)

              if (FresnelTerm > 1)

                     then FresnelTerm = 1; 

          //無菲涅爾反射的場合: Ambient light, Diffuse Light and Specular Light

               NonReflective = Col*AmbFactor + Col*DiffuseFactor*LCol + SpecCol*SpecularFactor;

       

              Reflective = FresCol;

              //環(huán)境光照,漫射光照與鏡面光,菲涅爾反射共同作用

          SurfaceColor = NonReflective*(1-FresnelTerm) + Reflective*FresnelTerm;

       

                     

      漫射無菲涅爾反射時(shí)效果                    漫射有菲涅爾反射時(shí)效果

      posted @ 2008-03-30 16:02  飄飄白云  閱讀(937)  評論(0)    收藏  舉報(bào)
      本博客遵循 Creative Commons License “署名-非商業(yè)用途-保持一致”創(chuàng)作共用協(xié)議。 與我聯(lián)系
      主站蜘蛛池模板: 人妻少妇偷人精品一区| 泰来县| 久草热在线视频免费播放| 四虎成人精品永久网站| 视频| 无码一级视频在线| 国产精品自拍一二三四区| 亚洲熟妇少妇任你躁在线观看无码| 香港日本三级亚洲三级| 人妻日韩人妻中文字幕| 广安市| 99国产精品永久免费视频| 久久精品国产亚洲AV成人毛片| 国产成人综合色视频精品| 国产精品十八禁在线观看| 亚洲熟妇久久精品| 国产成熟女人性满足视频| 2019国产精品青青草原| 亚洲欧美不卡高清在线| 国产乱色国产精品免费视频| 午夜国产福利片在线观看| 宜昌市| 97久久精品人人澡人人爽| 99久久国产成人免费网站| 亚洲人妻av伦理| 国内揄拍国内精品少妇国语| 亚洲深深色噜噜狠狠网站| 久青草精品视频在线观看| 日韩亚洲精品中文字幕| 日韩精品中文字幕有码| 国产老熟女国语免费视频| 亚洲色帝国综合婷婷久久| 精品人妻一区二区三区蜜臀| 久久精产国品一二三产品| 亚洲中文字幕无码久久2017| 一区二区三区四区五区自拍| 野花韩国高清电影| 呼玛县| 国产免费午夜福利在线观看| 国产日韩精品欧美一区灰| 日韩本精品一区二区三区|