日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

OpenGL之深入解析坐标系

發(fā)布時(shí)間:2024/5/21 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenGL之深入解析坐标系 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、坐標(biāo)系

  • 2D 笛卡爾坐標(biāo)系(由 x、y 決定)
  • 3D 笛卡爾坐標(biāo)系(由 x、y、z 決定)

二、視口

  • glViewport(GLint x,GLint y,GLsizei width,GLsizei height),對(duì)應(yīng)屏幕區(qū)域的范圍;
  • 如下所示,對(duì)應(yīng)全屏幕:

  • 如下所示,對(duì)應(yīng)屏幕一部分:

三、投影

  • 概念
    • 光源的出發(fā)點(diǎn)為投影中心;
    • 投影中心與物體上各點(diǎn)的連線(xiàn)稱(chēng)為投影線(xiàn);
    • 接受投影的面,稱(chēng)為投影面;
    • 過(guò)物體上各點(diǎn)的投影線(xiàn)與投影面的交點(diǎn)稱(chēng)為這些點(diǎn)的投影。
  • 投影分為中心投影和平行投影兩大類(lèi):
    • 所有投影線(xiàn)都交于投影中心點(diǎn)的投影稱(chēng)為中心投影,透視圖就是用這種投影方法繪制成的。
    • 所有的投影線(xiàn)都互相平行的投影稱(chēng)為平行投影,平行投影又分為斜投影和正投影兩種,當(dāng)投影線(xiàn)傾斜于投影面時(shí),稱(chēng)斜投影。
  • 正投影是指平行投射線(xiàn)垂直于投影面。透視投影屬于中心投影,透視投影圖簡(jiǎn)稱(chēng)為透視圖或透視,它是從某個(gè)投射中心將物體投射到單一投影面上所得到的圖形。透視圖與人們觀看物體時(shí)所產(chǎn)生的視覺(jué)效果非常接近,透視圖以渲染、配景,使之成為形象逼真的效果圖。
  • 如下所示:透視投影(左)和正投影(右)

四、OpenGL 的坐標(biāo)系

① 左手坐標(biāo)系與右手坐標(biāo)系

  • 在世界、物體、照相機(jī)空間是右手坐標(biāo)系。
  • 在規(guī)范化設(shè)備坐標(biāo)系用的是左手坐標(biāo)系。

② 視窗坐標(biāo)系

  • 視窗坐標(biāo)也就是手機(jī)窗口對(duì)應(yīng)的坐標(biāo)系統(tǒng),以左上角為原點(diǎn),右下角對(duì)應(yīng)手機(jī)的最大像素值的集合,如下圖是一個(gè)像素為 320*480 的手機(jī),那他右下角的坐標(biāo)就是 (320, 480)。

③ 規(guī)格化設(shè)備坐標(biāo)系

  • 規(guī)格化設(shè)備坐標(biāo)是以屏幕中心為原點(diǎn),X 軸朝右,Y 軸朝上,所以左下角的坐標(biāo)為(-1, -1),右上角的坐標(biāo)為(1,1)。當(dāng)然這是 z 軸為 0 時(shí)的顯示,實(shí)際上規(guī)格化設(shè)備坐標(biāo)系統(tǒng)是要考慮 z 軸,所以由平面要轉(zhuǎn)換成一個(gè)正方體,原點(diǎn)坐標(biāo)為(0,0,0),也就是這個(gè)立方體的中心,而它左上角離最近的那個(gè)頂點(diǎn)的坐標(biāo)就是(1,1,1),右下角離最遠(yuǎn)的那個(gè)頂點(diǎn)的坐標(biāo)就是(-1,-1,-1)。

④ 裁剪坐標(biāo)系

  • 裁剪坐標(biāo)是執(zhí)行矩陣變換和透視投影之后,但在執(zhí)行透視除法之前的坐標(biāo),超出裁剪空間的坐標(biāo)會(huì)被丟棄。

⑤ 視覺(jué)坐標(biāo)系

  • 視覺(jué)坐標(biāo)系是觀察者的眼睛出發(fā),朝手機(jī)設(shè)備看過(guò)去所能看到的,會(huì)有一個(gè) z 軸的最近距離和最遠(yuǎn)距離,也就是 zNear 和 zFar,只有在這兩者之間并且也滿(mǎn)足 x 軸和 y 軸坐標(biāo)在屏幕當(dāng)中的坐標(biāo)才會(huì)顯示出來(lái),越遠(yuǎn)的東西會(huì)顯示得越小,產(chǎn)生透視的效果;

⑥ 世界坐標(biāo)系

  • 世界坐標(biāo)系就是由用戶(hù)構(gòu)造的固定坐標(biāo)系,方便描述這個(gè)坐標(biāo)系下各種物體相對(duì)于原點(diǎn)的位置;

⑦ 慣性坐標(biāo)系

  • 慣性坐標(biāo)系是指世界坐標(biāo)系和物體坐標(biāo)系轉(zhuǎn)換的中間產(chǎn)物。慣性坐標(biāo)系的原點(diǎn)和物體坐標(biāo)系的原點(diǎn)重合,但慣性坐標(biāo)系的軸和世界坐標(biāo)系的軸平行;

⑧ 物體坐標(biāo)系

  • 物體坐標(biāo)系:物體自己獨(dú)有的坐標(biāo)系;當(dāng)物體旋轉(zhuǎn)和移動(dòng)的時(shí)候,這個(gè)坐標(biāo)系也會(huì)發(fā)生相應(yīng)的變化。


  • 慣性坐標(biāo)系是指世界坐標(biāo)系和物體坐標(biāo)系轉(zhuǎn)換的中間產(chǎn)物。慣性坐標(biāo)系的原點(diǎn)和物體坐標(biāo)系的原點(diǎn)重合,但慣性坐標(biāo)系的軸和世界坐標(biāo)系的軸平行。
  • 為什么要引入慣性坐標(biāo)系?因?yàn)槲矬w坐標(biāo)系轉(zhuǎn)換到慣性坐標(biāo)系只需要旋轉(zhuǎn),從慣性坐標(biāo)系轉(zhuǎn)換到世界坐標(biāo)系只需要平移。

五、坐標(biāo)變換

  • OpenGL 最終渲染到屏幕上是 2D 的,所以只需要將 3D 坐標(biāo)進(jìn)行一系列的變換為 2D 坐標(biāo),整個(gè)過(guò)程如下圖所示:

  • OpenGL 中只定義了裁剪坐標(biāo)系、規(guī)范化設(shè)備坐標(biāo)系和屏幕坐標(biāo)系。而局部坐標(biāo)系(模型坐標(biāo)系)、世界坐標(biāo)系和攝像機(jī)坐標(biāo)系都是為了方便用戶(hù)設(shè)計(jì)而自定義的坐標(biāo)系,它們的關(guān)系如下圖所示:

  • 模型變換、視變換、投影變換由用戶(hù)在頂點(diǎn)著色器中完成。
  • 透視除法、視口變換由 OpenGL 在頂點(diǎn)著色器處理之后完成。
與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的OpenGL之深入解析坐标系的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。