如果您有一个给定的顶点,您如何确定该顶点是相机的左侧还是右侧(或可能是直接排列)? 我在这里找到的所有信息都显示了如何在2D中完成,但我需要3D。
如果我将相机的外观矢量添加到相机的位置,我将获得所需的光线。 但向上矢量也必须被抛入等式中,所以看起来有点棘手。
我想我必须找到一个转换,使向上矢量=(0,1,0)和外观矢量=(0,0,1),然后将该转换应用于顶点。然后你可以说,如果顶点的x坐标小于摄像机的坐标,那么它就在它的左边,否则就在右边。
答案 0 :(得分: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显然只是视图矩阵*投影矩阵