UE4材質中的點乘DotProduct
阿新 • • 發佈:2018-09-04
位置 是否 同學 normalize osi ima 物體 dot camera
向量點乘的定義
如果a和b是兩個向量,那麽
a·b = |a|·|b|·cos(θ)
其中θ是兩個向量的夾角,cos是余弦。(數學公式輸入好麻煩。。)
下圖說明了關系。
單位向量的點乘
在遊戲中,表示方向的向量往往是單位向量。
為了簡化起見,假設a和b都是單位向量,也就是長度為1,那麽:
a·b = cos(θ)
那麽這個公式就簡單了。
用點乘判斷向量朝向關系
考慮到,cos(0)=1,cos(π)=-1,cos(π/2)=0,那麽我們就可以用點乘來判斷兩個向量的朝向關系了。
友情提示,有些同學可能不太記得了,π就是180度的實數表示。
如果兩個向量方向完全相同,那麽夾角為0,則cos(θ)為1;
如果兩個向量方向垂直,那麽夾角為90度即π/2,則cos(θ)為0;
如果兩個向量方向完全相反,那麽夾角為180度即π,則cos(θ)為-1;
其他情況,點乘的值介於-1~1之間。
用點乘判斷角色是否正對物體
這是給物體一個材質。
這個是材質的節點網絡。
簡單解釋一下。
CameraVector是相機的朝向。
CameraPosition是相機位置,ActorPosition是物體的位置,這兩個相減是以相機為起點、物體為終點的向量。
Normalize是歸一化,把向量變成單位向量。
Power是為了讓變化更明顯。
原文地址:原文地址
本文首發於翰者學堂
UE4材質中的點乘DotProduct