2011-06-27 43 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) 

其中θ是它们之间的角度。如果它们指向相反的方向,则这只能是负面的,这是面部指向照相机的必要和充分条件,假设它被物理地定位在照相机的前面。