背景知識:
縮放矩陣相當簡單。它的目的要麼放大,要麼縮小物體的尺寸。你可以這麼使用它,例如當你想用相同的模型創造稍有出不同的物件(大的小的樹實踐上是一樣的),或者當你想在世界空間中把乙個物件的到小匹配到它的角色中時。例如上面的例子中你可能想在三個軸上都縮放頂點位置相同大小的頂點位置。然而,有些時候你可能只是想縮放1~2個軸,使模型變得「更胖」或「更瘦」。
編寫變換矩陣是有點繁瑣的。我們以乙個單位矩陣開始,還記得單位矩陣乘向量使向量保持不變的原因,是逐一用每個分量乘對角線上的每乙個1。沒有乙個分量能影響其他分量。因此,用其他值替換其中某個1,會導致物體在這條軸上增加或減少,在某條軸上,如果值大於1則變大,如果值小於1則變小。
原始碼實踐:
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;
跟之前的教程相比唯一的改變就是,根據上面的描述替換了世界變換矩陣。正如你看到的,三條軸我們都通過乙個-1~1之間的值縮放。在(0, 1]範圍,三角形在很瘦和它原始大小之間波動,當對角線是0時它完全消失。在範圍[-1, 0)範圍,看起來也是一樣的僅僅反轉了而已,因為在對角線上縮放值實際上改變了位置標記。
opengl 教程 8 物體縮放
縮放矩陣比較簡單,它的目的就是在三個軸 x,y,z 方向,對物體長度進行縮放 或者說,對頂點在三個軸的分量進行縮放 當然也可以選擇某個軸方向來縮放。對物體進行縮放的原因主要是用來匹配世界空間不同物體的大小,因為三維物體建模都是在模型空間,通常 x,y,z 的範圍都是 0,1 而世界空間中,物體有大有...
opengl教程翻譯 9插值
背景知識 這個教程演示了乙個3d管線中非常重要的部分 插值,光柵器對從頂點著色器出來的變數所執行的操作。你已經看到了,為了在螢幕上獲得一些有意義的東西,你需要指定其中乙個從頂點著色器出來的變數為 gl position 這是乙個包含了頂點對應座標的4 向量。向量中的xyz分量被w分量分割 乙個被稱為...
opengl教程翻譯 6平移變換
背景知識 在這個課程中我們開始關注乙個物體在3d中的各種變換,並使它在螢幕上顯示時呈現一種縱深的錯覺。通常的做法是分別用一種矩陣表示變換,逐個相乘,用最終的式子再乘頂點位置。每節課會專門講解乙個變換。這裡我們看一下這個平移變換,這個變換負責沿著乙個任意長和方向的向量移動物體。就說你想把三角形從左圖移...