确定顶点是否在摄像机的左侧或右侧

时间:2012-03-30 20:14:49

标签: camera vertex

如果您有一个给定的顶点,您如何确定该顶点是相机的左侧还是右侧(或可能是直接排列)? 我在这里找到的所有信息都显示了如何在2D中完成,但我需要3D。

如果我将相机的外观矢量添加到相机的位置,我将获得所需的光线。 但向上矢量也必须被抛入等式中,所以看起来有点棘手。

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

1 个答案:

答案 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显然只是视图矩阵*投影矩阵