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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[OpenGL]OpenGL几何变换的秘密(模型变换、视点变换、全局变换、局部变换)

發布時間:2024/5/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [OpenGL]OpenGL几何变换的秘密(模型变换、视点变换、全局变换、局部变换) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.模型變換(Model transformation)---- 視點不變,變物體

我們在OpenGL中通過定義一組頂點來定義一個模型,我們遇到的平移、縮放、旋轉等變換都可以理解為模型變換,視點不變,主要對物體進行操作。

在OpenGL中,我們使用glMatrixMode(GL_MODELVIEW)來處理模型變換,我們知道OpenGL使用堆棧管理矩陣,所以我們有不同的堆棧進行管理,有模型變換矩陣堆棧,視點變換矩陣堆棧,還有紋理變換矩陣堆棧等等,這句話就是告訴OpenGL,我們要處理模型變換。

2.視點變換(View transformation)---- 物體不變,變視點

OpenGL成像主要是采用虛擬相機模型,在場景中我們通過模型變換,將物體放在場景中不同的位置,最終哪些部分需要顯示在屏幕上,主要是由視點變換、投影變換等決定。視點變換階段,我們通過假想的相機來處理矩陣計算。,所謂的視點空間,視點坐標系都是為了方便處理,引入的坐標空間。
在OpenGL中,我們主要使用

gluLookAt(eyex,eyey,eyez,centerx,centery,centerz,upx,upy,upz)

來達到模擬物體不動,變換視點的效果

總結
其實兩者本質上是一樣的,gluLookAt()還是只是計算出了一個變換矩陣


3.全局變換和局部變換

大致先解釋一下:
①全局變換主要是在全局坐標系,也叫世界坐標系中進行變換,基本是定死的,如下圖的第一行變換就是全局變換,正方形在xyz坐標系中,先想(10,0,0)方向平移10,再繞z軸旋轉45°
②局部變換主要是在局部坐標系,也叫模型坐標系,就是字面意思模型自己的坐標,如下圖第二行,第三行變換,當我們以局部坐標系對正方形進行先平移,后旋轉的操作時,會發現和全局變換的結果有區別,但是當我們反過來,先旋轉,再平移變換,所達到的結果和全局變換的效果一致

總結:
(1)如果只有一次變換(旋轉、平移。縮放),那么全局變換和局部變換效果一樣
(2)如果是多個變化的組合,全局變換和局部變換效果不同
(3)局部變換的結果正好相當于組合順序相反的全局變換


看到這,相信很多人都會覺得那為什么要有局部變換呢?全部都用全局變換就好了,為什么這么麻煩呢?
個人理解:全局變換適用于整個模型的變換,當我們涉及到模型的部分組件變換的時候,以模型坐標系作為變換的計算更為便捷。例如:當我們場景中有一個機器人時,機器人整體的行走,跑動等位移,我們可以用全局變換,去看機器人跑動了多遠,但是當機器人跑動的時候,手臂,腳的擺動角度,高度這些,我們如果用全局變換去計算會變得非常麻煩,但是當我們以模型坐標系去定位,機器人手腳的位置,這樣的計算就相對來說會變的簡單不少

總結

以上是生活随笔為你收集整理的[OpenGL]OpenGL几何变换的秘密(模型变换、视点变换、全局变换、局部变换)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。