齊次坐標變換+Unity矩陣變換

矩陣變換

? ? ? ? 變換(transform):指的是我們把一些數據,如點,方向向量甚至是顏色,通過某種方式(矩陣運算),進行轉換的過程。

? ? ? ? 變換類型

? ? ? ? ? ? ? ? 線性變換:保留矢量加和標量乘的計算

? ? ? ? ? ? ? ? ? ? ? ? f(x)+f(y)=f(x+y)

? ? ? ? ? ? ? ? ? ? ? ? kf(x)=f(kx)

? ? ? ? ? ? ? ? ? ? ? ? 包含:旋轉,縮放,鏡像,投影

? ? ? ? ? ? ? ? ? ? ? ? 可以使用3x3矩陣,表示

? ? ? ? ? ? ? ? 非線性變換

? ? ? ? ? ? ? ? ? ? ? ? 包含:平移

? ? ? ? ? ? ? ? ? ? ? ? 可以使用4x4矩陣,表示

? ? ? ? ? ? ? ? 仿射變換:仿射變換就是合并線性變換與平移變換的變換類型,仿射變換可以

????????????????使用一個4x4的矩陣表示,所以需要將矢量擴展到四維空間下,這就是齊次坐標

????????????????空間,變換矩陣稱為齊次矩陣

? ? ? ? ? ? ? ?齊次坐標:\begin{bmatrix} x\\ y\\ z\\ w \end{bmatrix}

? ? ? ? ? ? ? ? ? ? ? ? 點的列矩陣w分量:補1,因為點受到平移變化的影響

? ? ? ? ? ? ? ? ? ? ? ? 方向矢量列矩陣的w分量:補0,因為平移不會影響到方向向量的方向

? ? ? ? ? ? ? ?齊次矩陣構成

? ? ? ? ? ? ? ? ? ? ? ? ?\begin{bmatrix} M_{3*3} &T_{3*1} \\ 0_{1*3}& 1 \end{bmatrix}

????????????????????????M_{3*3}:表示線性變換矩陣

? ? ? ? ? ? ? ? ? ? ? ??T_{3*1}:表示平移變換矩陣

? ? ? ? ? ? ? ? 平移矩陣

????????????????????????\begin{bmatrix} 1 & 0 & 0 &x \\ 0& 1& 0 & y\\ 0& 0& 1&z \\ 0& 0& 0 & 1 \end{bmatrix}? ? ? ? ( x,y,z分別代表x平移量,y平移量,z平移量)

? ? ? ? ? ? ? ? 縮放矩陣(縮放是線性變換,所以可以用M_{33}表示這個變換的過程)

????????????????????????\begin{bmatrix} X_{s} & 0 &0 &0 \\ 0& Y_{s} & 0 &0 \\ 0& 0 & Z_{s} &0 \\ 0 & 0 & 0& 1 \end{bmatrix}

? ? ? ? ? ? ? ? 旋轉矩陣

? ? ? ? ? ? ? ? ? ? ? ? 繞X軸,旋轉\theta角度

????????????????????????????????\begin{bmatrix} 1 & 0& 0 &0 \\ 0& cos\theta &-sin\theta &0 \\ 0 & sin\theta & cos\theta &0 \\ 0 & 0 & 0& 1 \end{bmatrix}

? ? ? ? ? ? ? ? ? ? ? ? 繞Y軸,旋轉\theta角度

????????????????????????????????\begin{bmatrix} cos\theta & 0& sin\theta &0 \\ 0& 1 &0 &0 \\ -sin\theta & 0 & cos\theta &0 \\ 0 & 0 & 0& 1 \end{bmatrix}

? ? ? ? ? ? ? ? ? ? ? ? 繞Z軸,旋轉\theta角度

????????????????????????????????\begin{bmatrix} cos\theta & -sin\theta& 0 &0 \\ sin\theta& cos\theta &0 &0 \\ 0 & 0 & 1 &0 \\ 0 & 0 & 0& 1 \end{bmatrix}

? ? ? 復合變換

? ? ? ? ? ? ?一個點P(1,1,1),需要做繞z軸旋轉30度,平移(5,4,2),

?????????????縮放(3,2,1)復合變換,是存在順序的,因為矩陣乘運算,不滿足乘法交換律

????????????????????????\begin{bmatrix} 3 & 0 & 0&0 \\ 0& 2&0 & 0\\ 0& 0& 1 &0 \\ 0& 0 & 0 & 1 \end{bmatrix}?x?\begin{bmatrix} 1 & 0 &0 &5 \\ 0& 1&0 & 4\\ 0& 0& 1& 2\\ 0 &0 & 0 & 1 \end{bmatrix}?x?\begin{bmatrix} cos30 &-sin30 &0 &0 \\ sin30& cos30 & 0 &0 \\ 0& 0 &1 &0 \\ 0& 0 &0 & 1 \end{bmatrix}?x?\begin{bmatrix} 1\\ 1\\ 1\\ 1 \end{bmatrix}?=?\begin{bmatrix} x\\ y\\ z\\ 1 \end{bmatrix}

? ? ? ? ? ? 復合變換的順序,決定了變換矩陣相乘的順序,根據需求????????

? ? ? ? ? ? ? ? ? ? ? ??M_{s}?x?M_{m}?x?M_{r}?x P

? ? ? ? ? ? 因為矩陣滿足結合律,所以可以得出變換矩陣為(M_{s}?x M_{m}?x M_{r}

? ? ? ? ? ? 最后的結果是:(M_{s}?x M_{m}?x M_{r})x P

坐標空間

? ? ? ? 模型空間:模型內部點的位置都存儲在模型文件內,所以點都是相對于模型空間的

? ? ? ? 世界空間:模型在游戲運行時,需要加載到場景中,所以點存儲在世界空間中

? ? ? ? 觀察(攝像機)空間:物體是否被投射到屏幕中,是由相機控制的,相機相對于物體

????????????????的位置,決定了顯示效果。

? ? ? ? 裁剪空間:需要判定點,是否存在于攝像機裁剪視錐體下,如果存在于視錐體內,則

????????????????點可以進行顯示。

? ? ? ? 屏幕空間:最終顯示的設備為顯示器,所以需要將點投影到顯示器上,算出屏幕坐標

????????????????點,由顯示器顯示

Unity著色器中常見矩陣

? ? ? ? UNITY_MATRIX_MVP:將點從模型空間下,轉換到裁剪空間下

? ? ? ? UNITY_MATRIX_M:將點從模型空間下,轉換到世界空間下

? ? ? ? UNITY_MATRIX_V:將點從世界空間下,轉換到觀察空間下

? ? ? ? UNITY_MATRIX_P:將點從觀察空間下,轉換到裁剪空間下

? ? ? ? UNITY_MATRIX_MV:將點從模型空間下,轉換到觀察空間下

? ? ? ? UNITY_MATRIX_VP:將點從世界空間下,轉換到裁剪空間下

????????

? ? ? ? _Object2World:將點從模型到世界空間轉換(互為逆矩陣)

? ? ? ? _World2Object:將點從世界空間到模型轉換(互為逆矩陣)

????????????????????????

????????????????????????

???????????該系列專欄為網課課程筆記,僅用于學習參考。??????????????????

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/902132.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902132.shtml
英文地址,請注明出處:http://en.pswp.cn/news/902132.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

閑來無事,用HTML+CSS+JS打造一個84鍵機械鍵盤模擬器

今天閑來無聊,突發奇想要用前端技術模擬一個機械鍵盤。說干就干,花了點時間搞出來了這么一個有模有樣的84鍵機械鍵盤模擬器。來看看效果吧! 升級版的模擬器 屏幕錄制 2025-04-18 155308 是不是挺像那么回事的?哈哈! 它…

智慧城市:如同為城市裝上智能大腦,開啟智慧生活

智慧城市的概念隨著信息技術的飛速發展而逐漸興起,它通過集成物聯網、大數據、人工智能和數字孿生等先進技術,為城市管理和居民生活帶來了前所未有的智能化變革。本文將深入探討這些核心技術及其在智慧城市的典型應用場景,展示智慧城市如何提…

科技快訊 | 智譜開源最新GLM模型系列;“AI 洗頭店”現身廣州;ChatGPT上線圖庫功能

智譜開源最新GLM模型系列,啟用全球域名“Z.ai” 4月15日,智譜開源最新GLM模型系列,包括32B和9B尺寸,涵蓋基座、推理、沉思三類模型,全部遵循MIT開源許可協議。推理模型GLM-Z1-32B-0414實測推理速度達200 tokens/秒&…

第32講:衛星遙感與深度學習融合 —— 讓地球“讀懂”算法的語言

目錄 ?? 一、講講“遙感+深度學習”到底是干啥的? ? 能解決什么問題? ?? 二、基礎原理串講:深度學習如何“看懂”遙感圖? ?? 遙感圖像數據類型: ?? CNN的基本思路: ?? 三、實戰案例:用CNN對遙感圖像做地類分類 ?? 所需R包: ??? 步驟一:構建訓…

【多線程5】面試常考鎖知識點

文章目錄 悲觀/樂觀鎖掛起等待鎖/自旋鎖偏向鎖輕量級/重量級鎖鎖升級CASCAS引發的ABA問題解決方案 原子類 公平/不公平鎖可重入鎖ReentrantLock讀寫鎖 Callable接口 這里的“悲觀”“樂觀”“掛起等待”“自旋”“輕量級”“重量級”“公平”“非公平”“可重入”僅代表某個鎖的…

第三屆世界科學智能大賽新能源賽道:新能源發電功率預測-數據處理心得體會1

看懂數據 比賽數據說明: 文檔(報名之后可以下載)大小操作初賽測試集.zip94MB下載初賽訓練集.zip632MB下載output.zip145KB下載 任務和主題 AI新能源功率預報:根據歷史發電功率數據和對應時段多類別氣象預測數據,實…

【云馨AI-大模型】2025年4月第三周AI領域全景觀察:硬件革命、生態博弈與國產化突圍

一、硬件算力突破點燃多智能體時代 谷歌在4月12日Cloud Next大會發布第七代TPU Ironwood,單芯片算力達4614 TFLOPs,較前代內存提升6倍,專為AI推理場景優化。配合發布的Gemini 2.5 Flash模型通過"思考"功能實現成本優化&#xff0c…

第3章 垃圾收集器與內存分配策略《深入理解Java虛擬機:JVM高級特性與最佳實踐(第3版)》

第3章 垃圾收集器與內存分配策略 3.2 對象已死 Java世界中的所有對象實例,垃圾收集器進行回收前就是確定對象哪些是活著的,哪些已經死去。 3.2.1 引用計數算法 常見的回答是:給對象中添加一個引用計數器,有地方引用&#xff0…

超詳細VMware虛擬機擴容磁盤容量-無坑版

1.環境: 虛擬機:VMware Workstation 17 Pro-17.5.2 Linux系統:Ubuntu 22.04 LTS 2.硬盤容量 虛擬機當前硬盤容量180G -> 擴展至 300G 3.操作步驟 (1)在虛擬機關機的狀態下,虛擬機硬盤擴容之前必…

HarmonyOS:1.4 - HarmonyOS應用程序框架基礎

判斷題 1.在基于Stage模型開發的應用項目中都存在一個app.json5配置文件、以及一個或多個module.json5配置文件。 正確(True) 2.一個應用只可以包含一個UIAbility組件。 錯誤(False) 3.Background狀態在UIAbility實例銷毀時觸發。可以在onDestroy()回調中進行系統資源的釋…

HTTP HTTPS RSA

推薦閱讀 小林coding HTTP篇 文章目錄 HTTP 80HTTP 響應碼1xx:信息性狀態碼(Informational)2xx:成功狀態碼(Success)3xx:重定向狀態碼(Redirection)4xx:客戶端…

ORACLE數據庫轉國產阿里OceanBase數據庫

1.BLOB類型修改 將接口內oracle.sql.BLOB改為java.sql.Blob 2.REGEXP_LIKE 判斷函數正則表達式中字符轉義問題 OB的正則表達式使用的是標準的Linux模式,oracle是黑盒子,在處理部分轉義符([])的時候, Oracle無需使用轉義符,OB務必使用轉義符,加/轉義處理,例如在regexp_like(t…

STM32的三種啟動方式

目錄 一、從主閃存存儲器啟動(Main Flash Memory) 二、從系統存儲器啟動(System Memory) 三、從內置SRAM啟動(Embedded SRAM) 一、從主閃存存儲器啟動(Main Flash Memory) >&g…

Flutter使用flutter_driver進行自動化測試

Flutter自動化測試實踐指南 作為一名iOS開發者,我最近對Flutter的自動化測試產生了濃厚興趣。在開發過程中,我發現自動化測試對于保證應用質量至關重要,特別是像我們這樣的創業團隊,測試資源有限的情況下。 搭建Flutter自動化測…

Halcon應用:九點標定-手眼標定

提示:若沒有查找的算子,可以評論區留言,會盡快更新 Halcon應用:九點標定-手眼標定 前言一、Halcon應用?二、應用實戰1、圖形理解[eye-to-hand]:1.1、開始應用2、 圖形理解[eye-in-hand]2.1、 開始應用 前言…

【C++11】列表初始化、右值引用、完美轉發、lambda表達式

📚 博主的專欄 🐧 Linux | 🖥? C | 📊 數據結構 | 💡C 算法 | 🌐 C 語言 上篇文章:unordered_map、unordered_set底層編寫 下篇文章:C11:新的類功能、模板的可…

Pandas取代Excel?

有人在知乎上提問:為什么大公司不用pandas取代excel? 而且列出了幾個理由:Pandas功能比Excel強大,運行速度更快,Excel除了簡單和可視化界面外,沒有其他更多的優勢。 有個可怕的現實是,對比Exce…

Vue 3 中將 ref 創建的響應式對象數據轉換為普通(非響應式)的數據

Vue 3 中使用 ref 創建的響應式對象數據轉換為普通(非響應式)的數據,有以下幾種方法: 1. 訪問 .value 屬性: 這是最直接、最常見的方法。 由于 ref 對象的值存儲在其 .value 屬性中,直接訪問該屬性即可獲得普通數據。…

四月下旬系列

CUHKSZ 校賽 期中考試 DAY -1。 省流&#xff1a;前 1h 切 6 題&#xff0c;后 3h 過 1 題&#xff0c;讀錯一個本來很【】的題&#xff0c;被大模擬構造創【】了。 本地除了 VSCode 沒有 Extensions&#xff0c;別的和省選差不多。使用 DEVC。 前 6 題難度 < 綠&#x…

下采樣(Downsampling)

目錄 1. 下采樣的定義與作用?? ??2. 常見下采樣方法?? ??(1) 池化&#xff08;Pooling&#xff09;?? ??(2) 跨步卷積&#xff08;Strided Convolution&#xff09;?? ??(3) 空間金字塔池化&#xff08;SPP&#xff09;?? ??3. PyTorch 實現示例?? …