2011-06-27 20 views
0

私はキューブを回転させているときはいつも、顔(顔はユーザーの前にあります)を検出したいと思います。OpenGL androidのキューブ回転の問題

+0

回転角度を覚えて、範囲に対してテストします。例えば。 -45..45は前面になります。キューブを逆さまに回転させると、幅に沿った辺が反転することも考慮に入れてください。 – Kromster

答えて

1

各顔法線のスカラー積(内積)を+ Zベクトルで計算します。スカラ積が最大である面が観察者に面している。

0

datenwolfの答えは正しいアイデアを持っていますが、書かれているとおり、それは間違いありません。立方体を描画するために使用しているモデルビュー投影行列の3×3上三角部分行列をPとする。次に、Pの3番目の行(それをvと呼ぶ)は、ビューの方向を非正規化します。今度は、顔がカメラの方向を向いているかどうかを確認するには、vの法線の内積が<(最大化されていない)かどうかをチェックするだけです。これは、次の事実に従います。

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

ここで、θはそれらの間の角度です。反対方向を指している場合は、顔がカメラの前に物理的に配置されていると仮定して、顔がカメラを指すために必要かつ十分な条件である場合にのみ、これは負であり得る。