opengl 教程 8 物體縮放

2021-09-06 07:46:10 字數 1095 閱讀 9408

縮放矩陣比較簡單,它的目的就是在三個軸(x,y,z)方向,對物體長度進行縮放(或者說,對頂點在三個軸的分量進行縮放),當然也可以選擇某個軸方向來縮放。對物體進行縮放的原因主要是用來匹配世界空間不同物體的大小,因為三維物體建模都是在模型空間,通常(x,y,z)的範圍都是(0,1),而世界空間中,物體有大有小,比如小樹和大樓,這就需要我們對這些模型進行縮放操作。

縮放矩陣是乙個對角矩陣,如下圖所示,a, b,c分別表示在x,y,z三個軸上的縮放比例。

我們把它擴充套件成4x4矩陣,以便和齊次座標匹配。

主要變化**:world.m[0][0]=sinf(scale); world.m[0][1]=0.0f;        world.m[0][2]=0.0f;        world.m[0][3]=0.0f;

world.m[1][0]=0.0f;        world.m[1][1]=sinf(scale); world.m[1][2]=0.0f;        world.m[1][3]=0.0f;

world.m[2][0]=0.0f;        world.m[2][1]=0.0f;        world.m[2][2]=sinf(scale); world.m[2][3]=0.0f;

world.m[3][0]=0.0f;        world.m[3][1]=0.0f;        world.m[3][2]=0.0f;        world.m[3][3]=1.0f;和前面一篇教程相比,我們使用縮放矩陣作為世界矩陣,在x,y,z三個方向用scale的sinf值作為縮放係數,其值在[-1,1]之間變化,[1,0]變化時候,物體不斷縮小,在0的點,徹底消失,[0,-1]時候,物體變大,但需要注意的是此時x,y,z變成負值,和原物體方向相反。

程式執行後介面如下:

opengl教程翻譯 8縮放矩陣

背景知識 縮放矩陣相當簡單。它的目的要麼放大,要麼縮小物體的尺寸。你可以這麼使用它,例如當你想用相同的模型創造稍有出不同的物件 大的小的樹實踐上是一樣的 或者當你想在世界空間中把乙個物件的到小匹配到它的角色中時。例如上面的例子中你可能想在三個軸上都縮放頂點位置相同大小的頂點位置。然而,有些時候你可能...

OpenGL與旋轉 縮放 平移

2018 05 09 旋轉看起來挺費勁的,其實非常簡單。我們只需要給shader傳入mvp矩陣即可。旋轉分為兩類 camera旋轉 物體旋轉。當指定mvp矩陣時,model矩陣是每個物體攜帶的資料,projection矩陣是由camera 的fov aspect near far距離決定的,對於ca...

opengl紋理縮放的原理

用opengl處理3dlut對映的時候,lut濾鏡資料輸入到紋理後,不經過任何處理直接輸出,影象兩邊會有錯誤的畫素點出現,如下 更換了,以便驗證結果的一般性 在我的測試demo中有以下 設定紋理的屬性 當紋理座標超出範圍時,重複當前紋理 gltexparameteri gl texture 2d,g...