青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

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

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

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  60 隨筆 :: 1 文章 :: 18 評論 :: 0 Trackbacks
environment mapping的技術(shù)可以不依賴ray-trace而實(shí)現(xiàn)復(fù)雜環(huán)境我反射,這種技術(shù)使用一個(gè)或多個(gè)紋理來模擬外部環(huán)境的反射,這種技術(shù)最適合于應(yīng)用到具有高亮鏡面的物體。
環(huán)境映射方法是從視點(diǎn)到反射物體某點(diǎn)P的一根光纖,根據(jù)P點(diǎn)的位置與法向n,計(jì)算得到反射光線r,不像光線跟蹤那樣真正去計(jì)算反射光線的最近交點(diǎn),環(huán)境映射方法則用該反射光線作為一個(gè)索引,得到環(huán)境映射中的相應(yīng)的環(huán)境紋理。


其中計(jì)算映射到物體的紋理是通過計(jì)算視點(diǎn)到正方體表面點(diǎn)的向量的反向量

根據(jù)http://www.cnblogs.com/sssa2000/archive/2009/03/22/1419205.html中提到的:

在一個(gè)環(huán)境中生成球面貼圖的時(shí)候,由于環(huán)境相對于球體而言無限大,所以可以把球體看成是一個(gè)單位球體。同時(shí),有由于相機(jī)位于無限遠(yuǎn)處,所以相機(jī)到球體上的各個(gè)點(diǎn)的向量可以看成是相互平行的。

wps_clip_image1

     于是很容易的想到:

     1、生成視線向量V。

     2、根據(jù)頂點(diǎn)法線生成反射向量R。

     3、查找R和球面的交點(diǎn)。

     4、根據(jù)交點(diǎn)求出UV坐標(biāo)。

wps_clip_image2

     R可以很容易的求出。為了求出UV,需要求出R和球面的交點(diǎn)E在球面的位置。這個(gè)時(shí)候回到生成球面紋理圖時(shí)候的場景,由于球面是單位球面,利用單位球面的一個(gè)性質(zhì):球面上的點(diǎn)的歸一化法線就是該點(diǎn)在球面上的位置。

     我們只需要知道在生成球面紋理圖的時(shí)候,在球面上相同的點(diǎn),當(dāng)反射向量也為R的時(shí)候該點(diǎn)的法線為多少即可。

wps_clip_image3

     根據(jù)向量加法原則,法線是視線向量和反射向量的和。為了模擬視點(diǎn)位于無限遠(yuǎn)處的情況,可以假象生成球面紋理圖的過程是位于View Space,這樣的話,Eye Vec就總是(0,0,1)。于是只需要把反射向量也轉(zhuǎn)化到View Space就可以得出球面的法線向量。

wps_clip_image4



也可以這樣理解:


環(huán)境貼圖的坐標(biāo)和一般2D的貼圖的貼圖坐標(biāo)不同,首先它需要用三維向量(x,y,z)來定位,GPU以(x,y,z)中絕對值最大的那個(gè)軸來決定要采用哪站貼圖,假如坐標(biāo)為(1,0,0),X軸數(shù)值的絕對值最大,所以會采用X軸方向視角的兩貼圖的其中一個(gè),又因?yàn)閄>0,即正直,所以會用正X軸方向的貼圖。
選擇好貼圖以后,再把三維貼圖坐標(biāo)轉(zhuǎn)換成正常的二維坐標(biāo),轉(zhuǎn)換方法是把絕對值最大的數(shù)值除以其他兩個(gè)數(shù)值,再把得到的結(jié)果從-1到1的范圍使用公式f(x)=(x+1.0)*0.5轉(zhuǎn)換到0~1的范圍,假如貼圖坐標(biāo)是(2,0,0),那么會使用正x軸方向的貼圖,讀取坐標(biāo)位置為(0.5,0.5)的像素,
繪制渲染環(huán)境代碼
 1 void draw_environment (){
 2    static GLfloat xPlane[] = 1.0f0.0f0.0f0.0f };
 3    static GLfloat yPlane[] = 0.0f1.0f0.0f0.0f };
 4    static GLfloat zPlane[] = 0.0f0.0f1.0f0.0f };
 5    
 6    glEnable (GL_TEXTURE_GEN_S);
 7    glEnable (GL_TEXTURE_GEN_T);
 8    glEnable (GL_TEXTURE_GEN_R);
 9    
10    /* Bind to cube map texture */
11    glEnable (GL_TEXTURE_CUBE_MAP_ARB);
12    glBindTexture (GL_TEXTURE_CUBE_MAP_ARB, g_uiCubemapTexture);
13    
14    //Setup auto texture coord generation 
15    glTexGeni (GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
16    glTexGeni (GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
17    glTexGeni (GL_R, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
18    
19    glTexGenfv (GL_S, GL_OBJECT_PLANE, xPlane);
20    glTexGenfv (GL_T, GL_OBJECT_PLANE, yPlane);
21    glTexGenfv (GL_R, GL_OBJECT_PLANE, zPlane);
22    
23    glDisable (GL_DEPTH_TEST);
24    
25//    glutSolidSphere (20.0f, 60, 30);
26    glutSolidCube (20.0f);
27    
28    glEnable (GL_DEPTH_TEST);
29    
30    glDisable (GL_TEXTURE_CUBE_MAP_ARB);
31    
32    glDisable (GL_TEXTURE_GEN_S);
33    glDisable (GL_TEXTURE_GEN_T);
34    glDisable (GL_TEXTURE_GEN_R);
35}

繪制反射場景:

 1void myDispaly(){
 2         GLfloat mat[16], invmat[16];
 3     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);            
 4     glMatrixMode (GL_TEXTURE);
 5     glLoadIdentity ();
 6     glMatrixMode (GL_MODELVIEW);
 7     glLoadIdentity ();
 8     glTranslatef (0.00.0-5.0);
 9    
10    glRotated (cam_rot.x, 1.0f0.0f0.0f);
11    glRotated (cam_rot.y, 0.0f1.0f0.0f);
12    glRotated (cam_rot.z, 0.0f0.0f1.0f);        
13    draw_environment ();
14
15     
16    glEnable (GL_TEXTURE_GEN_S);
17    glEnable (GL_TEXTURE_GEN_T);
18    glEnable (GL_TEXTURE_GEN_R);
19    
20    glTexGeni (GL_S, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP);
21    glTexGeni (GL_T, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP);
22    glTexGeni (GL_R, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP);
23    
24
25    
26    glEnable (GL_TEXTURE_CUBE_MAP_ARB);
27    glBindTexture (GL_TEXTURE_CUBE_MAP_ARB, g_uiCubemapTexture);
28    
29    glGetFloatv (GL_MODELVIEW_MATRIX, mat);
30    compute_matrix_inverse (mat, invmat);
31    
32    glMatrixMode (GL_TEXTURE);
33    invmat[12= 0.0f;
34    invmat[13= 0.0f;
35    invmat[14= 0.0f;
36    invmat[15= 1.0f;
37    glLoadMatrixf (invmat);
38    
39
40
41    glMatrixMode (GL_MODELVIEW);
42    glRotated(45,0,1,0);
43    glRotated(180,1,0,0);
44        glutSolidTeapot(1.0);
45    
46    
47    glDisable (GL_TEXTURE_CUBE_MAP_ARB);
48    
49    
50    glDisable (GL_TEXTURE_GEN_S);
51    glDisable (GL_TEXTURE_GEN_T);
52    glDisable (GL_TEXTURE_GEN_R);
53        glutSwapBuffers();
54}

渲染結(jié)果:



旋轉(zhuǎn)場景:



參考:
http://www.nvidia.cn/object/cube_chs.html
http://www.cnblogs.com/sssa2000/archive/2009/03/22/1419205.html

posted on 2012-02-16 17:51 情絕格調(diào)(fresmaster) 閱讀(1435) 評論(0)  編輯 收藏 引用 所屬分類: Graphics
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            蜜桃久久精品一区二区| 在线观看成人一级片| 亚洲精品网站在线播放gif| 午夜日韩电影| 国产精品自在欧美一区| 欧美国产日韩一区二区三区| 亚洲国产高清一区| 久久久精品国产免费观看同学| 亚洲电影欧美电影有声小说| 欧美体内she精视频| 亚洲校园激情| 亚洲精品国产系列| 欧美国产日韩xxxxx| 久久精品国产999大香线蕉| 亚洲一区二区视频在线观看| 雨宫琴音一区二区在线| 国产日韩欧美制服另类| 欧美日韩专区在线| 欧美日韩一区二区视频在线观看| 免费成人高清视频| 欧美激情a∨在线视频播放| 久久尤物视频| 免费在线播放第一区高清av| 久久久人成影片一区二区三区观看 | 亚洲永久免费| 亚洲欧美激情精品一区二区| 99精品黄色片免费大全| 亚洲理伦在线| 亚洲国产一区二区三区在线播| 欧美国产一区二区三区激情无套| 欧美大色视频| 日韩一级精品| 中国成人黄色视屏| 午夜精品久久久久久久99樱桃 | 亚洲最新在线| 亚洲午夜性刺激影院| 亚洲综合欧美日韩| 鲁大师成人一区二区三区| 亚洲国产成人porn| 亚洲午夜电影网| 久久久综合网站| 欧美日韩色综合| 国产一区二区三区免费不卡| 亚洲欧洲精品一区二区三区波多野1战4 | 欧美激情精品久久久久| 欧美日本免费| 激情综合激情| 亚洲欧美中文日韩在线| 欧美激情一区二区三区不卡| 亚洲在线观看免费视频| 欧美激情第10页| 精品成人乱色一区二区| 99国产精品| 欧美大色视频| 亚洲无毛电影| 久久男人资源视频| 亚洲精品视频免费| 老司机午夜精品视频在线观看| 国产精品一区=区| 在线亚洲精品| 夜夜夜久久久| 欧美精品色网| 亚洲美女黄网| 久久久久久亚洲精品中文字幕| 一本一本久久a久久精品牛牛影视| 久久久噜噜噜久噜久久| 尤物99国产成人精品视频| 久久九九热免费视频| 一区二区三区av| 欧美午夜视频在线| 亚洲国产天堂久久国产91| 久久一区二区三区国产精品 | 国产一区二区日韩| 亚洲韩国精品一区| 欧美激情第三页| 欧美日韩成人一区| 亚洲欧美成人一区二区在线电影 | 欧美一进一出视频| 免播放器亚洲一区| 乱中年女人伦av一区二区| 亚洲电影免费观看高清| 最新国产成人av网站网址麻豆 | 国产精品毛片高清在线完整版| 一区二区欧美精品| 午夜精品短视频| 亚洲人成毛片在线播放| 一本大道久久a久久综合婷婷 | 亚洲精品美女久久久久| 日韩一级黄色av| 亚洲第一福利在线观看| 最近中文字幕mv在线一区二区三区四区| 欧美日韩18| 另类av一区二区| 欧美另类变人与禽xxxxx| 日韩午夜在线电影| 午夜精品福利在线| 99av国产精品欲麻豆| 久久精品99无色码中文字幕| 亚洲人成网站影音先锋播放| 欧美激情国产精品| 欧美激情2020午夜免费观看| 精品不卡一区| 欧美a级大片| 91久久国产综合久久蜜月精品| 亚洲欧洲精品一区二区三区不卡 | 欧美aa在线视频| 嫩草成人www欧美| 亚洲伦理一区| 欧美日本精品| 亚洲一区免费视频| 久久久青草婷婷精品综合日韩| 国内精品久久久久久| 裸体素人女欧美日韩| 欧美承认网站| 亚洲视频精选| 国产亚洲精品久久久久动| 久久久久久国产精品mv| 亚洲欧洲在线观看| 欧美一区=区| 亚洲精品一区二区三区不| 欧美性猛交xxxx乱大交退制版 | 国产精品99久久久久久久久久久久 | 极品少妇一区二区三区| 欧美劲爆第一页| 欧美综合77777色婷婷| 亚洲人成小说网站色在线| 欧美在线观看视频| 99re8这里有精品热视频免费 | 国产午夜精品久久| 欧美激情亚洲精品| 久久精品国产精品 | 亚洲欧美日韩国产另类专区| 久久免费黄色| 欧美一区=区| 午夜精品视频| aa国产精品| 亚洲欧洲精品一区二区| 伊人色综合久久天天| 国产香蕉久久精品综合网| 国产精品久久婷婷六月丁香| 欧美日韩中文字幕在线视频| 欧美激情一级片一区二区| 久久久亚洲国产天美传媒修理工 | 欧美日韩不卡一区| 久久夜色精品一区| 欧美在线视频免费播放| 亚洲欧美日韩天堂| 亚洲欧美bt| 亚洲一区免费| 欧美伊人久久大香线蕉综合69| 亚洲性视频网址| 亚洲欧美另类中文字幕| 久久精品免费观看| 美脚丝袜一区二区三区在线观看| 久久福利毛片| 美乳少妇欧美精品| 免费成人毛片| 欧美日韩在线另类| 国产欧美日韩另类一区| 国内精品久久久久久久果冻传媒| 狠狠色丁香久久婷婷综合_中| 黄色精品一区| 亚洲性感激情| 久久综合五月天婷婷伊人| 亚洲国产精品久久久久秋霞影院| 日韩视频第一页| 欧美一区二区在线免费观看| 另类亚洲自拍| 欧美系列精品| 亚洲国产精品电影| 亚洲欧美日韩一区二区三区在线| 久久精品日韩| 日韩天堂在线观看| 久久电影一区| 国产精品久久一区主播| 黄网站色欧美视频| 亚洲免费在线观看| 亚洲精品极品| 久久婷婷国产综合精品青草 | 欧美岛国激情| 亚洲欧美日韩一区| 欧美日韩成人| 亚洲免费av电影| 欧美黄在线观看| 免费在线亚洲欧美| 国产一区91| 欧美在线观看网站| 一本不卡影院| 国产精品久久久久久久久搜平片 | 亚洲国产视频直播| 久久一区精品| 最新国产成人在线观看| 久久久久国产精品www| 国产亚洲精品美女| 欧美一区亚洲二区| 亚洲女人小视频在线观看| 国产精品无码永久免费888| 亚洲夜间福利| 新67194成人永久网站| 国产一区二区三区在线播放免费观看|