2011-06-27 40 views
0

我想要檢測面部(哪個面孔是用戶infront),每當我旋轉立方體。在opengl android立方體旋轉問題android

+0

記住你的旋轉角度並測試它們的範圍。例如。 -45..45會在前面。還要考慮到,如果您將立方體顛倒旋轉,沿寬度方向的兩側會顛倒。 – Kromster

回答

1

用+ Z向量計算每個面法線的標量積(點積)。標量乘積最大的面向觀察者。

0

datenwolf的回答有正確的想法,但正如所寫的那樣,它不太正確。設P表示用於繪製立方體的模型視圖投影矩陣的3x3上三角形子矩陣。然後P的第三行(爲了爭論而稱爲v)代表了你的視圖方向,未被標準化。現在要檢查一個臉是否指向相機,假定指向單位正常,則只需檢查其法線的點積是否爲< 0(未最大化)。這從以下事實得出:

dot(a, b) = |a| |b| cos(theta) 

其中θ是它們之間的角度。如果它們指向相反的方向,則這隻能是負面的,這是面部指向照相機的必要和充分條件,假設它被物理地定位在照相機的前面。