我正在學習OpenGL圖形,並且正在進入陰影。我正在閱讀的教程告訴我將法線和光矢量轉換爲相機空間。爲什麼是這樣?你爲什麼不能在模型空間中保留這些座標?爲什麼使用相機空間而不是模型空間進行法線?
後續問題是如何處理模型轉換。我無法找到明確的答案。我目前有這樣的代碼:
vec3 normCamSpace = normalize(mat3(V) * normal);"
vec3 dirToLight = (V*vec4(lightPos, 0.0)).xyz;"
float cosTheta = clamp(dot(normCamSpace, dirToLight),0,1);"
V是視圖矩陣或攝像機矩陣。當模型在位置,旋轉和比例上發生變化時,我不確定如何移動或編輯燈光。
好吧,這是有道理的,雖然我確實有這種級別的分離。然而,我仍然不確定如何改變光源和位置,以便適應旋轉和翻譯等事情。 – user975989
規範的方法是轉換光的位置,就像轉換頂點位置一樣。如果聚光燈(您需要點光源方向),則可以像改變法線一樣轉換光點方向。對於空間之間的每個變換矩陣(這也適用於從例如世界到模型局部的變換),正常變換總是位置變換的逆轉置。 – datenwolf