2012-03-30 90 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顯然只是視圖矩陣*投影矩陣

相關問題