1. 程式人生 > >UE4材質中的點乘DotProduct

UE4材質中的點乘DotProduct

位置 是否 同學 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