【Tips】Matrices(矩陣)分享

2021-02-21 CG Review

作者:Eddie yang

【前言】

被要求寫一篇文章,但實在不知道要寫些什麼,記得有人問過我有關matrix的問題,我想不如就寫篇有關matrix的入門級介紹吧。

大概除了一些大神,沒人敢說自己搞懂了矩陣,實在是太龐雜太複雜了,加之它的計算方法,使用方法和通常的數學常識和習慣有很大的不同,導致基本上矩陣給人的感覺就是學的時候是一個層級,用的時候就是另一個層級了。

我們就來談一下矩陣在計算機圖形學中進行位移,旋轉,縮放操作上的應用,個人認為對於CG的特效製作而言應該是需要了解的知識。

另,本人還是一個CG特效領域的小學生,如有錯誤和疏漏還希望諸位指正。

【正文】

在3D計算機圖形學中,【4x4】矩陣是最常用的,用法是作為一個變換矩陣Transformation Matrix。在houdini中只有【2x2】【3x3】【4x4】這三種矩陣,而最常用的也就是【3x3】和【4x4】。旋轉,平移,縮放等方式變換圖形對象的最佳方法是將圖形對象的每個頂點乘以變換矩陣。兩個或多個轉換的組合可以表示為矩陣乘法。這裡要預先說明一下的是,在計算機圖形學中vector的存儲有兩種模式,以行的形式既形式,還有以列的形式儲存的既。這會導致變換矩陣的不同,在houdini一般使用前面一種,而opengl等使用後一種的。我在查看網上資料的時候發現很多教程中的變換矩陣都是對應列的形式儲存vector的變換矩陣。大概是因為都是在學習OpenGL吧。區別簡單來說就是houdini中是vector*matrix,而opengl中是matrix*vector,估計這也是houdini用戶在使用matrix的時候一個難點。先來講講【3x3】矩陣,在houdini中【3x3】矩陣基本只用來做Rotation,因為Rotate操作在三維稍微有點複雜,需要分解為繞X軸旋轉,繞Y軸旋轉,繞Z軸旋轉三個矩陣,你可以理解為這種矩陣只能完成單一任務rotateX,rotateY,rotateZ。所以當要完成一系列的複雜操作時就需要一步一步來,例如:Vector需要rotateX,rotateY,rotateZ操作就需要:NewVector = Vector*【RotateX】*【RotateY】*【RotateZ】這裡需要注意的是,網上的教程介紹說矩陣相乘時需要從右向左是針對列存儲形式說的,houdini中的行儲存順序就可以了。

(實在是在網上找不到現成的圖片,自己推導了一個,湊合著看吧。)這裡需要注意由於矩陣乘法不具備交換律,所以更具軸旋轉是有順序的,一般還是以習慣的Rx,Ry,Rz順序來旋轉,但也給與了客戶選擇,在某些軟體互導的時候需要注意一下,不過一般也沒有哪個二五仔會動這部分,了解一下在出錯的時候排查一下就好。其實houdini中還有一種記錄旋轉信息的數據形式叫做四元數,3*3的旋轉矩陣和四元數可以輕鬆相互轉換,值得注意的是,在houdini中矩陣用的角度一般是歐拉角,四元數用的一般是弧度角。再來講講【4x4】矩陣,這是使用最多的矩陣形式,不管是位移,縮放,旋轉,還是類似切變等特殊變換都是使用這個矩陣來計算的,這裡首先給出常用的幾個變換矩陣:

這些矩陣就構成了三維空間中的最基本的操作位移,旋轉,縮放。 這時候很多教程都會或多或少的提到下面的變換矩陣構造:

這就是一個matrix4 矩陣存儲物體變換信息最常用的結構,所以變換矩陣很簡單,相對應的位置填入對應的信息就完成了構造。但是實際情況是遠比這複雜的,往往Rotation,scale甚至更複雜的shred數據是混雜在一起的,直接從數據上能提取大概就是translation數據了。而且有一個很大的謎團就是,物體的自旋是怎麼回事怎麼實現的這張圖表沒有展示出來,這就造成了我個人認為另外一個houdini用戶在使用matrix的時候一個難點——這個pivot到底是幹嘛用的沒展示出來啊?其實很簡單當我們將圖上的整個過程差解開來就會發現:NewVector =Vector *[-Pivot]*[Scale]*[RotateX]*[RotateY]*[RotateZ]*[Pivot]*[Trans]整個過程其實是通過多次矩陣乘法來實現的。這裡要注意:1. 整個變換過程遵守的是houdini默認的變換順序,既:

2. [Pivot]和[-Pivot]其實都是一個translation矩陣。其意義就是將物體移回原點完成旋轉變換後再移回當前位置,看起來就像物體在繞著pivot點旋轉一樣。這樣就很容易理解矩陣到底在幹什麼,也能理解我們是怎麼樣最後從一個複雜的matrix矩陣中提取數據的了。在使用矩陣的時候要先考慮清楚操作的步驟,然後按照需要構建矩陣,最後和需要變換的物體相乘(houdini17-18好像可以不在意相乘順序了),完事兒~總結一下,我個人的理解是矩陣其實是在做空間投射。例如vector * matrix4 的意思就是將vector投射變成另外一個vector。在同一個絕對世界坐標系下這個過程就表現為位移,旋轉,縮放等,如在絕對世界坐標系不動的情況下就表現為空間轉換,例如世界空間到相機空間。只要理解他是如何運算的,怎麼構造就可以很好地利用它了,至於其他的交給那些大神去研究突破吧。下次有機會介紹一下matrix相關的函數,會更容易去理解矩陣作用。推薦一個免費的非常好的入門教程,英語的語速很慢還沒有什麼口音,也是很好的鍛鍊聽力的素材,很遺憾好像只有youtube有:MAKETRANSFORM - VEX Functions in Houdini(David Kahl VFX)https://www.youtube.com/watch?v=yK0ZDm433dwMAKETRANSFORM - VEX Functions in Houdini(David Kahl VFX)https://www.youtube.com/watch?v=yK0ZDm433dw圖形學中的基本變換-Basic Transforms(lxycg)https://zhuanlan.zhihu.com/p/96717729Understanding 3D matrix transformshttps://medium.com/swlh/understanding-3d-matrix-transforms-with-pixijs-c76da3f8bd8

驚不驚喜,意不意外~我們又更新了

喜歡的話,就點」喜歡作者「讚賞我們吧~

大家有什麼疑問或者對這方面感興趣都可以加群一起交流。

(點擊「關於我們」>「微信群」獲取最新二維碼)

群裡會不定期分享一些教程~~

最後,記得點「在看」、「Wow」。

您的鼓勵,讓我們更有動力!



感謝您對作者的支持

相關焦點

  • 向量、矩陣的介紹和運算
    矩陣用加粗的斜體大寫字母表示,例如 X,而 X12,X22,…,Xnm 等等,表示矩陣中的每個元素,而這裡面的 n 和 m 分別表示矩陣的行維數和列維數。矩陣的運算和向量一樣,矩陣的和標量之間的加法和乘法,需要把標量和矩陣中的每個元素相加或相乘,就能得到結果。
  • No.1矩陣簡介
    那麼矩陣和AI的關係是什麼呢?AI的本質就是計算機科學的一部分,它也需要藉助大部分計算機的各種技術!當然,也需要用到軟體,軟體是由邏輯語言寫成的,而任何邏輯語言都是離不開算法的,所以說,想要學好AI,那麼一定要熟悉各種數學算法,其中就包括最常用到的矩陣!矩陣學習的第一步就是追根溯源,找到它的發展歷史,在了解它的發展歷史之後,我們學習矩陣來才會事倍功半!
  • R 語言中的矩陣計算
    H.matrices() 函數構造的,利用直積進行計算子列表的分量。, E.matrices(n) 使得每個子列表的分量,是從 n 階單位矩陣計算向量的外積導出的方陣。> E.matrices(3)[[1]][[1]][[1]]     [,1] [,2] [,3][1,]    1    0    0[2,]    0    0    0
  • [講座]關於R^n子空間的符號向量,定向對偶擬陣以及符號模式矩陣的...
    報告題目:R^n 子空間的符號向量,定向對偶擬陣以及符號模式矩陣的最小秩Sign vectors of subspaces of R^n, oriented matroid duality, and minimum ranks of sign pattern matrices
  • 機器學習的數學 之 python 矩陣運算
    表面上,排成矩形的數字就是個矩陣。實際,矩陣是有限維線性空間的線性變換的表示形式。它代表著空間到空間的映射。二、 矩陣在現實應用場景在程序中,配合矩陣模擬真實數據,並可以實現如下功能:二維圖形變換、人臉變換、人臉識別、信息轉換等。比如一張圖片,簡單的黑白圖只有黑色和白色構成,是不是可以有 1 0 兩個數值的二維矩陣來表示呢?
  • 機器學習第一步,從向量和矩陣開始!
    向量與矩陣在機器學習算法中,有這樣幾個要素值得關注。而這個龐大的數組,通常以矩陣的方式出現。所謂矩陣(Matrix),當然不是《黑客帝國》裡的那個邪惡智能體Matrix了,不過它的確有這方面的潛質。矩陣是一個按照長方陣列排列的複數或實數集合,它在計算模型中可以指代許多東西。
  • 矩陣相乘優化算法實現講解
    在數學中,矩陣(Matrix)是指縱橫排列的二維數據表格,最早來自於方程組的係數及常數所構成的方陣。這一概念由19世紀英國數學家凱利首先提出。矩陣是高等代數學中的常見工具,也常見於統計分析等應用數學學科中。並且在ACM競賽,有很多涉及到矩陣知識的題。許多算法都會結合矩陣來處理,而比較具有代表性的矩陣算法有:矩陣快速冪、高斯消元等等。
  • 【基本無害】矩陣微積分講義分享
    矩陣微積分已成為研究計量經濟學、機器學習理論以及量子力學等領域不可或缺的必備數學工具。但是,系統性的介紹該領域的教程或講義卻十分稀少,幾乎不出現在國內的高等數學、線性代數、數理統計課程的教學計劃中。經管與計算機科學系的學生在進入大三的專業課學習後,就會發現該領域的知識異常重要,但學生根本不知道這些知識點到底隸屬於哪個範疇。
  • 抖音矩陣是什麼意思,怎麼做抖音矩陣,什麼是抖音矩陣號運營
    經營矩陣能夠保障咱們店鋪的根本流量,同樣也保障了出貨的穩固性,因而矩陣曾經變成保障商家流量的標配。昨天咱們就對矩陣稍作下結論,況且為小同伴們分享一套電商帶貨矩陣搭建筆錄。率先,我會和小同伴們聊聊矩陣大體的類型;其次,分享一個電商矩陣的根本框架;之後,經過拆解案例為小同伴分享一下如何低利潤產出一大批高品質視頻;最初,說說矩陣經營的危險掌握。
  • 矩陣與矩陣乘積簡介
    矩陣表示如下:矩陣A有兩行兩列,如果矩陣有m行和n列,並且包含實值,可以用以下符號來刻畫它:A∈(m×n)。我們可以使用不帶粗體的矩陣名稱引用矩陣中的元素,但是後面需要跟著行索引和列索引。例如,$ A_{2, 1}$表示第一行和第二列中的元素。按照慣例,第一個索引用於行,第二個索引用於列。
  • 行列式與矩陣練習題
    矩陣本質是一個矩形的數表,要掌握矩陣的加減法,數乘,矩陣的乘法,矩陣的秩,矩陣的逆:矩陣的加減法即為矩陣對應元素相加減;矩陣的數乘:一個數乘以一個矩陣等於這個數乘以矩陣裡的每一個元素;矩陣的乘法:用前面矩陣的行乘以後面矩陣的列然後作和;矩陣的秩:化階梯形,數階梯形的階數;矩陣的逆:矩陣A右側接一個單位陣,用行的初等變換把
  • MATLAB常用的矩陣運算指令
    為了幫助大家快速了解MATLAB,最近幾期我會出幾期簡單分享,但是其實MATLAB實在內容太多,小易也僅僅是會用基礎算法而已,許多函數用法都是用的時候去百度去看書。今天主要分享MATLAB一些矩陣計算和簡單指令。MATLAB是一種交互式的以矩陣為基礎的計算平臺,主要用於求解各種複雜問題。所以其實矩陣的建立,矩陣的運算在MATLAB中是必不可少的。
  • 抖音短視頻如何矩陣營銷,帳號矩陣什麼意思?抖音運營的矩陣玩法詳解
    抖音矩陣模式,小編帶大家來了解一下四種矩陣模式的一種矩陣模式叫做一加n矩陣,這個矩陣的定義是建立一個以產品線為主導的戰後取證一個主帳號下再開設這種矩陣在營銷方面可以起到以下幾點作用對於,產品結構和品牌構成比較簡單的企業這種模式,可以起到弱化品牌定位強化產品賣點的作用旗下的產品,在粉絲心中能夠形成鮮明的產品特色能夠準確地影響到自己的目標受眾,自從抖音走紅之後,中國的不少旅遊城市也看到了抖音的紅利準備學習西安的模式,在抖音上建立自己的抖音矩陣重慶就是代表之一,它採用的統一模式就是一加n的矩陣模式,以重慶旅遊為主帳號,然後分別開設了平安重慶發現
  • 正定矩陣與半正定矩陣
    正定矩陣與半正定矩陣A. 正定矩陣在線性代數裡,正定矩陣 (positive definite matrix) 有時會簡稱為正定陣。 性質:正定矩陣的行列式恆為正;實對稱矩陣A正定若且唯若A與單位矩陣合同;(合同矩陣:設A,B是兩個n階方陣,若存在可逆矩陣C,使得,則稱方陣A與B合同,記作 A≃B。)
  • 抖音矩陣帳號是什麼意思?抖音矩陣是多個號的意思嗎?抖音MCN矩陣是什麼意思?MCN
    其實,做矩陣的目的,不僅僅只有漲粉,在同一個平臺內做矩陣,主要是為了突出差異化,輸出不同風格的內容。由於頭部帳號內的用戶,特別是做段子劇、街訪及萌娃萌寵類的帳號,其粉絲用戶的喜好和關注的事物可能有著很大的差異,粉絲用戶的畫像也沒有那麼精準,所以矩陣裂變出其他的帳號,並輸出不同的內容,有助於滿足粉絲用戶不同的需求。
  • [分享]A/B測試得出的一些有意思的數據和小tips
    主要集中三個小的tips上:1)重點文案一定要相對其他文案更突出,還有文案的暗示效應 ;2)設計上合理排版讓頁面顯得更專業,提高可信度;3)減少用戶負擔,減少流失率。下面是每個tips的一些相應的案例分析,以及轉化率相應提高的數據1)  文案效應修改前  修改後
  • 自媒體矩陣是什麼?企業建立自媒體矩陣的核心意義是什麼?
    對於企業來說,如果要打造自媒體矩陣,那一定是要先基本自己的需求,不能盲目的跟風,不管你是利用微信公眾號、微博等老牌明星產品,還是今天頭條,百家號這類的資訊類自媒體,都是建立在自身的需要上面。什麼是自媒體矩陣自媒體矩陣是指將多個自媒體平臺組合在一起,包括視頻平臺,音頻平臺以及圖文平臺,為同一個企業或者是為個人打造品牌,從而在內容輸出時加入產品營銷的營銷策略。也就相當於是一個企業或者一個人同時運營多個平臺。
  • TIPS 小費
    新東方網>英語>英語學習>語法詞彙>流行語>正文TIPS 小費 2012-11-26 14:25 來源:愛思英語 作者:   tips