2012-03-30 116 views
0

如果您有给定的顶点,您如何确定顶点是左侧还是右侧(或可能直接与相机对齐)? 我在此找到的所有信息都显示了如何在2D中执行此操作,但我需要3D。确定顶点是否位于相机的左侧或右侧

如果我将相机的外观矢量添加到相机的位置,我将获得我需要的光线。 但向上的向量也必须扔进方程,所以它似乎有点棘手。

我想我必须找到一个转换,使up向量=(0,1,0)和外观向量=(0,0,1),然后将该转换应用到顶点。然后,您可以说,如果vertice的x坐标小于相机的坐标,那么它就在左边,否则就在右边。

回答

0

这很简单,只需将View-Projection矩阵乘以向量。 下面是它归结为,但这样你就不必做一个完整的矩阵乘法(你只需要检查结果矩阵的一个部分,看看哪边屏幕上的顶点上的)

private bool left(Vector3 v) 
    { 
     if (viewProjection.M11 * v.X + viewProjection.M21 * v.Y + viewProjection.M31 * v.Z + viewProjection.M41 < 0) 
      return true; 
     return false; 
    } 

viewProjection显然只是视图矩阵*投影矩阵