如何將法向量轉換到世界空間

2022-08-30 15:36:22 字數 514 閱讀 5851

頂點從模型空間轉換到世界座標空間只需要乘以世界轉換矩陣即可,但是頂點的法向量卻不能通過直接乘以這個矩陣將其變換到世界空間。原因是世界矩陣不僅包含旋轉,還有可能包含著縮放操作,如果模型被不成比例的縮放,在不同方向上會有不同程度的拉伸或者壓縮,頂點的座標會因而伸縮,但是如果對法向量進行同樣的伸縮,那麼變化後的法向量將不再垂直於對應的表面。因此對應沒有縮放或等比縮放的世界轉換矩陣,可以直接採用相同的轉換矩陣作為法向量的變換矩陣。那對於有不等比縮放或者通用的法向量轉換矩陣,該如何求取呢?

假定採用行向量,假定乙個通過原點的面的法向量為n,轉換矩陣為m,面上面某點為p,則有(p-0)nt==0  即 pnt=0, 假設有個轉換矩陣x,對法線轉換後仍然垂直於經過m轉換後的面,則有 pm (nx)t=0 展開 pmxtnt=0;從這個等式看到 如果 mxt=i,(i為單位矩陣), 則  pmxtnt=pint=pnt=0;

而對mxt=i求解可得到x=(m-1)t  .

通過上面的計算可以知道,如果乙個頂點的轉換轉換矩陣為m,則該頂點的法向量轉換矩陣為 m的逆矩陣然後轉置

將法線從模型空間變換到世界空間

問 struct vertexin struct vertexscreen void main v vertexin posin,out vertexscreen posout,uniform float4x4 modelviewproj,uniform float4x4 worldmatrix,u...

如何將角度轉換到第一象限中去求解

問題 如何 正余弦的相互轉化,按正常思維,一般是,先要判斷角度在哪個象限,之後,再按對應象限的公式互相轉換,自然,轉化成計算機語言,就是分支處理。所以需要解決問題就是 如何做到不用判斷角度在第幾個象限?解決的方法就是 通過分析他們之間的關係,然後,建立一種可以 直接使它們相互轉換的關係。具體分析過程...

如何將pip源更換到國內映象

共兩種方案 目錄 一 方案一 隨用隨改型 二 方案二 永久修改型 1.按下 win r 鍵進入執行介面,輸入 cmd 2.enter 鍵回車,進入命令提示符介面。3.接下來在輸入 pip install 時插入國內映象源位址,變為 pip install i 位址 並回車。幾個常用映象源 阿里雲 清...