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

(轉)gluPerspective和gluLookAt的關系

轉自: http://hi.baidu.com/sunguangran/blog/item/ded90ced94779dd2b31cb11c.html

終于搞明白gluPerspective和gluLookAt的關系了

函數原型
gluLookAt(GLdoble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble centerz,GLdouble upx,GLdouble upy,GLdouble upz);

gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar)

一個一個來,首先得設置gluPerspective,來看看它的參數都表示什么意思
fovy,這個最難理解,我的理解是,眼睛睜開的角度,即,視角的大小,如果設置為0,相當你閉上眼睛了,所以什么也看不到,如果為180,那么可以認為你的視界很廣闊,
aspect,這個好理解,就是實際窗口的縱橫比,即x/y
zNear,這個呢,表示你近處,的裁面,
zFar表示遠處的裁面,

如果還沒有理解就繼續看,
我們知道,遠處的東西看起來要小一些,近處的東西看起來會大一些,這就是透視原理
如下圖所示



假設那兩條線表示公路,理論上講,它們的兩條邊是平行的,
但現實情況中,它們在遠方(可以無限遠)總要相交于一點,
實際線段AB的長度=CD的長度,只是在此例中使用了透視角,故會有如上的效果,是不是很接近現實的情況?

結合我們剛才這兩個函數
zNear,眼睛距離近處的距離,假設為10米遠,請不要設置為負值,OpenGl就傻了,不知道怎么算了,
zFar表示遠處的裁面,假設為1000米遠,
就是這兩個參數的意義了,

再解釋下那個"眼睛睜開的角度"是什么意思,
首先假設我們現在距離物體有50個單位距離遠的位置,
在眼睛睜開角度設置為45時,請看大屏幕:


我們可以看到,在遠處一個球,,很好玩哈,
現在我們將眼睛再張開點看,將"眼睛睜開的角度"設置為178
(180度表示平角,那時候我們將什么也看不到,眼睛睜太大了,眼大無神)


我們只看到一個點,,,,,,,,,,,,,,,,,,,,,,,,,,,
因為我們看的范圍太大了,這個球本身大小沒有改變,但是它在我們的"視界"內太小了,


反之,我們將眼睛閉小些,改為1度看看會出現什么情況呢?


在我們距離該物體3000距離遠,"眼睛睜開的角度"為1時,我們似乎走進了這個球內,這個是不是類似于相機的焦距?

當我們將"透視角"設置為0時,我們相當于閉上雙眼,這個世界清靜了,

我們什么也看不到,,,,,,,,,



現在來看gluLookAt(GLdoble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble centerz,GLdouble upx,GLdouble upy,GLdouble upz);

它共接受三對坐標,
分別為eye,center,up
故名思義,eye表示我們眼睛在"世界坐標系"中的位置,
center表示眼睛"看"的那個點的坐標,
最后那個up坐標表示觀察者本身的方向,如果將觀察點比喻成我們的眼睛,那么這個up則表示我們是正立還是倒立異或某一個角度在看,所看的影像大不相同,故此時需要指明我們現在正立,那么X,Z軸為0,Y軸為正即可,通常將其設置為1,只要表示一個向上的向量(方向)即可
球是畫在世界坐標系的原點上的,即O(0,0,0)坐標上,我們的眼睛位于觀察點A(0,0,100),Z軸向屏幕里看去的方向為負,屏幕外我們的位置,Z軸為正值,其實很好理解,即我們距離原點的距離,設置100,將觀察到如下圖所示的影像

如果我們向前或向后移動,則相應的圖像會變大或變小,這里其實就是運用了透視原理,近處的物體大,遠處的物體小,實際物體的大小是不變的,

同理改變center坐標(眼睛看去的那個點,可簡單理解為視線的終點)也會影響球的大小,同樣可以認為是改變了物體與觀察點的距離所致,

最后那個up坐標表示觀察者本身的方向,如果將觀察點比喻成我們的眼睛,那么這個up則表示我們是正立還是倒立異或某一個角度在看,所看的影像大不相同,故此時需要指明我們現在正立,那么X,Z軸為0,Y軸為正即可,通常將其設置為1,只要表示一個向上的向量(方向)即可,我們指定0.1f或0.00001f異或1000.0f,效果是一樣的,只要能表示方向即可,




以上理解了之后,來做一個測試
透視圖不變,最遠處仍為3000,近處為0.1

gluPerspective                            // 設置透視圖
        (45,                            // 透視角設置為 45 度,在Y方向上以角度為單位的視野
        (GLfloat)x/(GLfloat)y,    // 窗口的寬與高比
        0.1f,                                // 視野透視深度:近點1.0f
        3000.0f                            // 視野透視深度:始點0.1f遠點1000.0f
        );


將我們的觀察點置于A(0,10,0),
將觀察位置(視線終點)坐標置于(0,0,0)
然后在原點開始繪圖,畫一個V字形,并將Z軸的值從-1000遞增加到+1000,增量為10,
代碼如下

    glColor3f(0.5f, 0.7f, 1.0f);

    glBegin(GL_LINES);
        for(int i=-1000;i<=1000;i+=10)
        {
            glVertex3f(0,0,i);
            glVertex3f(10,10,i);

            glVertex3f(0,0,i);
            glVertex3f(-10,10,i);
        }
    glEnd();

F5運行效果如下圖


上圖證實了我們的推測











//---------------------------------------------
    //生成網絡
    glColor3f(0.5f, 0.7f, 1.0f);
    int x=(int)(40*2);
   
    glBegin(GL_LINES);
            for(int i=-x;i<=x;i+=4)
            {
                glVertex3i(-x,0,i);
                glVertex3i(x,0,i);

                glVertex3i(i,0,x);
                glVertex3i(i,0,-x);
            }
    glEnd();

//生成球體
    GLUquadricObj * pObj;
    pObj = gluNewQuadric();
    gluQuadricDrawStyle(pObj,GLU_LINE);
    gluQuadricNormals(pObj,GLU_SMOOTH);

=============================================================
以下是個小總結:
1、模視矩陣(ModelView Matrix)的作用是將模型從局部坐標系變換到世界坐標系,并最終變換到視點坐標系中。它由模型變換矩陣和視點變換矩陣組成。
2、gluLookAt影響的是視點矩陣,它顯式的標明了視點坐標系與世界坐標系的關系,即視點被安置在世界坐標系的哪個位置,視線的方向朝向何處。
3、gluPerspective用于規定視景體范圍,與模視矩陣無關,它影響的是投影矩陣和規一化矩陣。投影矩陣的作用是使模型產生近大遠小的效果,規一化矩陣是將模型的z值規一化到0~1之間。
4、在編程的時候,需要glMatrixMode來指定矩陣堆棧的類型,然后對該矩陣進行修改。
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
   的作用是初始化模視矩陣,將坐標原點重新設置在世界坐標系的原點。之后的glTranslate、glScale、glRotate都會改變模視矩陣中的模型變換矩陣。而glLookAt則設置視點變換矩陣。它們共同作用,使得模型能在世界坐標系中正確安放,并能從合適的角度去觀察。

posted on 2009-04-01 11:03 小蟲蟲 閱讀(3849) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

導航

統計

常用鏈接

留言簿(5)

隨筆分類

隨筆檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲黄色一区| 欧美日韩亚洲一区二区| 久久成人资源| 亚洲国产精品黑人久久久| 国产亚洲一区在线播放| 国产九九精品视频| 国产日韩欧美高清免费| 国产精品chinese| 国产精品免费福利| 国产日韩亚洲欧美精品| 韩日精品视频一区| 亚洲精品欧美日韩| 亚洲美女在线观看| 亚洲特级片在线| 亚洲欧美日韩电影| 欧美成人黑人xx视频免费观看| 久久乐国产精品| 亚洲精选在线| 久久久精品午夜少妇| 欧美成人精品一区二区| 欧美激情在线| 国产午夜精品理论片a级探花| 狠狠狠色丁香婷婷综合久久五月| 亚洲美洲欧洲综合国产一区| 亚洲私人黄色宅男| 欧美高清视频一区二区三区在线观看| 亚洲国产精品黑人久久久| 国产一区二区看久久| 亚洲国产欧美一区二区三区久久| 亚洲精品乱码久久久久久按摩观 | 欧美大片免费看| 亚洲精品乱码久久久久久蜜桃91| 午夜宅男欧美| 韩国视频理论视频久久| 亚洲国产黄色| 榴莲视频成人在线观看| 今天的高清视频免费播放成人 | 亚洲一区二区三区色| 久久资源av| 亚洲第一色在线| 亚洲国产精品久久久久| 久久久夜精品| 亚洲国产精品传媒在线观看 | 国产精品美女久久| 亚洲女同性videos| 欧美亚洲一区二区在线观看| 国产日本欧美视频| 欧美多人爱爱视频网站| 欧美激情网友自拍| 亚洲欧美视频在线观看视频| 亚洲欧洲av一区二区三区久久| 国产精品永久免费在线| 国产精品亚洲人在线观看| 一本色道久久综合亚洲精品高清| 亚洲狠狠婷婷| 国产精品高潮呻吟视频| 久久久久成人精品| 欧美wwwwww| 欧美一区二区性| 久久9热精品视频| 亚洲看片一区| 亚洲女性喷水在线观看一区| 国产欧美精品日韩精品| 亚洲国产精品成人综合| 国产欧美综合一区二区三区| 麻豆视频一区二区| 欧美日韩小视频| 欧美激情一区二区| 狠狠久久五月精品中文字幕| 亚洲欧洲精品一区二区三区不卡 | 亚洲精品少妇| 91久久精品美女| 久久久999精品| 久久免费国产精品| 国产日韩欧美精品在线| 亚洲男女毛片无遮挡| 亚洲尤物视频在线| 欧美精品九九| 一本大道久久a久久精二百| 亚洲欧洲日夜超级视频| 免费一级欧美片在线播放| 久久―日本道色综合久久| 国产精品免费视频xxxx| 日韩亚洲欧美一区二区三区| 免费观看成人www动漫视频| 亚洲福利视频专区| 日韩亚洲精品视频| 欧美日韩一区二区免费在线观看| 亚洲免费高清| 久久av红桃一区二区小说| 在线观看欧美日韩| 欧美日韩国产经典色站一区二区三区| 亚洲国产欧美一区| 亚洲自拍偷拍麻豆| 精品福利av| 国产精品99免视看9| 欧美制服丝袜第一页| 亚洲高清久久久| 欧美影院在线| 夜夜嗨av一区二区三区中文字幕| 国产精品影院在线观看| 欧美freesex交免费视频| 亚洲综合视频网| 亚洲人在线视频| 久久久久久久波多野高潮日日| 91久久精品国产| 国产视频精品免费播放| 欧美日韩日本视频| 欧美成人自拍| 欧美韩日一区二区三区| 久久精品在线观看| 亚洲欧美综合网| 欧美专区中文字幕| 久久精品一级爱片| 久久亚洲春色中文字幕| 久久久亚洲影院你懂的| 久久午夜影视| 麻豆av一区二区三区| 久久久99精品免费观看不卡| 亚洲女人天堂成人av在线| 亚洲专区一二三| 久久久精品国产免大香伊| 一本色道久久综合精品竹菊| 国产一区二区三区四区hd| 激情校园亚洲| 一本一道久久综合狠狠老精东影业 | 欧美一区二区三区喷汁尤物| 一区二区三区视频观看| 亚洲视频免费| 欧美影院在线| 欧美电影免费| 国产一区二区主播在线| 91久久久国产精品| 欧美一区=区| 亚洲高清一区二| 亚洲欧美日韩另类| 麻豆av一区二区三区久久| 欧美三级在线| 亚洲日韩中文字幕在线播放| 欧美有码视频| 亚洲一级免费视频| 欧美日韩伦理在线免费| 亚洲精品乱码久久久久久| 久久只有精品| 欧美一级理论性理论a| 欧美日韩免费观看一区=区三区| 国产综合自拍| 久久综合久久美利坚合众国| 午夜激情久久久| 国产亚洲欧美另类中文| 欧美一区二区三区免费视| 一区二区三区导航| 国产精品对白刺激久久久| 亚洲图片在线观看| 亚洲视频你懂的| 国产精品日韩一区二区| 香蕉久久夜色精品| 亚洲美女淫视频| 日韩视频一区二区三区在线播放免费观看 | 久久av一区二区三区漫画| 中国成人在线视频| 国产日韩精品综合网站| 久久久久久久高潮| 久久蜜桃av一区精品变态类天堂| 激情久久五月| 亚洲欧洲另类国产综合| 国产精品久久9| 久久综合伊人77777麻豆| 久久精品国产99| 影音先锋久久资源网| 亚洲二区视频在线| 国产精品日韩欧美| 男人的天堂亚洲| 国产精品午夜久久| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美精品久久久久久久久久| 亚洲欧美一区二区激情| 久久国产毛片| 亚洲一卡久久| 久久久一区二区| 香蕉久久夜色| 欧美精品免费在线观看| 欧美在线观看你懂的| 欧美高潮视频| 老司机精品视频一区二区三区| 免费日韩精品中文字幕视频在线| 一本一本a久久| 欧美激情精品| 亚洲精品美女在线观看播放| 影音先锋久久| 蜜桃av综合| 亚洲黄色有码视频| 久久久久久久综合日本| 欧美一区二区三区四区在线观看地址 | 久久久视频精品| 韩日欧美一区二区三区| 欧美亚洲一区三区| 欧美不卡在线| 亚洲午夜一二三区视频| 国产精品看片资源|