Threes.js入門篇之4 - World View Projection
在三維世界,一個模型要想最終呈現到一個照片上,需要經過三次矩陣變換,這三個矩陣分別是:
模型矩陣(World) - 檢視矩陣(View)- 投影矩陣(Projection)
一. 模型矩陣
將 區域性座標系 下的模型座標(相對於自身原點的座標) 轉化到 世界座標系 下,通常稱為World Matrix。
可以理解為把多個不同座標系下的子模型統一到一個世界座標空間。
區域性座標系(模型座標) --> 世界座標系
World_Matrix * [x,y,z] --> [x',y',z']
M * P[5,0,5] --> P[20,8,4] 對應下圖中P點在世界座標系下的座標值。
二. 檢視矩陣
將模型統一到一個座標度量之後,需要將座標變換到 觀察者的視野範圍內,也就是觀測視角。
世界座標系 --> 檢視座標系(觀察者)
View_Matrix * [x',y',z'] --> [x'',y'',z'']
通過 檢視矩陣 將場景中所有模型的 世界座標 轉化到 檢視座標系(如上圖 RGB座標軸)。
三. 投影矩陣
將 使用者檢視(Viewer) 下的座標,經過透視投影進行成像,將三維空間變換到影象空間。
可以理解為 透視投影的成像,即從三維空間變換到影象空間。
檢視座標系 --> 影象座標系(UV空間)
Projection_Matrix * [x'',y'',z''] --> [U,V,1]
注:該影象來自於網上(不確定版權,如有侵權,還請告知!)
因此,整個成像的過程可以用公式描述為:
[u,v,1] = Matrix_Projection * Matrix_View * Matrix_World * [x,y,z]
相關文章
- Threes.js入門篇之2 - Hello WorldJS
- Threes.js入門篇之9 - 全景圖JS
- Threes.js入門篇之7 - 場景光照JS
- Threes.js入門篇之6 - 場景漫遊JS
- Threes.js入門篇之8 - 材質與紋理JS
- Threes.js入門篇之3 - 場景與相機JS
- Android 自定義 View 之入門篇AndroidView
- Threes.js入門篇之5 - 場景操縱器TrackballJS
- rust入門篇-hello worldRust
- [WebAssembly 入門] Hello, world!Web
- RabbitMQ 入門 - Hello WorldMQ
- 樹莓派 4 代-入門篇樹莓派
- Android View篇之自定義驗證碼輸入框AndroidView
- Next.js入門:Hello WorldJS
- node之tcp篇入門理解TCP
- 效能測試之入門篇
- 04.AutoMapper 之投影(Projection)APPProject
- gRPC-go 入門(1):Hello WorldRPCGo
- Flink 入門篇之 寫個WordCount
- WindowsServerVersion1709管理之入門篇WindowsServer
- 一、Ansible基礎之入門篇
- webpack4.x 入門一篇足矣Web
- 零基礎入門Serverless:Hello WorldServer
- 入門輸出Hello World!——C語言C語言
- 深入理解Java SPI之入門篇Java
- 入門設計模式之彙總篇設計模式
- 踩坑指南:入門OpenTenBase之部署篇
- 入門篇-其之七-Java運算子Java
- rxjs入門4之rxjs模式設計JS模式
- openresty前端開發入門三之JSON篇REST前端JSON
- openresty前端開發入門四之Redis篇REST前端Redis
- openresty前端開發入門五之Mysql篇REST前端MySql
- Three.js入門篇之1 - WebGL on HTMLJSWebHTML
- 踩坑指南:入門OpenTenBase之監控篇
- WebSocket系列之基礎知識入門篇Web
- .Net6 微服務之Ocelot+IdentityServer4入門看這篇就夠了微服務IDEServer
- Android 入門(三)簡單自定義 ViewAndroidView
- llvm入門篇LVM