Unity3D開發之Matrix4x4矩陣變換

2022-02-23 17:07:52 字數 1857 閱讀 8287

在unity開發中時常會用到matrix4x4矩陣來變換場景中物件的位置、旋轉和縮放。但是很多人都不太理解這兒matrix4x4變換矩陣。通過dx中的變換矩陣我來講一講在unity中這個變換矩陣是怎麼變換的。

在三維圖形程式中,我們可以用幾何變換來達到以下目的:

你可以使用乙個4×4的矩陣將任何點變換到另乙個點。下面的例子中,我們用乙個矩陣對點(x, y, z)進行變化,產生了乙個新的點(x', y', z'):

對點(x, y, z)進行一下運算,會得到乙個新點(x', y', z'):

最常用的變換包括:平移(translation),旋轉(rotation)和縮放(scaling)。你可以將這些變換合併起來,組成乙個矩陣,同時進行幾種變換。

矩陣以行列號的形式來描述。

沿每個座標軸同時進行縮放時(我們稱為統一縮放uniform scaling),矩陣如下所示:

下面的變化將乙個點(x, y, z)平移到另乙個點(x', y', z'):

下面的變換將乙個點(x, y, z)沿x-軸進行旋轉,得到了乙個新的點(x', y', z'):

下面的變化沿y-軸進行旋**

下面的變換沿z-軸進行旋**

這裡要注意一點,希臘字母θ代表旋轉的角度,用弧度來表示。從旋轉軸向原點看,這個角度按順時針方向來度量。

我們使用矩陣的乙個最大好處就是可以通過矩陣相乘來將幾個矩陣變換的效果合併起來。這就是說,當我們對乙個模型進行旋轉和平移時,不再需要用到兩個矩陣。我們可以通過將旋轉矩陣與平移矩陣相乘來得到乙個合併的矩陣。這一過程就被稱為矩陣級聯,可以用下面的公式來表示:

共識中,c指組合之後產生的新矩陣,m1mn表示要組合在一起的每乙個矩陣。一般情況下,我們指將兩或三個矩陣組合起來,但實際上是沒有限制的。  matrix4x4類中有乙個matrix4x4.operator * 輔助函式來進行矩陣級聯運算。  在進行矩陣級聯時,我們應該注意級聯時的順序。上面公式 中反映的是一種從右到左的矩陣級聯規則。也就是說,我們用來建立乙個合併的矩陣的每個矩陣的實際效果是從右到左依次出現的。下面我們舉乙個例子來說明這一 情況。在這個例子中,我們要通過世界變換矩陣來建立乙個「飛碟」。我們想要這個ufo沿中心(模型空間的y-軸)來旋轉,同時要在場景中平移。為了達到這樣的效果,你可以首先建立乙個平移矩陣,然後用它和旋轉矩陣相乘,如下所示:w=tw·ry  公式中,tw表示平移矩陣,ry表示旋轉矩陣。  兩個矩陣相乘的順序是很重要的,與標量的相乘不同,矩陣相乘的順序是不能交換的。如果我們將兩個矩陣的順序交換的話,得到的結果就會是,先對飛碟進行平移,然後將它繞世界原點進行旋轉。  無論我們建立什麼型別的矩陣,都要按照從右到左的順序,這樣才能達到我們預期的結果。

Unity3D開發(九) Unity3d流光效果

遊戲開 壇 hello game 遊戲開發群 201276069 之前曾經注意過material 中紋理的屬性都有 tiling 和offset 但沒有深究過其用途,今天才知道竟然可以利用 offset做uv 動畫,從而完成各種有趣的動畫,比如流光效果!流過效果即通常一條高光光在物體上劃過,模擬高光...

Unity3D遊戲開發

入門級unity安裝教程 一 unity五大面板 unity3d的介紹 1 介面 選單 面板 元件 unity5.x 編輯器介紹 unity開啟篇 一 滑鼠右鍵 wsadeq前後左右上下移動 shift加速移動 滑鼠右鍵旋轉檢視 滑鼠中鍵移動檢視 alt 右鍵縮放 alt 左鍵旋轉物體視角 q移動場...

Unity3D開發之unity和js通訊互動

unity發布webplayer平台後會輸出html和unity3d檔案。我們的程式主要被打包在unity3d檔案裡,而html則是網頁的介面顯示。1.unity傳送訊息給js function getid id 在unity裡我們在start函式裡呼叫 使用瀏覽器開啟html檔案,就會出現如下彈窗...